แนวคิดและการสร้าง Prefab ไว้ใช้งานใน Unity Game Engine

แนวคิดและการสร้าง PREFAB ไว้ใช้งานใน UNITY GAME ENGINE

แนวคิดและการสร้าง Prefab ไว้ใช้งานใน Unity Game Engine

Prefab หากแปลความหมายแล้วมันก็แปลว่า สำเร็จรูป ซึ่งใน Unity ก็คือ Game Object ที่มีคุณสมบัติที่เราสร้างไว้เป็นต้นแบบแล้วเอาไปใช้ได้ทันที และเมื่อแก้ไขต้นแบบตัวสำเร็จรูปที่เราเอาไปใช้ในฉากแต่ละฉากในเกมส์ ก็จะเปลี่ยนไปด้วย หากใครคิดไม่ออก ก็ตัวร้ายในเกมส์นั้นแหละครับ เราสร้างต้นแบบ prefab ขึ้นมา 1 อันแล้วก็ลากไปใน scene ได้เลยเหมือนเป็นกองทัพโคลนเลยที่เดียว นอกจากนี้เรายังสามารถใช้ script เพื่อกำหนดความแตกต่างของตัว prefab ให้เป็นตามเงื่อนไขของ เวลาหรือ level ของเกมส์ได้อีกตัว เรามาดูกันดีกว่า ว่าจะสร้าง Prefabs เบื้องต้นยังไง

เริ่มแรกผมสร้าง Project ใน Unity ขึ้นมาใหม่ แล้วสร้าง Empty Object ขึ้นมาเพื่อทำวัตถุต้นแบบครับ

แนวคิดและการสร้าง Prefab ไว้ใช้งานใน Unity Game Engine
สร้าง New Empty Object
แนวคิดและการสร้าง PREFAB ไว้ใช้งานใน UNITY GAME ENGINE
Add circle collider 2d

จากนั้นก็ add คุณสัมบัติต่างๆที่เราต้องการอย่างในตัวอย่างผม add Circle Collider 2D และเปลี่ยนชื่อเป็น point

แนวคิดและการสร้าง PREFAB ไว้ใช้งานใน UNITY GAME ENGINE
Add Script ที่มีชื่อว่า PointHandler

จากนั้นผม add script เพื่อเป็นตัวกำหนดให้ Prefabs แต่ละอันมีคุณสมบัติ dynamic ตามเงื่อนไขใน script นั้นเอง

แนวคิดและการสร้าง PREFAB ไว้ใช้งานใน UNITY GAME ENGINE
add Mesh Renderer และ Mesh Filter (เลือก Mesh Sphere)

หลังจากนั้นก็ add คุณสมบัติต่างๆเช่น Mesh Renderer และ Mesh Filter โดยเลือก Materials ของ Mesh Renderer เป็น Sprites-Default และ Mesh ของ Mesh Filter เป็น Sphere เพื่อที่ กล้องจะได้เห็นวัตถุที่เราสร้างขึ้นนั้นเอง ส่วนตรง Point Handler นั้นจะมี Opacity กับ C ที่เป็นสีต้องทำการเขียน Script ก่อนนะครับถึงจะมีให้เลือก ต้องจากนี้ก็ทำการ Edit Script โดยมีโค้ดดังนี้

[source language=”c#”]

using UnityEngine;
using System.Collections;

public class PointHandler : MonoBehaviour {

public float opacity;
public Color c;
// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
MeshRenderer mesh = gameObject.GetComponent();
c.a = opacity;
mesh.materials[0].color = c;
}
}

[/source]

เมื่อ add script แล้วก็ค่อยกำหนด opacity และ color

แนวคิดและการสร้าง PREFAB ไว้ใช้งานใน UNITY GAME ENGINE
สร้าง Folder Prefabs

จากนั้นก็สร้าง folder แล้วก็ลาก object point ไปใส่ใน folder prefabs ก็เป็นอันเสร็จสำหรับการสร้าง Prefabs

จากนั้นผมทำการลบ point ออกแล้วทำการลาก object จาก prefabs แทนเข้าไปใน scene แล้วทำการเปลี่ยนค่า opacity และก็เปลี่ยนค่าสีตามต้องการแล้วลอง run ดูก็จะได้ตามภาพครับ

6

ส่วน script นั้น ก็มีตัวแปรแบบ public คือ   opacity,  Color c เพื่อเก็บค่าจากการเลือกและกำหนดค่าจากที่เราเลือกหรืออาจเปลี่ยนค่าผ่านจากวัตถุอื่นๆ โดยโค้ดนั้นจะทำการเปลี่ยนสีและ opacity ผ่าน component Mesh Renderer ของตัว point ที่สร้างจาก Prefabs นั้นเอง ก็เป็นแนวคิดการใช้ Prefabs เบื่องต้นนะครับ ซึ่งถ้าไม่มี Prefabs สิ่งที่เราต้องทำก็ทำซ้ำ point ที่ละอัน add component ที่ละอันคงเสียเวลาน่าดูแต่ถ้าใช้ prefab ก็แค่สร้างอันเดียวแล้วก็ลากไปใช้ได้เลย

ผมก็ยังเพิ่งศึกษา Unity อาจยังอธิบายไม่ค่อยดีต้องขออภัยว่าไว้ ณ ที่นี้ด้วยนะครับ

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *