我真的需要你的帮助来制作我的GUI.Button启动附加到GameObject的JS脚本(或C#)。这是我在申请中的内容。一个JS脚本“doRotate.js”,它在GameObject上进行旋转。
如果通过在检查器中单击将“public var doRotation = false”的值设置为“true”,则旋转开始
#pragma strict
public var doRotation = false;
function Update()
{
if (doRotation)
{
transform.Rotate(new Vector3(0, 50, 0) * Time.deltaTime);
}
}
我还有一个JS脚本,可以呈现一些GUI.buttons。我想要按钮2,一旦按下调用(运行)“doRotate.js”脚本,意味着访问布尔“doRotation”并将其值设置为“true”,就好像它是在检查员。
以下是我到目前为止所尝试的,但是我收到此错误“错误BCE0020:访问非静态成员'doRotation'需要'doRotate'类型的实例。(BCE0020)”。 这是GUI.button上的代码:
var native_width : float = 480;
var native_height : float = 320;
var addImage : Texture2D;
var btnTexture1 : Texture;
var btnTexture2 : Texture;
function OnGUI ()
{
var rx : float = Screen.width / native_width;
var ry : float = Screen.height / native_height;
GUI.matrix = Matrix4x4.TRS (Vector3(0, 0, 0), Quaternion.identity, Vector3 (rx, ry, 1));
GUI.Box( Rect(20, 200, 429, 129) ,addImage, "");
if (!btnTexture1) {
Debug.LogError("Please assign a texture on the inspector");
return;
}
GUI.Button(Rect(54, 222, 52, 35), btnTexture1);
if (!btnTexture2) {
Debug.LogError("Please assign a texture on the inspector");
return;
}
if(GUI.Button(Rect(118, 222, 52, 35), btnTexture2));
var runScript : GameObject[] =
GameObject.FindGameObjectsWithTag("markerObject");
for(var doRotation : GameObject in runScript) {
var script : doRotate = doRotation.GetComponent(doRotate);
if(script)
doRotate.doRotation(); //Error BCE0020: An instance of type 'doRotate' is required to access non static member 'doRotation'. (BCE0020)
}
我做错了什么?我已经尝试了好几天,让它工作没有成功。如何在点击GUI.Button?
时访问此变量有人可以帮帮我吗?
答案 0 :(得分:1)
发生此错误是因为您正在尝试访问" doRotate"的非静态成员。与一个类,而不是它的实例。
在以下代码中:
var script : doRotate = doRotation.GetComponent(doRotate);
if(script)
doRotate.doRotation(); //Error BCE0020: An instance of type 'doRotais required to access non static member 'doRotation'. (BCE0020)
您正在将doRotate
的实例设置为var script
,此var存储doRotate
实例的引用,您可以访问var" doRotation"并改变他的价值。
这样的事情:
var script : doRotate = doRotation.GetComponent(doRotate);
if(script)
script.doRotation = true;