如何获取静态变量的组件?

时间:2019-07-13 23:48:02

标签: c# unity3d

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayConversations : MonoBehaviour
{

    private static ConversationTrigger conversationTrigger;
    private static PlayConversations instance;

    private void Awake()
    {
        conversationTrigger.GetComponent<ConversationTrigger>();
        instance = this;
    }

    public static void ConversationToPlay(int index)
    {
        ConversationTrigger.conversationsToPlay.Add(index);
        instance.StartCoroutine(conversationTrigger.PlayConversations());

    }
}

这不是给我错误或异常,而只是唤醒中的那一行:

conversationTrigger.GetComponent<ConversationTrigger>();

然后继续游戏,而不是脚本中的代码。使用断点可以到达这一行,但不会继续执行其余的代码。

脚本已附加到已经附加了ConversationTrigger脚本的GameObject。

1 个答案:

答案 0 :(得分:1)

我总是这样使用。而且有效。

public class MyObject : MonoBehaviour
{
    public static MyObject Instance = null;

    void Awake()
    {
        if (Instance == null)
        {
            Instance = this;
        }
        else
        {
            DestroyImmediate(Instance.gameObject);
            Instance = this;
        }
    }

    void OnDestroy()
    {
        if (Instance == this)
        {
            Instance = null;
        }
    }
}

当您要调用对象时,必须使用

MyObject x =  MyObject.Instance;
var rb = x.transform.GetComponent<Ridigbody2d>();