2016-11-16 55 views
0

當按下"Fire2"並顯示GUI紋理時,此腳本控制攝像機視場。但是,一旦用戶按下按鈕一次,紋理就會顯示並且不會消失,直到再次按下按鈕 - 我希望它只在按下按鈕時才顯示。該腳本附加到預製件,該預製件是玩家預製件的子對象。我試圖只使用GetButton,但看到OnGUI()被稱爲每幀,以及Update()功能,它只是使紋理閃爍。僅在按下按鈕時才顯示GUI紋理?

using UnityEngine; 
 
using System.Collections; 
 
    
 
public class awpScopeIn : MonoBehaviour { 
 
    
 
    public Texture scopeGUI; 
 
    private bool _isScoped = false; 
 
    public Color color = Color.black; 
 
    private Camera cam; 
 
    public GameObject awp_graphics; 
 
    
 
    void Start() 
 
    { 
 
     cam = GetComponentInParent(typeof(Camera)) as Camera; 
 
     cam.clearFlags = CameraClearFlags.SolidColor; 
 
     cam.fieldOfView = 70f; 
 
    } 
 
    
 
    void OnGUI() 
 
    { 
 
     float width = 600; 
 
     float height = 600; 
 
     
 
     if (_isScoped) { 
 
      GUI.DrawTexture (new Rect ((Screen.width/2) - (width/2), (Screen.height/2) - (height/2), width, height), scopeGUI); 
 
     } 
 
    } 
 
    
 
    void Update() 
 
    { 
 
     if(Input.GetButtonDown("Fire2")) 
 
     { 
 
      _isScoped = !_isScoped; 
 
      cam.backgroundColor = color; 
 
      cam.fieldOfView = 45f; 
 
      awp_graphics.gameObject.SetActive(false); 
 
     }else if(Input.GetButtonUp("Fire2")) 
 
     { 
 
      cam.fieldOfView = 70f; 
 
      awp_graphics.gameObject.SetActive(true); 
 
     } 
 
    
 
    } 
 
}

回答

0

你只是改變了值,按下按鈕時,但你必須更新標誌顯示按鈕被釋放時的質感。所以,你的更新方法應該是:

if(Input.GetButtonDown("Fire2")) 
    { 
     _isScoped = !_isScoped; 
     cam.backgroundColor = color; 
     cam.fieldOfView = 45f; 
     awp_graphics.gameObject.SetActive(false); 
    }else if(Input.GetButtonUp("Fire2")) 
    { 
     cam.fieldOfView = 70f; 
     awp_graphics.gameObject.SetActive(true); 
     _isScoped = false; 
    } 
+0

歡呼聲,雖然我意識到這張貼後不久,哈哈 –