1. Trang chủ
  2. » Công Nghệ Thông Tin

Game Unity Phần 8 FPT

60 370 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 60
Dung lượng 687,17 KB

Nội dung

Bài 8: T ng quan v l p trình Unity Gi ng viên: - L p trình Game 2D Bài gi ng 1 M C TIÊU        Gi i thi u chung Ngôn ng Unity L p components Truy xu t thu c tính c a script Các ph ng th c c b n Debugging T i u hóa mã ngu n N i dung  Ngôn ng Unity  JavaScript  Syntax c a JavaScript game  i u n GameObject v i JavaScript  C#  Syntax c a C# game  i u n GameObject v i C#  So sánh C# JavaScript  L p components  Truy xu t thu c tính c a script  Các ph ng th c c b n  Debugging  T i u hóa mã ngu n Ngôn ng – GameEngine gì? • Là ph n m m xây d ng, l p trình lên game • Có th giao ti p v i ph n m m khác • Giúp cho vi c t o game m t cách nhanh chóng image audio model wood Ice bg hit Music talk male Female house … Game Engine (UDK, Blender, XNA, Unity…) Game (Perfect world, Chibi, Fantasy, SwordMan…) Ngôn ng • Unity ch y Mono framework • Unity h tr ngôn ng : – JavaScript – C# – Boo • M t vài ph n m m vi t cho Unity – Notepad, Notepad++, MS Word – MS Net – Công c m c nh c a Unity – UnityScript Editor Ngôn ng - Biên d ch Script • Các scripts "Standard Assets", "Pro Standard Assets" ho c "Plugins" c biên d ch tr c tiên • n scripts "Standard Assets/Editor", "Pro Standard Assets/Editor" ho c "Plugins/Editor" c biên d ch ti p sau ó • n scripts "Editor" c biên d ch ti p • Các scripts l i s c biên d ch Ngôn ng – Bi n variable • Member Variables – Cách khai báo bi n: //JavaScript var memberVariable = 0.0; //C# public class example : MonoBehaviour { public float memberVariable = 0.0F; } //boo class example(MonoBehaviour): public memberVariable as single = 0.0F Ngôn ng – Bi n variable • Các bi n Private – Các bi n c khai báo v i t khóa Private //JavaScript private var memberVariable = 0.0; //C# public class example : MonoBehaviour { private float memberVariable = 0.0F; } //boo class example(MonoBehaviour): private memberVariable as single = 0.0F Ngôn ng – Bi n variable • Bi n Global – T o m t bi n global b ng cách s d ng t khóa static – //JavaScript static var globalVariable = 0.0; Truy c p t m t class khác project: //C# public class example : MonoBehaviour { //javascript NameFile.golobalVariable static float globalVariable = 0.0F; } //C# NameClass.golobalVariable //boo class example(MonoBehaviour): //Boo static globalVariable as singleNameClass.golobalVariable = 0.0F Ngôn ng - Event • Ví d : Khi click chu t trái, s ki n “OnMouseDown” c g i • Bây gi ta vi t o n code: Debug.Log(“I click mouse-left”);//Javascript • Khi ó, s ki n c m t hành ng Unity g i c x lý • Các s ki n khác: OnMouseUp, OnMouseOver, Awake, Start, Update, LastUpdate,… • Có r t nhi u s ki n s c gi i thi u ph n ti p theo Các ph ng th c c b n  Start(): c g i th c hi n tr c ph ng th c Update() nh ng l i sau Awake(), Khác c b n gi a Start() Awake() ph ng th c Start() ch c g i script không b ình ch ho t ng (enabled)  OnCollisionEnter(): Nh ng o n code thu c ph ng th c s c th c thi i t ng ch a bao g m m t Collider va ch m v i m t Collider ho c Rigidbody c a m t i t ng khác  OnMouseDown(): Nh ng o n code thu c ph ng th c s c th c thi chu t c a ng i ch i click vào m t i t ng có tích h p thành ph n GUIElement ho c Collider 46 Các ph ng th c c b n 47 Debugging  Unity cung c p l p Debug h tr l p trình viên theo dõi ki m soát l i, ây quan tâm n ph ng th c Debug.Log()  Ph ng th c Log() cho phép ng i dùng g i m t thông tin n Unity Console nh m m c ích: • Ch ng minh r ng o n mã ang c th c hi n • Báo cáo tình tr ng hi n t i c a bi n  Tr l i ví d v l p SetSpeed, ki m tra t c c a i t ng m i ng i ch i t ng t c 48 Debugging  Tr l i ví d v l p SetSpeed, ki m tra t c m i ng i ch i t ng t c c a using UnityEngine; using System.Collections; public class SetSpeed : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { if (Input.GetKey(KeyCode.U)) { Move moveScript = gameObject.GetComponent;// truy xu t moveScript.speed += 0.5F;// t ng t c Debug.Log(moveScript.speed); } } } it ng n l p Move 49 T i u hóa mã ngu n: S d ng thành ph n c a GameObject thông qua bi n t nh:  Nh ã tìm hi u m c trên, b n thân m t GameObject c tích h p s n thành ph n l u tr thông tin c a chúng không gian 3D, ây s l y ví d c th v i thành ph n transform using UnityEngine; using System.Collections; public class Example : MonoBehaviour { void Update () { transform.Translate(0,0,0); } } 50 T i u hóa mã ngu n: S d ng thành ph n c a GameObject thông qua bi n t nh:  o n mã c s a l i nh sau: using UnityEngine; using System.Collections; public class Example : MonoBehaviour { private Transform myTransform; void Awake() { myTransform = transform; } void Update () { myTransform.Translate(0,0,0); } } 51 T i u hóa mã ngu n: S d ng thành ph n c a GameObject thông qua bi n t nh:  M i g i m t thành ph n b t k c a GameObject, h th ng Unity s t n th i gian t qua thành ph n c tích h p GameObject cu i tr v k t qu thích h p,  ti t ki m kho n th i gian ó nên s d ng thành ph n c a GameObject thông qua bi n t nh 52 T i u hóa mã ngu n: S d ng m ng t nh  Các l p ArrayList hay Array r t d s d ng, có th d dàng thêm m t ph n t vào m ng s d ng ph ng th c, nh ng chi phí ph i tr h th ng th c hi n i u ó r t cao  Thay v y, vi c s d ng m ng c c u trúc s n s gi m b t công vi c cho h th ng, ph n t m ng có ki u dài c a m ng ã c xác nh t tr c, ch m t th i gian xác nh dài m ng c n thi t, bù l i ti t ki m c m t kho n chi phí l n 53 T i u hóa mã ngu n: S d ng m ng t nh  Chú ý: H n ch s d ng for, foreach, nên s d ng while t ct c t i u using UnityEngine; using System.Collections; public class Example : MonoBehaviour { private Vector3[] positions; void Awake() { positions= new Vector3[100]; int i = 0; while (i < 100) { positions[i] = Vector3.zero; i++; } } } 54 T i u hóa mã ngu n: Hi u ch nh t n s s d ng ph ng th c  tv n : Khi ng i ch i xa, k ch s tr ng thái ng t m th i  Gi i thích: o n mã s xét kho ng cách gi a ng i ch i k ch t i m i frame, nh ng i u ó không c n thi t, trung bình m t giây h th ng ch y t 30 n 40 khung hình, chi phí b l n nh ng hi u qu l i không cao using UnityEngine; using System.Collections; public class Example : MonoBehaviour { public Transform target; void Update () { if (Vector3.Distance(transform.position, target.position) > 100) return; } } 55 T i u hóa mã ngu n: Yield Coroutine  Các Coroutine cho phép ình tr hay làm tr vi c th c thi m t o n mã ho c m t ph ng th c, áp d ng x lý v n nêu using UnityEngine; using System.Collections; public class Example : MonoBehaviour { public Transform target; void Start() { StartCoroutine("TestDistance"); } IEnumerable TestDistance() { while (true) { if (Vector3.Distance(transform.position, target.position) > 100) { Debug.Log("Khong lam gi"); } yield return new WaitForSeconds(2); } } } 56 T i u hóa mã ngu n: Yield Coroutine  Gi i thích: Vi c th c thi vòng l p while s b ch m l i giây sau m i l n l p tác ng c a yield, vi c xét kho ng cách gi a ng i ch i k ch s c th c thi giây l n, ti t ki m c nhi u chi phí gi m nh công vi c cho h th ng 57 Giao di n Scene, Inspector, menu 58 K t lu n  Ngôn ng Unity  JavaScript  Syntax c a JavaScript game  i u n GameObject v i JavaScript  C#  Syntax c a C# game  i u n GameObject v i C#  So sánh C# JavaScript  L p components  Truy xu t thu c tính c a script  Các ph ng th c c b n  Debugging  T i u hóa mã ngu n 59 THANK YOU! [...]... JavaScript • Vi t JavaScript trong Unity – Unity có ch a các GameObjects, m i GameObject có nhi u thành ph n (componets), m i component có nhi u thu c tính (properties) – Chúng ta có th vi t code them/xóa các component – Chúng ta có th vi t code thay i giá tr properties c a c a các component – Logic: GameObject Component Property Ngôn ng - JavaScript Ngôn ng - JavaScript i u khi n gameobject • Bây gi , ta vi... using UnityEngine; using System.Collections; public class MyClass: MonoBehaviour{ private int count = 0; private void Start(){ // Event count = 100; } public int GetCount(){ //method return count; } } Ngôn ng – C# • i u khi n GameObject c a C# gi ng nh JavaScript GameObject Component Property • S ki n events trong C# gi ng s ki n trong JavaScript Ngôn ng – C# • i u khi n transform c a gameobject using UnityEngine;... chuy n trên tr c x function Update() { gameObject.transform.position.x += 1; } • H N • C M H S S R T B Ngôn ng - JavaScript • T ng t áp d ng v i các thành ph n khác nh : camera, light, rigidbody, sound, animation, guiText,… • Ví d : var other : GameObject; other.camera.fieldOfView = 45; Ngôn ng - JavaScript • Ví d code: “SetRotateObj.js” function Update() { //set gameobject move to (0,0,0) transform.position... - JavaScript Math Ví d Math.abs(-2.3) Math.acos(Math.SQRT1_2) Math.ceil(1.1) Giá tr tra l i rounded to 5 digits 2.3 0. 785 40 rad = 45° 2 Miêu t Math.cos(Math.PI/4) Math.exp(1) Math.floor(1.9) 0.70711 2.7 183 1 Math.max(1, -2) Math.min(1, -2) Math.pow(-3, 2) 1 -2 9 Math.random() 0.170 68 Math.round(1.5) 2 Làm tròn (e.g 1.5 rounds to 2) Math.sin(Math.PI/4) Math.sqrt(49) Math.tan(Math.PI/4) 0.70711 7 1 Sine... khóa “using” • Th vi n s d ng ph i có trên Mono ho c th viên Net • Ví d : using UnityEngine; using System.Collections; public class MyClass: MonoBehaviour { } Ngôn ng – C# • Class: bi n variable • C u trúc s d ng: private/public/static [=]; • Khi khai báo bi n, ph i khai báo lo i bi n • Ví d : using UnityEngine; using System.Collections; public class MyClass: MonoBehaviour { public... MyJavaScriptClass extends MonoBehaviour { // member variable // method } Javascript 22 Ngôn ng – C# • C# – Cú pháp trong C# • Class • Variable • Method – i u khi n GameObject v i C# Ngôn ng – C#  Có th d ng MS.Net C# vi t m i th trong Unity  Ph i có kinh nghiêm l p trình h  C# ng it ng OOP c biên d ch nhanh h n JavaScript  C# không gi ng JavaScript v cách biên d ch, JavaScript th c hi n t ng b... gameobject using UnityEngine; using System.Collections; public class MyClass: MonoBehaviour{ private int count = 0; void Update(){ //event gameObject.transform.position.x += 1; } void OnMouseDown(){ count +=1; Debug.Log(“Get count = ”+count); } } C# 31 So sánh C# - Javascript • V Unity Script Directives // Javascript example @script AddComponentMenu ("Transform/Follow Transform") class FollowTransform extends... myPrivateInt = 2; // **private** access is default, if access is unspecified public GameObject myObj; // a type is specified, but no value assigned // Javascript - type specification is not necessary: var myPublicInt = 1; // **public** access is default, if unspecified private var myPrivateInt = 2; // a private var var myObj : GameObject; // a type is specified, but no value assigned So sánh C# - Javascript...Ngôn ng - JavaScript • Ph n 1: JavaScript – Bi n và các lo i bi n (variable) – Hàm (Function) – S kiên (Event) – L p (Class) – i u khi n m t GameObject b ng JavaScript Ngôn g - JavaScript • Khai báo bi n: var [: Type] [= ]; Ví d : var n1; var n: int = 0; var value1 = 0.0; var value1: Number = 0.0; var name = “String variable”; ... Math.cos(Math.PI/4) Math.exp(1) Math.floor(1.9) 0.70711 2.7 183 Math.max(1, -2 ) Math.min(1, -2 ) Math.pow (-3 , 2) -2 Math.random() 0.170 68 Math.round(1.5) Làm tròn (e.g 1.5 rounds to 2) Math.sin(Math.PI/4)... : var d = new Date(2010,2,1); Ngôn ng - JavaScript Math Ví d Math.abs (-2 .3) Math.acos(Math.SQRT1_2) Math.ceil(1.1) Giá tr tra l i rounded to digits 2.3 0. 785 40 rad = 45° Miêu t Math.cos(Math.PI/4)... singleNameClass.golobalVariable = 0.0F Ngôn ng - Event • Ví d : Khi click chu t trái, s ki n “OnMouseDown” c g i • Bây gi ta vi t o n code: Debug.Log(“I click mouse-left”);//Javascript • Khi ó, s ki n

Ngày đăng: 20/04/2016, 17:48

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN