如何使GUI按钮在Unity3d中激活脚本(JS或C#)



我真的需要你的帮助来制作我的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; 

相关内容

  • 没有找到相关文章

最新更新