【发布时间】:2014-04-01 20:55:01
【问题描述】:
这让我发疯了,我已经好几个小时没有运气了。
我只想从另一个脚本运行我的一个脚本。
两个脚本都附加到同一个游戏对象。 这是我想用来运行其他脚本的脚本。
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 脚本。
【问题讨论】:
-
类是一个对象,方法是它所做的事情。就像你不说“我会去做房子!”一样,你不能仅仅引用流浪的概念。您可能需要学习一些 C# 教程。
-
你想“调用整个事情”是什么意思?是否要将
Wander脚本/组件的新实例/副本添加到同一个GameObject?编辑:Unity 的工作方式,它将在附加的Wander脚本上执行Update方法自动;你不(并且可以说)不应该手动调用它。 -
当 Wander 被激活(并启用)时,它将完成整个事情。 Awake、Update、Start 都是自动调用的
-
基本上我希望能够从我的 RedTeam 脚本中启用或禁用 Wander 脚本。
-
我想我可以使用 dowanderScript.enabled 哇,我不敢相信它这么简单。我花了很长时间试图弄清楚,但我离题了。
标签: c# class unity3d unity-components