如何将GUI纹理按钮链接到Unity3d中的脚本

时间:2014-03-21 22:49:14

标签: c# android user-interface unity3d

我需要一些帮助才能制作一个自定义的GUI纹理按钮,当它在Unity3d for android中被触摸时,在3d对象上启动一个脚本。

我有一个GUI按钮,用于在按下时旋转3d模型。以下(C#)脚本,我得到的是O.K.按钮创建时progrmaticaly:

using UnityEngine;
using System.Collections;

public class RotateButtonBheaviour : MonoBehaviour {

private bool mIsRotated = false;
private bool mMustRotate = false;
private GameObject Cube;

// Use this for initialization
void Start () {
    Cube = GameObject.Find ("MarkerObject");
}

// Update is called once per frame
void Update () {
    if (mMustRotate && !mIsRotated) {
        //Rotate all models 45 degrees around X
        if (Cube != null) {
            GameObject modelUnderChipsTrackable = Cube.transform.GetChild(0).gameObject;
            modelUnderChipsTrackable.transform.RotateAround(new Vector3(1,0,0), Mathf.PI/3);

        }
        mIsRotated = true;
        mMustRotate = false;
    }


public Texture btnTexture1;

void OnGUI() {
    if (!btnTexture1) {
        Debug.LogError("Please assign a texture on the inspector");
        return;
    }
    if (GUI.Button(new Rect(10, 10, 120, 30), btnTexture1))
        if (!mIsRotated) {
            mMustRotate = true;
        }

我想要代替代码中的按钮来添加我的自定义GUI纹理按钮(名为OrbitBtn),所以在触摸时,启动围绕其轴旋转的3d模型。

请给我一些关于如何实现该功能的建议。提前感谢大家的答案。

1 个答案:

答案 0 :(得分:1)

只需更改纹理btnTexture1,或者您可以单击并将图像文件拖放到脚本中,因为您已将btnTexture1声明为公共。

或者如果您想在javascript中执行相同的操作,请参阅示例代码。

if(GUI.Button(Rect(Screen.width*.85,Screen.height*0,width,width),Resources.Load("pause") as Texture))
{

//Button press action
}

因此,在此示例代码中,我正在将图像(暂停。*)加载到按钮上。确保将图像放在资产文件夹中名为“资源”的文件夹中。