diff --git a/Assets/Scripts/Scenes/GameScene.cs b/Assets/Scripts/Scenes/GameScene.cs index 39bbe522a..bd532f293 100644 --- a/Assets/Scripts/Scenes/GameScene.cs +++ b/Assets/Scripts/Scenes/GameScene.cs @@ -22,7 +22,6 @@ public class GameScene : BaseScene atkbtn.SetButtonContents(null,"공", false, true); atkbtn.SetButtonRect("Button_Attack", new Vector2(50, 150)); atkbtn.OnButtonClicked += Manager.Input.OnClicked; - // atkbtn.Bind(() => Debug.Log("Attack Button Clicked")); } UIButton defbtn = Manager.UI.SwitchOnObject("Button_Defence", true); diff --git a/Assets/Scripts/UI/UIButton.cs b/Assets/Scripts/UI/UIButton.cs index 00eb5f3f2..5497cbb6b 100644 --- a/Assets/Scripts/UI/UIButton.cs +++ b/Assets/Scripts/UI/UIButton.cs @@ -1,12 +1,44 @@ using System; using TMPro; using UnityEngine; -using UnityEngine.Events; using UnityEngine.UI; /// -/// 원하는 스크립트에서 메서드 만들고 {버튼}.Bind(메서드) 하면 클릭시 메서드 실행 +/// UIButton은 버튼이라는 오브젝트를 위한 클래스 /// +/// +/// 1. GameScene과 같은 Scene에서 UIManager의 UIList에 "Button_Attack"과 같이 사용할 버튼의 이름을 추가 +/// +/// Manager.UI.UIList = new List<string> { "Button_Attack" }; +/// +/// 2. GameScene과 같은 Scene에서 UI 호출하게 되면 다음과 같이 버튼을 설정 +/// +/// UIButton atkbtn = Manager.UI.SwitchOnObject<UIButton>("Button_Attack", true); +/// if (atkbtn != null) +/// { +/// atkbtn.SetButtonContents(null,"공", false, true); +/// atkbtn.SetButtonRect("Button_Attack", new Vector2(50, 150)); +/// // 아래 코드는 버튼이 클릭 되었을 경우 InputManager의 OnClicked 함수를 호출 +/// atkbtn.OnButtonClicked += Manager.Input.OnClicked; +/// } +/// +/// 3. 만약에 해당 버튼을 사용하는 오브젝트(예: PlayerController)에서 버튼 클릭 이벤트를 받고 싶다면 Start에 다음 같이 설정 +/// +/// void Start() +/// { +/// Manager.Input.RegisterAction("Button_Attack", OnAttack); +/// } +/// +/// private void OnAttack() +/// { +/// if (!_isAttack) +/// { +/// _isAttack = true; +/// Behavior = PlayerBehavior.Attack; +/// } +/// } +/// +/// public class UIButton: MonoBehaviour { private string _name;