- 我有一个播放器类,我正在更新一个名为
Target
的 Transform,Target 属于Projectile
类。
这是我所做的,并且效果很好:
_pro.Target.transform.position = new Vector3(posi.x, posi.y, posi.z); //value gets assigned to Target here
Instantiate (bulletprefab, position, Quaternion.identity); //projectile is attached to bulletprefab so projectile gets called from here
现在,在 projectile 中,在尝试访问 Target.transform.position
时,它给出 UnassignedReferenceException :尚未分配 projectile 的变量“Target”。
我在玩家类中成功地为 Target
赋值,如何在 projectile 中访问相同的值?
最佳答案
您的主要问题是您试图在实例化包含该变量的对象之前更新该变量的值。
由于您的 Projectile
类具有对目标的引用,因此首先您需要对 Projectile
类实例的引用。
因此实例化您的对象,然后找到 Projectile
类。
GameObject g = Instantiate (bulletprefab, position, Quaternion.identity) as GameObject;
Projectile p = g.GetComponent<Projectile>();
然后使用您对 projectile 的新引用将值分配给 target。
p.SetTarget(target.transform.position);
你也可以使用 SendMessage解决同样的问题。
GameObject g = Instantiate (bulletprefab, position, Quaternion.identity) as GameObject;
g.SendMessage("SetTarget", target.transform.position);
在这两种情况下,我假设您有一个名为 SetTarget
的函数,它允许您在 Projectile
类中设置目标。
关于c# - C# Unity3D 中的未分配引用异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24985545/