C# 更新前的Unity5分配参数
现在我的项目中有3个C#脚本 A是一个扩展了单行为的类,我把它放在一个预置上。 B不是一个单类,它包括一些逻辑方法。 C是一个测试类,我将在这个类中实例化游戏对象 问题是:我想将B分配给A,因为A将在FixedUpdate中调用B.OnFixedTick()。 但是如果我在C类中编写这样的代码(不正确) 或者有没有办法将B设为安全 很抱歉我弄错了,但第一个代码块不正确。 下面有正确的代码C# 更新前的Unity5分配参数,c#,unity3d,C#,Unity3d,现在我的项目中有3个C#脚本 A是一个扩展了单行为的类,我把它放在一个预置上。 B不是一个单类,它包括一些逻辑方法。 C是一个测试类,我将在这个类中实例化游戏对象 问题是:我想将B分配给A,因为A将在FixedUpdate中调用B.OnFixedTick()。 但是如果我在C类中编写这样的代码(不正确) 或者有没有办法将B设为安全 很抱歉我弄错了,但第一个代码块不正确。 下面有正确的代码 GameObject obj = B.Instantiate(position,rotation); obj
GameObject obj = B.Instantiate(position,rotation);
obj.GetComponent<A>.SetB(B)
gameobjectobj=B.实例化(位置、旋转);
对象GetComponent.SetB(B)
A.GetComponent()仅当B是组件时才起作用。到目前为止,最常见的组件类型是单行为,您指出B不是单行为。
如果B只是一个普通的C#类,那么最简单的赋值方法就是A.Awake
B=新的B()
或者你可以在C班做同样的事情
A.B=新的B()
当然,根据您的具体需要,还有许多其他方法可以为属性赋值。您是否尝试过更改调用
a.GetComponent().SetB(B)代码>?例如,在A
的Start()
或Awake()
中调用它?我想我不能,因为游戏对象是在B中实例化的。实例化(),可能在我的代码中有很多B(比如B1、B2、B3所有这些都是从B扩展而来的)。但是只有一个A,所以我不知道A中代码需要哪个B。Start()谢谢你的回答,我想我对此有一些想法
FixedUpdate(){if(B!=null)B.OnFixedTick(this);}
GameObject obj = B.Instantiate(position,rotation);
obj.GetComponent<A>.SetB(B)