Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新前的Unity5分配参数_C#_Unity3d - Fatal编程技术网

C# 更新前的Unity5分配参数

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

现在我的项目中有3个C#脚本 A是一个扩展了单行为的类,我把它放在一个预置上。 B不是一个单类,它包括一些逻辑方法。 C是一个测试类,我将在这个类中实例化游戏对象

问题是:我想将B分配给A,因为A将在FixedUpdate中调用B.OnFixedTick()。 但是如果我在C类中编写这样的代码(不正确)

或者有没有办法将B设为安全

很抱歉我弄错了,但第一个代码块不正确。 下面有正确的代码

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)