[英]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.