kya*_*bal 12 c# architecture unity-game-engine
MonoBehaviour扩展了行为和行为扩展组件.我想知道为什么这些类是分开的和这些类的语义含义.是否有任何分离这些课程的目的?是否有任何类直接扩展行为或组件?
我知道我们必须使用MonoBehaviour在Unity中创建C#代码.但是,我对Unity作为游戏引擎的架构感兴趣.
Pro*_*mer 15
组件:
Component
对于两个基类Behaviour
和MonoBehaviour
.它是可以附加到GameObject的任何脚本的基类.
这几乎是所有Unity 内置脚本的衍生出来的.这包括Collider
和Rigidbody
.
行为:
最重要的是要知道Behaviour
从它继承的任何东西都可以启用或禁用.如果您不希望启用/禁用它,请不要从此继承您的脚本.
例如,Rigidbody
无法启用/禁用.这就是为什么它继承自Component
类而不是Behaviour
.
Behaviour
继承自Component
.
MonoBehaviour:
需要注意的最重要的事情MonoBehaviour
是,你需要它的时候,你必须使用corutines,调用,或任何统一的回调函数,如物理OnCollisionEnter
功能,Start
,OnEnable
,OnDisable
,等.
MonoBehaviour
继承自Behaviour
以便可以启用/禁用您的脚本.
是否有任何分离这些课程的目的?
是的,就像上面的答案一样,它们是分开的,因此您可以通过从适当的组件继承来使用不同的功能.
你想协程,Invoke
,InvokeRepeating
并能够启用/禁用脚本?使用继承自MonoBehaviour
.
您希望能够启用或禁用您的脚本,但不需要协程Invoke
,InvokeRepeating
?使用Behaviour
.
当你有一个永远不应该启用/禁用的脚本时,它应该继承Component
.
请注意,Behaviour
并Component
通过统一的内部玩艺.您不应该尝试从这些继承您的脚本.
分离这些的主要原因是为了节省内存并使每个组件中的代码易于维护.这比为很少使用的功能编写数千行代码要好.通过分离它们以及当它们被加载到存储器中时,它们实际上被使用并且不会在存储器中浪费空间.
是否有任何类直接扩展行为或组件?
是.
MonoBehaviour
继承直接从中Behaviour
继承Component
.
Collider
Component
直接继承.然后非碱撞机如BoxCollider
和SphereCollider
从继承Collider
.
归档时间: |
|
查看次数: |
3490 次 |
最近记录: |