自定义逻辑和通用逻辑分离
在编写游戏逻辑时发现,有些逻辑是游戏对象的固定逻辑,内容会逐渐成型,内容固化后就不再修改了。有些是关卡逻辑,自定义情况比较严重,可能因为关卡调整而修改或移除;所以要做两种逻辑的分离。以前做项目的时候,通用逻辑通常是程序逻辑,自定义逻辑为策划逻辑,可以由策划去编写,通常以lua脚本或者图形编程语言的形式开放给策划自行组装。现在虽然只由我一个人来做,既做程序又做策划,但还是觉得两个逻辑分开,更方便维护;下面是我实现的一些步骤。
在进入场景时加载自定义脚本,约定脚本的名称为LevelLogic + 场景的buildIndex(实际上用name可能会更靠谱一些,因为buildSetting里取消某个场景的编译就会改变buildIndex的排序)
这里的脚本挂载体gameObject是一个跳转场景不会被删除的GameobjectManager
在俩开场景时删除自定义脚本
所有的LevelLogic脚本继承自一个基类脚本LevelLogicBase,具体LevelLogic的回调实际上是由执行GameobjectManager上的回调来执行的。
做过判空处理,所以具体的LevelLogic子脚本不存在也不会影响游戏逻辑,关卡移除时逻辑脚本可以直接删掉。
对于事件的触发可以看看UnityEvent的注册和触发方法,这里不再赘述了。