1

これは私を夢中にさせており、何時間も運がありませんでした。

私がやりたいことは、自分のスクリプトの 1 つを別のスクリプトから実行することだけです。

どちらのスクリプトも同じゲーム オブジェクトにアタッチされています。他のスクリプトを実行するために使用したいスクリプトは次のとおりです。

using UnityEngine;
using System.Collections;

public class RedTeam : MonoBehaviour {

public Wander wanderScript;

void Awake(){
    wanderScript = GetComponent<Wander>();
}

void Update(){ 
    wanderScript();
} 
}

これが私のワンダースクリプトです...

using UnityEngine;
using System.Collections;
[RequireComponent(typeof(CharacterController))]

public class Wander : MonoBehaviour
{
public float speed = 5;
public float changeDirectionTime = 1;
public float maxDegreesToChange = 30;

CharacterController controller;
float heading;
Vector3 targetRotation;

void Awake ()
{
    controller = GetComponent<CharacterController>();

    // Set random rotation
    heading = Random.Range(0, 360);
    transform.eulerAngles = new Vector3(0, heading, 0);

    StartCoroutine(NewHeading());
}

void Update ()
{
    transform.eulerAngles = Vector3.Slerp(transform.eulerAngles, targetRotation, Time.deltaTime * changeDirectionTime);
    var forward = transform.TransformDirection(Vector3.forward);
    controller.SimpleMove(forward * speed);
}

IEnumerator NewHeading ()
{
    while (true) {
        NewHeadingRoutine();
        yield return new WaitForSeconds(changeDirectionTime);
    }
}

void NewHeadingRoutine ()
{
    var floor = Mathf.Clamp(heading - maxDegreesToChange, 0, 360);
    var ceil  = Mathf.Clamp(heading + maxDegreesToChange, 0, 360);
    heading = Random.Range(floor, ceil);
    targetRotation = new Vector3(0, heading, 0);
}
}

これは私が得ているエラーです。

エラー CS1955: メンバー `RedTeam.wanderScript' はメソッドまたはデリゲートとして使用できません

私の主な目標は、TeamRed スクリプトから Wander スクリプトを有効または無効にできるようにすることです。

4

1 に答える 1

2

RedTeamScript から Wander スクリプトを有効/無効にする場合は、RedTeamScript で次の操作を行います...

wanderScript = GetComponent<Wander>();
wanderScript.enabled = false;

また

wanderScript = GetComponent<Wander>();
wanderScript.enabled = true;

注 : Wander スクリプトが同じゲーム オブジェクト上にあるため、GetComponent のみが機能します。ワンダー スクリプトが別のゲーム オブジェクトにある場合は、最初にそのゲーム オブジェクトへの参照を取得し、それに対して GetComponent を呼び出す必要があります。

また、宣言する方が効率的です

wanderScript = GetComponent<Wander>();

Start メソッドでは、GetComponent は 1 回だけ呼び出されます。

于 2014-04-01T22:26:57.267 に答える