【发布时间】:2022-01-20 01:02:05
【问题描述】:
我知道这是“不允许的”;我这样做是偶然的,它将从我的最终构建中彻底删除。显然,这条规则是有充分理由的。
奇怪的是,它在一个单元测试组件中,尽管有警告,它仍然可以正常工作。我正在用一些从 MonoBehaviour 继承的类的构造实例填充一个列表,只是为了确保一个函数正在做我想让它做的事情,我收到了这个警告;但测试似乎运行良好。此外,这是一个警告,而不是真正的错误,这可能也是有原因的。
出于好奇,由于我的理解显然不完整,有人可以解释一下,如果可能的话,提供一个文档链接来解释,为什么 Unity 不允许它显然完全有能力的行为?为什么它禁止这样做,如果警告被忽略,会有什么缺点?
感谢您完成了我对它的理解。
【问题讨论】:
-
gameObject等内置属性都不起作用,因为没有对象附加到该对象.. 除此之外可能还有其他不希望的副作用,例如Awake、Start等都没有被调用 -
为什么不以允许的方式创建实例 - 即使是为了测试 - 使用例如
var component = new GameObject("some name"). AddComponent<YourComponent>();.. 你不必一开始就考虑会出什么问题 -
@derHugo 我正在研究的实际上是一种排序算法,用于确定项目可以在以后的场景中合理放置的位置,而不会产生交叉;所以我认为在简化的单元测试中担心新的 GameObject 是没有意义的,我只是想确保它们被正确排序。我对此更感兴趣是为了我自己的启迪,但谢谢。
-
如果一个类实际上没有行为并且没有绑定到
GameObject,那么它是MonoBehaviour是否有意义?为什么不把你的东西变成一个普通的类而不是一个组件呢? -
因为它将是一个组件,它是一种行为,并且我正在单元测试以确保我的排序功能有效。我很抱歉,但我真的不知道你在那里错过了什么。 “更改大量代码”的任何部分都不会有利于测试或最终实现。
标签: c# unity3d mono warnings compiler-warnings