繁体   English   中英

Unity无法访问另一个类的实例C#

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM