#unity #game #component #entities #editor #linux #package

unrust

Unity包的Rust部分,用于在Unity中使用Rust + Bevy!

7个版本

0.1.6 2023年8月27日
0.1.5 2023年8月27日

#856 in 游戏开发

MIT 许可证

45KB
1K SLoC

Crates.io

Unrust - 使用Rust + Bevy + Unity制作游戏!

Peek 2023-08-27 18-20

您想使用Rust + Bevy来制作您的游戏。但是您缺少一个好的编辑器来配合使用吗?

嗯,这是一个尝试使用Unity作为编辑器的零级尝试。您可以使用Unity设置场景和预制体。

然后其余的一切都由您的Rust代码库完成。GG EZ。

(仅适用于Unity 2022,Windows和mac版本即将推出)

还需要entities + entities graphics包。将Unity实体映射到bevy实体。目前不与gameobjects一起使用。

这是一个非常非常非常实验性的项目。还有大量工作要做,以添加更多组件同步和改进开发体验。

我很快就会添加文档,但如果您不介意深入研究一些未记录的rust + c#代码,欢迎您贡献!

文档

待办事项!

安装

从左侧的发行版下载tarball,并将其放入Unity项目中。它会在Asset文件夹旁边创建一个game文件夹,其中包含一个基本项目。在Unity项目菜单中点击unrust -> 编译,然后按播放。

需要Rust nightly版本(用于正确放置输出库路径和代码生成)

使用/示例

types.rs文件中使用unity_authoring属性定义一个新的结构体,也会在Unity Assets/unrust文件夹中生成相应的Authoring组件。然后您可以将它附加到实体上,以便在播放时在bevy世界中创建它。

#[unity_authoring]
pub struct SampleComponent {
    pub val: f32,
}
using System.Runtime.InteropServices;
using Unity.Entities;
using UnityEngine;

namespace unrust.userland
{
    [StructLayout(LayoutKind.Sequential)]
    public struct SampleComponent : IComponentData
    {
        public float speed;
    }

    public class SampleComponentAuthoring : MonoBehaviour
    {
        public float speed;

        class Baker : Baker<SampleComponentAuthoring>
        {
            public override void Bake(SampleComponentAuthoring authoring)
            {
                var entity = GetEntity(TransformUsageFlags.Dynamic);
                AddComponent(entity, new SampleComponent
                    {
                        speed = authoring.speed,
                    });
            }
        }
    }
}

待办事项

  • 支持更多平台

  • 添加更多内置类型。(目前仅同步transform和parents)

  • 处理输入

  • 处理相机/其他非ECS游戏对象。

  • Wasm?!

许可证

MIT

依赖关系

~42–76MB
~1M SLoC