簡體   English   中英

Unity3D在另一個腳本中運行一個腳本

[英]Unity3D Running A Script Inside Another Script

這一直讓我發瘋,而且我在這個運氣上已經好幾個小時了。

我要做的就是從另一個腳本運行一個腳本。

這兩個腳本都附加到同一游戲對象上。 這是我要用來運行其他腳本的腳本。

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腳本。

如果要從RedTeamScript啟用/禁用Wander腳本,請在RedTeamScript中執行以下操作...

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

要么

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

注意:GetComponent僅在Wander腳本位於同一gameObject上時才起作用。 如果漫游腳本在另一個gameObject上,則需要首先獲取對該gameObject的引用,然后在其上調用GetComponent。

聲明效率也更高

wanderScript = GetComponent<Wander>();

在您的Start方法中,因此GetComponent僅被調用一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM