สอน Unity3D C# ตอน 4 เพิ่ม event onClick ให้ UI Button

ทำโมบายแอพด้วย-unity
ทำโมบายแอพด้วย-unity

สอน Unity3D C# ตอน 4 เพิ่ม event onClick ให้ UI Button



สอน Unity3D C# ตอน 4 เพิ่ม event onClick ให้ UI Button
ในบทความที่แล้ว เราได้เริ่มต้นด้วยการสร้างไฟล์ C# ไฟล์ .cs ใน Unity และทดสอบการทำงานของฟังก์ชั่น void Start() และฟังก์ชั่น void Update()


ในบทความนี้เราจะทดลองสร้างฟังก์ชั่นขึ้นมาเอง และเริ่มการทำงานของฟังก์ชั่นเมื่อมีการคลิกที่ปุ่ม หรือ UI Button ตัวอย่างด้านล่าง ถ้าไม่เข้าใจให้กลับไปอ่านบทความก่อนนหน้านี้ https://www.codebee.co.th/labs/สอน-unity3d-c-ตอน-3-สร้างไฟล์ภาษา-c-แ/


รับ event onClick เมื่อมีการคลิกที่ปุ่ม

1. ในหน้าต่าง hierarchy สร้าง Empty Object และตั้งชื่อใหม่ว่า AppController
2. ในหน้าต่าง Assets สร้างโฟลเด้อตั้งชื่อว่า script และในโฟลเด้อ script สร้างไฟล์ .cs ตั้งชื่อว่า AppController.cs
3. ลากไฟล์ AppController.cs ไปวางไว้ใน Object AppController จากนั้นเปิดไฟล์ AppController.cs และเขียนโค๊ดดังนี้

using UnityEngine;
using System.Collections;
using UnityEngine.UI; // เพื่อให้ใช้งาน UI Component ของ Unity ได้

public class AppController : MonoBehaviour {

	public Button startBtn; // สร้างตัวแปรแบบ public เพื่อให้ workspace ของ unity เข้าถึงแปรนี้ได้

	void Start () {
		Debug.Log ("Start");
	}
	void Update () {
		Debug.Log ("Update");
	}
}

4. หลังจากที่เราแก้ไขไฟล์ AppController.cs เรียบร้อยแล้ว เปลี่ยนมาทำงานที่ workspace ของ unity เลือกไปที่ AppController Object ในหน้าต่าง inspector จะปรากฏ input ที่ชื่อว่า Start Btn ตามชื่อตัวแปรแบบ public ที่เราได้สร้างไว้ในขั้นตอนที่ 3 ให้ลากปุ่มที่เราได้สร้างไว้ในส่วนของ hierarchy มาวางไว้ในช่องนี้


สอน-unity3d-คลิก


5. เมื่อผ่านขั้นตอนที่ 4 เรียบร้อยแล้ว ปุ่มใน workspace จะมีค่าและเป็นตัวเดียวกันกับตัวแปร startBtn ที่เราประกาศไว้ในไฟล์ AppController.cs ให้เปิดไฟล์ AppController.cs เขียนคำสั่งเพื่อให้ปุ่มมี event ตอนคลิกดังนี้

using UnityEngine;
using System.Collections;
using UnityEngine.UI; // เพื่อให้ใช้งาน UI Component ของ Unity ได้

public class AppController : MonoBehaviour {

	public Button startBtn; // สร้างตัวแปรแบบ public เพื่อให้ workspace ของ unity เข้าถึงแปรนี้ได้

	void Start () {
		startBtn.onClick.AddListener(delegate(){
			startGame();
		});
	}
	void startGame(){
		Debug.Log ("on Click Start Game !!!");
	}
	void Update () {
		
	}
}

6. ทดสอบการทำงาน โดยกดปุ่ม Play ในหน้า workspace ของ Unity ทดลองกดปุ่มและดูผลลัพธ์ในหน้า Console จะเห็นว่า ทุกครั้งที่กดปุ่มตัวแอพจะวิ่งไปทำงานที่ฟังก์ชั่น startGame() ที่เราได้เขียนไว้ใน AppController.cs


สอน-unity3d-คลิก