Unity 从另一个对象的脚本调用方法

Unity Calling a method from a script of another object

提问人:kenLeeDep 提问时间:9/2/2023 更新时间:9/2/2023 访问量:24

问:

在我使用 Unity 获得一些实际编码经验的过程中,我决定基本上创建一个游戏管理器对象来存储敌方对象可以调用并确定其行为的方法。我遇到的问题是我无法这样做,尽管我的方法在敌方物体本身中使用时有效。

我研究了如何做到这一点,并确信我编码正确,但显然不是。所以下面是我的代码。

敌方对象上的代码:


    private GameObject gameManager;
    private ForTesting forTesting;


    // Start is called before the first frame update
    void Start()
    {

        gameManager = GameObject.Find("GameManager");
        forTesting = gameManager.GetComponent<ForTesting>();

    }

    // Update is called once per frame
    void Update()
    {
        forTesting.Test();

    }

GameManager (空)对象 ForTesting 脚本上的代码The code on the GameManager (empty)object ForTesting 脚本

    public void Test()
    {
        transform.Translate(Vector3.forward * 20 * Time.deltaTime);
    }

我还测试了将 ForTesting 脚本添加到 enemy 对象本身,并简单地将 void Start() 更改为

forTesting = GetComponent<ForTesting>();

以上方法有效,我个人认为这仍然适用于我正在从事的项目,但我不想在没有首先了解我最初的实现出了什么问题的情况下继续,而且我不确定哪种方法更好,或者是否存在更好的方法。

感谢您的阅读。

C# Unity-Game-Engine 方法

评论

0赞 sbridewell 9/2/2023
第一次尝试时发生了什么?编译错误?运行时错误?如果是这样,请在问题中包含错误详细信息。它是否运行但行为与您的预期不同?如果是,请描述预期的和实际的行为。
0赞 kenLeeDep 9/3/2023
没有错误代码或任何东西。物体只是停留在原地而不是向前移动。但是,如果我将脚本组件放入对象本身而不是另一个对象中,则预期的行为会起作用。

答: 暂无答案