puerts框架的扩展插件,通过ts装饰器将ts类的成员变量显示在Unity Inspector面板上,实现类似MoneBehaviour的拖拽赋值功能
介绍
puerts框架的扩展插件,通过ts装饰器将ts类的成员变量显示在Unity Inspector面板上,实现类似MoneBehaviour和ScriptableObject的拖拽赋值功能
效果展示
先看一下如何在ts代码中定义组件属性:
这段代码对应的inspector面板上的显示效果如下:
还能带来哪些好处
特点
UnityEngine.Object
的子类和几种基本数据类型,如字符串、数字、布尔、Vector2
、Vector3
等如何运行Demo
git clone
本项目cd
到 Assets/Puerts/Editor/Plugins/macOS
文件夹下,运行 sudo xattr -r -d com.apple.quarantine puerts.bundle
Assets/Demo/TestPrefab.prefab
即可在TsComponent组件的Inspector面板中看到 TsProjDemo/src/test-component.cts
文件中定义的属性呈现的效果Assets/Demo/TestAsset.asset
即可在TsAsset组件的Inspector面板中看到 TsProjDemo/src/test-assett.cts
文件中定义的属性呈现的效果Assets/Demo/SampleScene.unity
并行,如果Console面板中能打印出 index running
和 TestComponent Start
说明运行成功如何将插件集成到自己项目中
Assets/PuertsComponent
文件夹放入项目任意位置"paths": {
"puerts-component/*" : [
"PATH/TO/PuertsComponent/Typing/puerts-component/*"
]
}
JsEnv.ILoader
可以通过 Resources.Load
加载 puerts-component/
开头的文件使用注意
@Transporter()
装饰器修饰的类必须是其所在文件的默认导出类 export default class
@ListProperty()
装饰器的第二个参数表示列表的维度,默认为1,表示一维数组已知缺陷
Serialization depth limit 10 exceeded at ...
意思是序列化组件时出现了递归。这是因为属性中使用了嵌套结构来表示数组。但从实际序列化出来的yml格式的文本来看并没有因此影响序列化结果的大小。所以暂时没有去解决,也没想出什么办法能代替目前的嵌套结构。OnEnable
只在此资源被首次加载时执行一次,需要额外的处理才能使该资源文件被后创建的JsEnv引用到。计划