Unity so文件的问题

文章目录

      • 问题
      • 在面板上无法显示
      • 子节点如何保存
      • 继承于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文件后出现
  • Unity so文件的问题_第1张图片
  • 这个script为None,最后就是各种警告,丢失这种问题

so类文件名和类名要一致

  • 比如你的C#类文件名叫做Singlenode
  • 但是你定义的类名叫做SingleNode
  • 最后也会导致Script文件为空。
    Unity so文件的问题_第2张图片

你可能感兴趣的:(unity)