[英]Unity can't acess another class 's instance c#
头等舱
public class ArmyManMovement : MonoBehaviour {
public Animator anim;
TextInput check;
// Use this for initialization
void Start () {
anim = GetComponent<Animator> ();
}
二等
public class TextInput : MonoBehaviour
{
ArmyManMovement check;
void Awake()
{
check = GetComponent<ArmyManMovement> ();
//check.anim.SetBool ("Right", false);
}
//public IEnumerable<string> RemoveWhitespace(string input)
//{
//return new string(input.ToCharArray().Where(c => !Char.IsWhiteSpace(c)).ToArray());
//}
void AcceptStringInput(string userInput)
{
userInput = userInput.ToLower ();
if (userInput == "Open door") {
check.anim.SetBool("Right",true);
}
}
我不知道出了什么问题。我将Armyman的脚本附加到了输入文本的同一个检查器中。我不知道出了什么问题,但是值没有改变,而且我无法访问动画师在Armyman的脚本中。它一直在控制台中显示错误是(对象引用未设置为对象实例)
如果将ArmyManMovement
附加到与TextInput脚本相同的ArmyManMovement
上,则在执行GetComponent<ArmyManMovement> ();
时,它决不能为null
GetComponent<ArmyManMovement> ();
从TextInput
脚本。
这里确实存在两个可能的问题:
1个 .The TextInput
脚本也连接到另一游戏物体。 查看您的场景,并确保不是。 如果它被错误地连接到另一游戏物体即不具有所述ArmyManMovement
附接到它太, GetComponent<ArmyManMovement> ();
将返回null
,这意味着check
变量将为null
。 请参阅此内容 ,以了解如何解决此问题并进行修复。
2 anim
变量未从编辑器分配。
第一个测试: Debug.Log(check);
。
如果不为null
则进行测试: Debug.Log(check.anim);
。
如果该值为null
则将您的动画师拖到ArmyManMovement
脚本中的动画位。
注意,如果Debug.Log(check);
为null
,您需要返回至#1并首先进行修复。 希望您现在知道如何解决将来的Unity null
问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.