文章目录
- 问题
- 在面板上无法显示
- 子节点如何保存
- 继承于so的类必须放置在单个脚本
- so类文件名和类名要一致
问题
- 最近自己在写一个行为树
- 出现一些问题记录一下
- 首先NodeTree肯定是so文件
- 但是node可以是单纯的类,也可以是so。
- 后来我发现只能是so
在面板上无法显示
- 第一点
- 如果是单纯的类来说,我的node是抽象类,其它各种节点是继承于它的。
class Tree{
List<Node> nodes= new List<Node>()
}
- 在Tree里面是这样做的,这就导致没办法显示在序列化面板上。
- 因为Node是抽象类。
- 抽象类在面板上无法显示
子节点如何保存
class Node{
List<Node> children = new List<Node>
}
- 导致在序列化的时候会序列化多个相同数据的不同对象。
- 如果是最简单的那种树,一个Root,剩下所有节点全部是Root的子节点,那就可以用class来处理,不用继承so文件。
- 简单来说,为了保持引用关系,所以要将Node节点作为文件单独保存起来,然后在Tree中保存这些文件之间的关系。
继承于so的类必须放置在单个脚本
- 经常会出于方便,将很多类放在一个脚本里面
- 就会导致创建一个so文件后出现
- 这个script为None,最后就是各种警告,丢失这种问题
so类文件名和类名要一致
- 比如你的C#类文件名叫做
Singlenode
- 但是你定义的类名叫做
SingleNode
- 最后也会导致Script文件为空。