Unity so文件的问题

作者在开发行为树时遇到问题,无法在面板上显示抽象类子节点。解决方法是将继承自SO的类单独保存在单个脚本中,且SO类文件名与类名需一致,以避免Script丢失和警告。
摘要由CSDN通过智能技术生成

问题

  • 最近自己在写一个行为树
  • 出现一些问题记录一下
  • 首先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文件为空。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值