1. ホーム
  2. c#

[解決済み] Unity C#, アニメーションを開始するために他のスクリプトから関数を呼び出すには?

2022-01-29 10:15:20

質問内容

using UnityEngine; using System.Collections;

public class ClickToMoveScript : MonoBehaviour  
{
    public string Chopping = "Chopping";

    public void PlayWoodCuttingAnim()   
    {       
        //Play Woodcutting Animation        
        gameObject.GetComponent<Animation>().CrossFade (Chopping);  
    }     
}

以下は、私のもう一つのスクリプトです。

using UnityEngine; 
using System.Collections;

public class WoodCuttingScript: MonoBehaviour  
{
    ClickToMoveScript ClickToMove;

    void Start()
    {
        ClickToMove.PlayWoodCuttingAnim();  
    }  
}

<イグ

アニメーションコンポーネントの中に、すでにアニメーションを追加しています。

もう一つ分かったことは、ClickToMoveスクリプトの中でPlayWoodCuttingAnim()関数を呼び出すと正常に動作しますが、他のスクリプトでは動作しないことです。

エラーコンソール > NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

何かお手伝いできることがあれば、ぜひお願いします。

解決方法は?

さて、そのための一般的な方法はいくつかあります。

他のスクリプトからメソッドを呼び出すように、単純なスクリプト・インスタンスではなく、(gameObjectに)アタッチされたスクリプト・インスタンスを取得する必要があります。

それは、以下の方法で行うことができます。

void Start()
{
    ClickToMove = FindObjectOfType<ClickToMoveScript>();
    ClickToMove.PlayWoodCuttingAnim();  
}