2014-04-01 378 views
1

這一直使我瘋狂,我一直在這個沒有幾個小時的運氣。Unity3D在另一個腳本中運行腳本

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

這兩個腳本都附加到相同的遊戲對象。 這是我想用來運行其他腳本的腳本。

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腳本禁用腳本漂移。

+1

一個類是一個對象,方法就是它所做的事情。就像你不說'我會去做房子!'一樣,你不能只是引用流浪的概念。你可能需要做一些C#教程。 – Magus

+0

你是什麼意思,你想「叫整個事情」?你想添加一個新的'Wander'腳本/組件的實例/副本到同一個'GameObject'嗎?編輯:Unity的工作方式,它會執行附加的'Wander'腳本的'Update'方法_automatically_;你不(可以說)不應該手動調用它。 –

+0

當漫遊激活(並啓用)時,它會做_whole thing_。喚醒,更新,開始他們都自動調用 – Kay

回答

2

如果要啓用/從你的RedTeamScript禁用腳本漂移,請執行下列操作在您的RedTeamScript ...

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

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

注:GetComponent只會工作,因爲漫遊腳本在同一個gameObject上。 如果漫遊腳本位於另一個gameObject上,則需要先獲得對該gameObject的引用,然後調用GetComponent。

這也更有效申報

wanderScript = GetComponent<Wander>(); 

在你啓動方法,以便GetComponent只調用一次。

相關問題