我真的需要你的帮助来制作我的GUI。Button启动一个附加到GameObject的JS脚本(或C#)。这是我的申请表。一个JS脚本"doRotate.JS",在GameObject上进行旋转。
如果点击Inspector 中的值"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",就像在Inspector中完成的一样。
以下是我迄今为止尝试过的内容,但我收到了错误"错误BCE0020:访问非静态成员"doRotation"需要类型为"doRotate"的实例。(BCE0020)"。这是GUI上的代码。按钮:
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时访问此变量?
有人能帮帮我吗?
发生此错误是因为您试图使用类而不是其实例访问"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;