第一堂课
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);
}
}
我不知道出了什么问题。我把军人的剧本附在文字输入的同一个检查员身上。我不知道出了什么问题,但价值没有改变,我不能在军人的脚本中访问动画师。它会在控制台中保持错误的原因(对象参考不设置为对象的实例)
答案 0 :(得分:2)
如果ArmyManMovement
附加到TextInput脚本附加到的相同GameObject上,当您从null
执行GetComponent<ArmyManMovement> ();
时,它应该从不 TextInput
TextInput
脚本。
这里确实存在两个问题:
1 。ArmyManMovement
脚本也附加到另一个GameObject。查看你的场景,确保它不是。如果它错误地附加到另一个没有附加GetComponent<ArmyManMovement> ();
的GameObject,null
将返回check
,这意味着null
变量将是{{} 1}}。请参阅this了解如何找到并修复它。
2 。未在编辑器中分配anim
变量。
首次测试:Debug.Log(check);
。
如果不是null
则测试:Debug.Log(check.anim);
。
如果是null
,则将动画师拖动到ArmyManMovement
脚本中的动画插槽。
请注意,如果Debug.Log(check);
为null
,您需要返回#1 并先修复此问题。希望您现在知道如何解决未来的Unity null
问题。