2013-12-11 34 views
0

我已經讓玩家角色移動到目的地(動畫角色移動到目的地),我想在玩家角色移動時禁用GUI按鈕,但是我可以沒有辦法解決它。你們能幫我嗎?當角色移動時禁用GUI

下面是代碼:

public class UserPlayer : Player 
{ 
    public override void TurnUpdate() 
    { 
     //Moving animation 
     if (positionQueue.Count > 0) 
     { 
      GUI.enabled = false; // This is the one that i want when the character still moving (animation still moving), disabled the GUI. But i can't get it 
      transform.position += (positionQueue[0] - transform.position).normalized * moveSpeed * Time.deltaTime; 

      if (Vector3.Distance(positionQueue[0], transform.position) <= 0.1f) 
      { 
      transform.position = positionQueue[0]; 
      positionQueue.RemoveAt(0); 

      if (positionQueue.Count == 0) 
      { 
       actionPoints--; 
      } 
     } 
     } 

     base.TurnUpdate(); 
    } 

    public override void TurnOnGUI() 
    { 
     base.TurnOnGUI(); 
    } 
} 

public class Player : MonoBehaviour 
{ 
    //for movement animation 
    public List<Vector3> positionQueue = new List<Vector3>(); 

    public virtual void TurnUpdate() 
    { 
     if (actionPoints <= 0) 
     { 
      actionPoints = 2; 
      magicAttacking = false; 
      moving = false; 
      attacking = false;  
      GameManager.instance.NextTurn(); 
     } 
    } 

    public virtual void TurnOnGUI() 
     { 
     if (GameManager.instance.currentPlayerIndex == 0 || GameManager.instance.currentPlayerIndex == 2) 
     { 
      //ToolTip Text 
      move = GUI.Button(buttonRect, new GUIContent("Move", "Move the Player")); 
      GUI.Label(tooltipRect, GUI.tooltip, label1); 

      GUI.tooltip = null; 

      //Move Button 
      if (move) 
      { 
       if (!moving) 
       { 
        GameManager.instance.RemoveTileHighlights(); 
        moving = true; 
        attacking = false; 
        GameManager.instance.HighlightTilesAt(gridPosition, Color.blue, movementPerActionPoint); 
       } 

       else 
       { 
        moving = false; 
        attacking = false; 
        GameManager.instance.RemoveTileHighlights(); 
       } 
      } 
     } 
+0

你是什麼意思禁用?根據我所看到的,角色正在移動時,「移動」參數應該阻止按鈕執行任何操作。你的意思是你想讓按鈕變得不可壓縮和變灰,有點像窗口窗體的做法嗎? –

回答

0

您的問題已已經作出,看看here

適應你的代碼是這樣的:

public virtual void TurnOnGUI() { 
    if (GameManager.instance.currentPlayerIndex == 0 || GameManager.instance.currentPlayerIndex == 2) { 
    ... 
    if(!moving) { 
    move = GUI.Button(buttonRect, new GUIContent("Move", "Move the Player")); 
    GUI.Label(tooltipRect, GUI.tooltip, label1); 
    }  
    ... 
    } 
}