ඉතින් අද අපි කතා කරන්නෙ Unity Scripting කරන හැටි. හරියටම කිව්වොත් game objects සහ අපි හදන game එකට script හරහා call කරන්න පුලුවන්. මෙතනදි වෙන්නෙ මෙහෙම දෙයක් ඔයාලට මතක ඇති අපි game objects අපේ game එකට add කරා. ඊට පස්සෙ ඒවට animations එකතු කරා. මේ animations වලට animation controller හරහා විවිධ state වලදි හැසිරෙන්න ඕන විදිය animation parameter මගින් වෙනස් වෙන්න ඕන විදිහ ගැන කතා කරා. ඒ උනාට මේව ක්රියාත්මක වෙන්න ඕන වෙලාව, ක්රියාත්මක වෙන්නෙ මොන inputs දුන්නහමද, ඒව වෙනස් වෙන විදිහ සේරම හසුරවන්නෙ script එක හරහා.
මූලික අවබෝධයක් දෙන්නම් scripting ගැන ප්රධාන කොටසක් නිසා. Unity වල scripting වලට default IDE එකක් දෙනව setup එක download කරනකොටම. ඒ Monodevelope IDE එක. භාවිතා කරන language එක C#. මුල්ම කාලෙ Unity version වල Java Script language එක use කරා unity ලට ආවේණික විදියට වෙනස් කම් කරල. ඒත් භාවිතයේ අඩුවීමත් එක්ක මේ language එක game engine එකෙන් ඉවත් කරල තියෙනව.
C# script එකක් add කරගන්නෙ මෙහෙමයි. මුලින්ම මම project panel එකේ scripts කියල folder එකක් හදාගත්ත. ඒක ඇතුලට ගිහින් right click කරල ලැබෙන menu එකේ Create->C# Script තෝරන්න.
ඊට පස්සෙ ලැබෙන script එක player කියල rename කරගන්න.
මම player කියල මෙතනදි හදුන්වන්නෙ අපේ cube game object එක. ඒක නිසා මම cube එකට මේ script එක එකතු කරන්න ඕන. ඒ නිසා game window එකේදි cube එක select කරන්න. ඊට පස්සෙ player script එක drag කරල inspector window එක උඩට drop කරන්න.
දැන් අපේ cube එකට player script එක add වෙලා තියෙන්නෙ. දැන් script එක double click කරන්න. එතකොට ඔයාලගෙ monodevelop IDE එක open වේවි. මම මගේ IDE එක VSCode වලට වෙනස් කරගෙන තියෙන්නෙ.(තමන්ට කැමති IDE එකකට හදාගන්න පුලුවන් Edit->Preference->External Tools හරහා).
මෙතනදි ඔයාලට පේනව player class එක MonoBehavior කියන namespace එක ඇතුලෙ තමයි create වෙන්නෙ. (namespace එක කියන්නෙ MonoBehavior Project එකක් කියල හිතන්නකො, ඒ project එක ඇතුලෙ තියෙන class එකක් තමයි player කියල හිතන්න)
මේකෙ start සහ update කියල methods දෙකක් පේනව ඇති. start method එකේදි වෙන්නෙ game එක start වෙනකොට මොනවද වෙන්න ඕන කියල කියන එක. update method එකේදි එන්නෙ game එක play වෙන හැම frame එකකදිම update වෙන්න ඕන දේවල් මොනවද කියල කියන එක.
දැන් මම script එක check කරන්න start method එක ඇතුලෙ print statement ලියනව Debug.Log("Hello world"); කියල. ඊට පස්සෙ script එක save කරගන්න.
දැන් play button එක ඔබන්න. එතකොට console එකේ ඔයාලට පෙනේවි hello world කියල print වෙනව.
හරි. දැන් මම අපි හදන game එකට අදාලව code එක පහල පේන විදියට වෙනස් කරගන්නම්.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class player : MonoBehaviour {
public float player_speed;
private Animator anim;
// Use this for initialization
void Start () {
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update () {
player_speed = Input.GetAxis("Vertical");
anim.SetFloat("speed",player_speed);
}
මුලින්ම කියන්නම් code එක ගැන. මුලින්ම private Animator type එකක් අරගෙන anim කියල variable එකකට
declare කරගත්ත. මෙතනදි අපි Inspector එකේ animator එක තමයි අපේ script එකට ගත්තෙ.
declare කරගත්ත. මෙතනදි අපි Inspector එකේ animator එක තමයි අපේ script එකට ගත්තෙ.
ඊට පස්සෙ player_speed කියල float variable එකකුත් declare කරගන්න ඕන.
start method එකේදි GetComponent function එක හරහා අපේ Animator එකට call කරල තියෙනව.
මොකද හැම frame එකේදිම අපි set කරගත්ත speed කියන animation parameter එකට call කරන්න ඕන
SetFloat fucnction එක හරහා.
player_speed = Input.GetAxis("Vertical"); මේකෙදි කියන්නෙ GetAxis function එකෙන් යන්න ඕන
දිශාව ගන්න එක. Vertivcal කියන්නෙ සිරස් අක්ෂය හරහා unity standard ලබාදෙන keys(ඕනම game එකක)
forward(ඉදිරියට යන්න) w හරි up Arrow එක හරි.
දැන් unity වලට ගිහින් play button එක ඔබල බලන්න. දැන් W key එක press කරන්න එතකොට අපේ
animation එක වැඩ කරනව ඔයාලට පෙනේවි.
ඉතින් අද මම කතා කරේ unity scripting ගැන. මේ ගැන ගොඩක් දේවල් ඔයාලත් හොයල බලන්න.
scripting වලට අදාලව ගොඩක් predefined functions තියෙනව unity වල. ඒව කරල practice වෙන්න. ඔයාලගෙ comments, ප්රශ්න තියෙනවනම් පහල comment section එකේ දාන්න. ඔබට ජය!