在开发过程中,经常会声明很多很多的变量,就像下面一样各种各样的类型和变量
然后在去面板上一个一个去拖上去赋值,开发过程中就伴随着新变量添加然后拖上去,会不经意间浪费很多时间,那么下面为大家介绍一种自动根据物体创建脚本并自动生成所需要的代码,并全自动的帮你把变量都添加的面板上,怎么样?是不是很棒!
0x 00不同的物体被安排的明明白白
一般我们会将我们需要子物体按照类型来命名,那我们就根据这个来生成代码,这样做的话物体的结构也会变得很清晰,同时也很方便我们来构建代码。那我们就可以把这一部分需求提取出来。
首先我们在任意一个Editor文件夹下创建一个脚本,并添加一个Dictionary,这个Dictionary的key就是物体命名时约定的前缀,value就是变量的类型还可以根据需要来添加更多
在添加一个函数,能够让我们在工具栏上使用
首先需要获取到目标物体,然后自动化构建代码,我创建了两个脚本,他们都是用partial 修饰的class,这样做的好处就是,一个脚本专门用于代码自动生成,另一个则负责自己的业务,这样两不冲突。
下面我们来观察一下变量都哪些组成
一条这样的语句 包含了变量名,变量类型,同时为了之后自动绑定物体,还需要物体的名字和相对于当前物体的一个路径,我就创建了一个AttrInfo类来保存这些信息
那上面GetAttrInfosInGameObject()这个方法就是来获得目标物体下面满足条件的自物体,并把所需要的信息提取出来
0x 01
所需要的变量相关信息已经全部拿到了,那下面我们就可以很方便的来创建脚本了,说是自动化构建脚本,就是也就是写文件。先创建一个和目标物体名称相同的Mono脚本在创建另一个——AutoBind.cs脚本
这样两个脚本都创建好了
0x 02
代码创建好了,下面就需要自动添加到物体上面,这一步比较简单,但是不能生成好代码立即用AddComponent的方式来添加组件,我们必须要等脚本加载完成之后在添加。
EditorPrefes就大致相当于PlayerPrefs,只不过PlayerPrefs用于保存玩家信息,EditorPrefes用于保存Editor的信息[DidReloadScripts]当脚本发生改动后调用
首先通过通过命名空间获得到Type,然后挂到这个物体上,下面就开始绑定变量
所有变量被正确的赋值了
大功告成!但是依旧还有一个问题,如果一个物体即是Button又是Image我们这个方法就不支持了,但是这一种方法就能解决很多情况下的了,以后我将会带来另一种新的方式来解决这个问题 。
项目Github地址之后加上:https://github.com/tkonexhh/Qarth/tree/master/Extensions/Tools/CreateScriptgithub.com