2015-08-11 3 views
0
using UnityEngine; 
using System.Collections; 

public class GameRootScript : MonoBehaviour { 

    public GameObject prefab = null; 

    private AudioSource audio; 
    public AudioClip jumpSound; 

    public Texture2D icon = null; 
    public static string mes_text = "test"; 


    // Use this for initialization 
    void Start() { 
     this.audio = this.gameObject.AddComponent<AudioSource>(); 
     this.audio.clip = this.jumpSound; 
     this.audio.loop = false; 
    } 

    void onGUI() 
    { 
     Debug.Log ("Image"); 
     GUI.DrawTexture (new Rect (Screen.width/2, 64, 64, 64), icon); 
     GUI.Label (new Rect (Screen.width/2, 128, 128, 32), mes_text); 
    } 

    // Update is called once per frame 
    void Update() { 
     if(Input.GetKeyDown (KeyCode.Z)){ 
      Debug.Log("Prefab"); 
      GameObject go = GameObject.Instantiate(this.prefab) as GameObject; 
      go.transform.position = new Vector3(Random.Range(-2.0f,2.0f), 1.0f, 1.0f); 

      this.audio.Play(); 
     } 
    } 
} 

Я делаю метод onGUI() в Unity, но метод не работает.
Я просто следую за книгой, и я не знаю, в чем проблема.
Даже я компилирую этот код, нет ошибки.
Единство книжной версии - 4.xx, а моя версия Unity - 5.1.2.
Как сделать метод onGUI в Unity?

+0

Что значит, что это не работает? Установили ли вы контрольные точки и отладили код? – ChiefTwoPencils

+0

Да. В первой строке метода onGUI существует точка останова. Когда я запускаю Единство, я не вижу этого. – hellowl

ответ

5

У вас есть опечатка для вашего метода onGUI. Он должен быть OnGUI с заглавной буквы «O».

С опечаткой на месте, хотя он компилируется, двигатель Unity по существу игнорирует этот метод.

+0

Ох ... Ох ... Вау ..... Спасибо !!!!!!! – hellowl

+0

@jake: Добро пожаловать! Множество людей укушено этой причудой Единства. Удачи и приятного времяпровождения! –

+1

@jake Почему вы используете OnGUI вместо новой системы GUI? OnGUI не просто немного плохо - это просто ужасно. – ThisHandleNotInUse

Смежные вопросы