Tải bản đầy đủ (.doc) (55 trang)

PHÁT TRIỂN GAME ĐA NỀN TẢNG VỚI UNITY ENGINE

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.92 MB, 55 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Thái Mạnh Tuấn

PHÁT TRIỂN GAME ĐA NỀN TẢNG VỚI
UNITY ENGINE

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin


HÀ NỘI - 2015

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Thái Mạnh Tuấn

PHÁT TRIỂN GAME ĐA NỀN TẢNG VỚI
UNITY ENGINE

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin


Cán bộ hướng dẫn: TS. Nguyễn Ngọc Hóa

HÀ NỘI - 2015



LỜI CẢM ƠN

Đầu tiên, tôi xin gửi lời cảm ơn chân thành và sâu sắc tới TS. Nguyễn Ngọc Hóa,
người đã nhiệt tình hướng dẫn tôi trong quá trình thực hiện khóa luận tốt nghiệp.
Tôi cũng xin gửi lời cảm ơn tới tất cả các thầy, cô giáo trong trường Đại học
Công nghệ - Đại học Quốc gia Hà Nội, những người đã giảng dạy tôi trong suốt 4 năm
học vừa qua, truyền cho tôi những kiến thức vô cùng quan trọng và bổ ích. Đó chính là
hành trang giúp tôi vững bước trong tương lai.
Tôi xin cảm ơn Khoa Công nghệ thông tin, trường Đại học Công nghệ đã tạo
điều kiện tốt cho tôi thực hiện đề tài này.
Cuối cùng, mặc dù tôi đã cố gắng hoàn thành khóa luận một cách tốt nhất trong
khả năng cho phép, tuy nhiên vẫn không thể tránh khỏi những thiếu sót. Tôi rất mong
sự cảm thông, đóng góp và chỉ bảo của các thầy, cô và các bạn.
Sinh viên thực hiện
Thái Mạnh Tuấn


Khóa luận tốt nghiệp – Thái Mạnh Tuấn

LỜI CAM ĐOAN
Tôi xin cam đoan khóa luận này là do tôi thực hiện dưới sự hướng dẫn của TS.
Nguyễn Ngọc Hóa. Tất cả các tham khảo từ những nghiên cứu liên quan đề được nêu
nguồn gốc một cách rõ ràng từ danh mục tài liệu tham khảo trong khóa luận. Khóa
luận không sao chép tài liệu, công trình nghiên cứu của người khác mà không chỉ rõ vê
mặt tài liệu tham khảo.
Hà Nội, ngày 28 tháng 04 năm 2015
Sinh viên

Thái Mạnh Tuấn


2


Khóa luận tốt nghiệp – Thái Mạnh Tuấn

TÓM TẮT NỘI DUNG ĐỀ TÀI
Ngày nay, với sự phát triển và lan rộng một cách nhanh chóng của các thiết bị như PC,
smartphone, việc chơi game trên các thiết bị này đã trở nên hết sức phổ biến. Các thiết bị này
được chạy trên các nền tảng khác nhau: iOS, Android, Windows Phone, Windows, Mac...
Chính điều này đã làm cho việc đưa một ứng dụng trò chơi (gọi tắt là game) lên nhiều nền
tảng khác nhau trở nên khác tốn công sức. Tuy nhiên, với sự xuất hiện của các Game Engine
như libGDX, Cocos2dx, Unity... thì việc phát triển các game đa nền tảng đã trở nên hết sức
đơn giản. Game Engine hỗ trợ các nhà phát triển có thể viết game một cách nhanh chóng và
đơn giản, có khả năng tái sử dụng cao. Hầu hết các Engine này đều có bản miễn phí, vì vậy
không chỉ các công ty chuyên nghiệp mà ngay cả những người mới bắt đầu cũng có thể sử
dụng.
Khóa luận tôi thực hiện lựa chọn Unity Engine để tìm hiểu và xây dựng một game chạy
trên nhiều nền tảng khác nhau. Đây là một game-engine tốt và dễ tìm hiểu cho những người
mới bắt đầu và có ít kinh nghiệm phát triển. Mục tiêu đặt ra của khóa luận này là tìm hiểu các
tính năng chính của Unity Engine để xây dựng game mô phỏng lại thế chiến thứ 2, được đặt
tên là Nations War, với tiêu chí có thể hoạt động trên nhiều nền tảng khác nhau.
Khóa luận bao gồm 4 chương, thể hiện các nội dung chính như sau:
-

Chương 1. Tổng quan về đề tài: giới thiệu tổng quát về đề tài và lý do lựa chọn đề

tài, mục tiêu và phạm vi nghiên cứu đề tài
Chương 2. Unity và các công nghệ sử dụng: đề cập đến các tính năng và khái niệm
quan trọng trong Unity, giới thiệu các đặc tính và cách quản lý đối với SQLite, C#
Chương 3. Phát triển game Nations War: áp dụng các tính năng đã tìm hiểu trong

Unity để xây dựng game 2D Nations War, các vấn đề gặp phải và giải pháp.
Chương 4. Tổng kết: rút ra các nhận xét về việc sử dụng Unity để phát triển game đa
nền tảng, các mặt ưu điểm và hạn chế trong khi thực hiện khóa luận

3


Khóa luận tốt nghiệp – Thái Mạnh Tuấn

MỤC LỤC
LỜI CAM ĐOAN.......................................................................................................................................2
TÓM TẮT NỘI DUNG ĐỀ TÀI...................................................................................................................3
DANH SÁCH HÌNH VẼ..............................................................................................................................4
CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI.......................................................................................................2
CHƯƠNG 2. UNITY VÀ CÁC CÔNG NGHỆ SỬ DỤNG................................................................................4
CHƯƠNG 3. PHÁT TRIỂN GAME NATIONS WAR...................................................................................18
CHƯƠNG 4. TỔNG KẾT.........................................................................................................................46
TÀI LIỆU THAM KHẢO VÀ NGHIÊN CỨU................................................................................................47

DANH SÁCH HÌNH VẼ
Hình 2.1 - Logo của Unity Engine............................................................................................................4
Hình 2.2 - Hình ảnh trong game được phát triển bởi CryEngine............................................................6
Hình 2.3 - Hình ảnh trong game được phát triển bởi Unity Engine........................................................6
Hình 2.4 - Giao diện các panel trên Unity Editor.....................................................................................9
4


Khóa luận tốt nghiệp – Thái Mạnh Tuấn
Hình 2.5 - Scene control tools và cụm nút Play.....................................................................................10
Hình 2.6 - Transform Component.........................................................................................................11

Hình 2.7 - Các Component có thể add thêm.........................................................................................11
Hình 2.8 - Tags......................................................................................................................................12
Hình 2.9 - Properties của một camera..................................................................................................13
Hình 2.10 - SQLiteManager...................................................................................................................16
Hình 3.11 - Biểu đồ Use Case hệ thống.................................................................................................19
Hình 3.12 - Use Case Play game............................................................................................................21
Hình 3.13 - Use Case Pause game.........................................................................................................22
Hình 3.14 - Use Case Continue game....................................................................................................23
Hình 3.15 - Use Case Quit game...........................................................................................................23
Hình 3.16 - Use Case Highscore............................................................................................................24
Hình 3.17 - Bảng Stats lưu giá trị thuộc tính của từng loại lính.............................................................25
Hình 3.18 - Bảng ModeSelection lưu lựa chọn chơi của người dùng....................................................25
Hình 3.19 - Bảng HighScore lưu điểm cao trong game.........................................................................26
Hình 3.20 - Bảng Sound lưu các thiết lập cài đặt âm thanh..................................................................26
Hình 3.21 - Tạo hình các chủng loại lính trong game............................................................................27
Hình 3.22 - Sprite cần thiết để xây dựng nhân vật................................................................................28
Hình 3.23 - Tạo xương cho nhân vật sử dụng Puppet2D......................................................................29
Hình 3.24 - Xây dựng animation cho nhân vật.....................................................................................30
Hình 3.25 - Animator và State transaction............................................................................................31
Hình 3.26 - Sử dụng Control Freak để tạo phím điều khiển ảo trong game..........................................33
Hình 3.27 - Collider trong game............................................................................................................38
Hình 3.28 - Một box giao diện được thiết kế bằng NGUI......................................................................39
Hình 3.29 - Cài đặt kết nối với server Photon.......................................................................................40
Hình 3.30 - Giao diện kết nối trong game.............................................................................................41
Hình 3.31 - Giao diện hiển thị phòng và chức năng tạo phòng, tham gia phòng..................................42
Hình 3.32 - Màn hình bắt đầu của game...............................................................................................43
Hình 3.33 - Màn hình xem thông tin nhân vật......................................................................................44
Hình 3.34 - Màn hình lựa chọn nhân vật và màn chơi..........................................................................44
Hình 3.35 - Màn hình chính của trò chơi..............................................................................................45


5



CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI
1.1

Giới thiệu đề tài
Ngày nay, với sự phát triển và lan rộng một cách nhanh chóng của các thiết bị

như PC, mobile, việc chơi game trên các thiết bị này đã trở nên hết sức phổ biến. Các
thiết bị này được chạy trên các nền tảng khác nhau: iOS, Android, Windows Phone,
Windows, Mac... Chính điều này đã làm cho việc đưa 1 tựa game lên nhiều nền tảng
khác nhau trở nên khác tốn công sức. Tuy nhiên, với sự xuất hiện của các Game
Engine như Unreal Engine, Cocos2dx, Unity... thì việc phát triển các game đa nền tảng
đã trở nên hết sức đơn giản. Các engine này giống như một hệ thống cung cấp cho ta
đầy đủ các vật liệu và cách thức sử dụng, kết hợp chúng. Từ đó ta hoàn toàn có thể
thiết kế một game hoàn chỉnh một cách đơn giản.
Nổi lên trong số các engine hiện nay đó chính là Unity Engine. Đây là một
Engine có chất lượng đồ họa vừa đủ, không yêu cầu cấu hình quá cao. Bên cạnh đó,
Unity có những ưu điểm lớn mà không phải engine nào cũng có như: hỗ trợ đa nền
tảng, dễ sử dụng, có phiên bản miễn phí và trả phí...
Từ xu hướng thực tiễn trên, tôi đã quyết định xây dựng đề tài: “Phát triển game
đa nền tảng sử dụng Unity Engine”. Đề tài tập trung vào việc giới thiệu các thành
phần, tính năng của Unity Engine cũng như các bước để phát triển một game hoàn
chỉnh. Từ đó, vận dụng kiến thức thu được để xây dựng gamemô phỏng lại thế chiến
thứ 2, được đặt tên là Nations War, với tiêu chí có thể hoạt động trên nhiều nền tảng
khác nhau.
1.2
Mục đích, mục tiêu và phạm vi nghiên cứu

1.2.1 Mục đích
Nghiên cứu các tính năng và cách sử dụng Unity để phát triển một game hoàn
chỉnh có thể chạy trên nhiều nền tảng khác nhau.
1.2.2 Mục tiêu
Xây dựng được game mô phỏng lại thế chiến thứ 2, được đặt tên là Nations
War, với tiêu chí có thể chạy được trên nhiều nền tảng: PC, Android, Web Player,


Flash ..., sử dụng SQLite để lưu trữ dữ liệu cục bộ và có thể được quản lý từ hệ thống
phát triển dựa trên máy chủ Photon.
Người chơi tương tác với game thông qua các phương thức tương tác thông dụng
trên các thiết bị di động thông minh (chạm - touch) hoặc thông qua bàn phím
1.2.3 Phạm vi nghiên cứu
Nghiên cứu các tính năng của Unity
Nghiên cứu cách sử dụng một số plugin thông dụng của Unity: NGUI,
SimpleSQL


CHƯƠNG 2. UNITY VÀ CÁC CÔNG NGHỆ SỬ DỤNG
1.3
Unity Engine
1.3.1 Tổng quan về Game Engine
Một game engine là một phần mềm được viết để thiết kế và phát triển video
game, hiểu đơn giản nó là loại phần mềm trung gian kết nối tương tác của nhiều ứng
dụng trong cùng 1 hệ thống với nhau. Có rất nhiều loại game engine dùng để thiết kế
game cho các hệ máy như hệ consoles hay máy tính cá nhân(PC). Chức năng cốt lõi
của game engine phần lớn nằm trong công cụ dựng hình (kết xuất đồ họa) cho các hình
ảnh 2 chiều (2D) hay 3 chiều(3D), công cụ vật lý (hay công cụ tính toán và phát hiện
va chạm), âm thanh, mã nguồn, hình ảnh động (animation), trí tuệ nhân tạo, phân
luồng, tạo dòng dữ liệu xử lý, quản lý bộ nhớ, dựng ảnh đồ thị, và kết nối mạng. Quá

trình phát triển game tiết kiệm được rất nhiều thời gian và kinh phí vào việc tái sử
dụng và tái thích ứng một engine để tạo nhiều game khác nhau [1].
Hiện nay có rất nhiều game engine được phát triển: LibGDX, Cocos2d-x,
CryEngine, Unreal Engine, Unity Engine... Hầu hết các engine này đều hỗ trợ đa nền
tảng và sử dụng các ngôn ngữ lập trình bậc cao như C++, C#.
1.3.2 Giới thiệu chung về Unity Engine
Unity là một game engine đa nền tảng được phát triển bởi đội ngũ Unity
Technologies. Hiện tại Unity Technologies đã cho ra thị trường đến bản Unity 5.

Hình 2.1 - Logo của Unity Engine

Unity có thể được sử dụng để phát triển game cho 21 nền tảng, có thể chuyển đổi
với nhau dễ dàng: iOS, Android, Windows Phone 8, BlackBerry 10, Tizen, Windows,
Mac, Linux, Web Player, Flash, các hệ máy console như PS hay Xbox, Wii.


Website: />
1.3.3 Sự hình thành và phát triển của Unity Engine
Ban đầu, Unity được viết bởi Joachim Ante vào năm 2001. Sau khi thành lập
công ty vào năm 2005, Unity được tung ra phiên bản 1.0 với phương châm
“Democratizing games development”. Ở phiên bản này, Unity còn hết sức đơn giản và
gần như chỉ hướng tới các nhà làm game không chuyên với các tính năng cơ bản.
Unity hỗ trợ cho iPhone vào năm 2008 và Android vào năm 2010. Các phiên bản về
sau, Unity được cải tiến, nâng cấp và tích hợp nhiều thành phần, công nghệ mạnh mẽ
khác để đủ sức phát triển một serigame. Hiện nay, Unity đã ra đến phiên bản thứ 5, là
một phiên bản lớn nhất bao gồm nhiều tính năng mạnh mẽ. Có thể thấy Unity được
phát triển với tốc độ rất nhanh, thể hiện qua việc ngày càng có nhiều cá nhân và công
ty sử dụng Unity để phát triển các tựa game của mình.
Unity chắc chắn không phải một engine đứng đầu về mặt đồ họa. Hiện nay,
CryEngine với khả năng thể hiện đồ họa 3D chân thực của mình vẫn đang dẫn đầu. Có

thể thấy rõ điều đó thông qua các game đình đám được phát triển bởi engine này như
Crysis 3, The Collectables, Ryse: Son of Rome. Engine này đòi hỏi cấu hình khá cao,
cũng như giá thành để sử dụng là không nhỏ. Tuy không thể so sánh được về mặt đồ
họa nhưng chất lượng hình ảnh mà Unity đem lại cũng là vừa đủ để đáp ứng người
dùng phổ thông.


Hình 2.2 - Hình ảnh trong game được phát triển bởi CryEngine

Hình 2.3 - Hình ảnh trong game được phát triển bởi Unity Engine

Về mặt tính năng, thật sự không có một engine nào hoàn toàn nổi trội so với các
engine khác. Unity chứng tỏ được lợi thế nhất định của mình đó chính là thời gian.
Nhà phát triển hoàn toàn có thể tạo một game có độ phức tạp cao trong thời gian ngắn.
Cùng với đó là các đặc điểm khiến Unity được ưa chuộng như có gói Free dành cho
người dùng cá nhân và công ty có thu nhập dưới 100.000 USD/năm, hỗ trợ lập trình
bằng nhiều ngôn ngữ: C#, Javascript, Boo. Bên cạnh đó các thư viện như Mono,


OpenGL, physics được tích hợp một cách tự động và trực quan, có hỗ trợ Networking.
Cuối cùng, Unity có một cộng đồng sử dụng lớn mạnh, luôn sẵn sàng giải đáp mọi
khúc mắc.
1.3.4 Các tính năng
General
Lựa chọn viết các script bằng C#, Javascript, Boo.
One-click Deployment: lựa chọn nền tảng để build game thông qua 1 nút và có
thể chuyển đổi giữa các nền tảng với nhau dễ dàng.
Action-Packed Physics: tương tác vật lý chân thực với NVIDIA PhysX 3 và
Box2D physics engine.
Optimized Graphics: Unity có khả năng tối ưu hóa đồ họa cho cả DirectX và

OpenGL. Bên cạnh đó là hệ thống Mesh, Partical System, Advance lighting, Shadow
giúp tạo hiệu ứng.
Animation
Intergrated Animation Editor: Unity tích hợp sẵn một cửa sổ giúp nhà phát triển
dễ dàng chỉnh sửa các animation của nhân vật.
Animation state: Mỗi một trạng thái animation của nhân vật được gọi là một
state, và Unity quản lý các state này bởi State machine – máy trạng thái.
Blend Trees: giúp nhân vật có khả năng di chuyển liên tục giữa các trạng thái
như Running, Walking...
Sync Layers: Có khả năng tạo nhiều layer – các lớp chứa các trạng thái khác
nhau trong một nhân vật
Graphics
Khả năng render hình ảnh với nhiều hỗ trợ
Hỗ trợ Dynamic Font
Static Batching : CPU không tốn thời gian tạo lại cái batches giống nhau
2D
Automatic Sprite Slicing: Unity sẽ cắt các spritesheet một cách tự động. Người
dùng cũng có thể tùy chỉnh lại các sprite theo ý muốn của mình.
Automatic Sprite Animation: Có khả năng tạo animation bằng cách kéo thả một
loạt các sprite.
2D Physics: Hỗ trợ va chạm, ma sát, trọng lực, độ đàn hồi...
3D Physics
Multithreaded Simulation: giả lập multithread


-

Phát hiện các va chạm một cách chính xác

Optimization

Occlusion Culling: tối ưu hiệu năng chương trình, chỉ render các Object cần
thiết
Profiler: Profiler giúp kiểm soát được lượng CPU, GPU sử dụng của hệ thống,
đánh giá lượng bộ nhớ được sử dụng
Audio
Có khả năng play audio khi xảy ra events bằng cách sử dụng các parametter
Tùy chỉnh các hiệu ứng
Hỗ trợ nhiều định dạng audio khác nhau
Other
Hỗ trợ Multiplayer Networking
Hỗ trợ khả năng tìm đường đi (Pathfinding) trong game 3D
Có khả năng stream video và phát trong game
1.3.5 Giao diện làm việc của Unity Engine
Giao diện của Unity Editor có khả năng điều hướng rất dễ dàng. Phần chính của
editor bao gồm 5 panel chính:
Scene view: nơi mà ta sẽ xây dựng game, điều chỉnh các Object dưới dạng 2D và
3D
Game view: nơi xem trước game. Panel Gameview được active khi bấm nút Play
trên Editor, cho phép ta chơi thử game ngay trên Editor. Gameview còn cho phép lựa
chọn độ phân giải để hiển thị.
Hierarchy: liệt kê toàn bộ GameObject có trong Scene view theo thứ tự abc.
Hierarchy còn thể hiện quan hệ parent giữa các GameObjectvới nhau.
Project Panel: liệt kê toàn bộ assets đang làm việc, cho ta khả năng truy cập
nhanh tới mọi thứ để xây dựng game: scripts, texture, model, audio...
Inspector: Hiển thị toàn bộ các thuộc tính của object, assets, panel mà ta đang lựa
chọn. Các thuộc tính trên Inspector thay đổi ngay khi ta lựa chọn 1 thứ khác


Hình 2.4 - Giao diện các panel trên Unity Editor


Ngoài ra trên panel cũng có 1 số nút bấm:
-

Play
Pause
Play next frame
Các nút này có tác dụng để chạy thử game. Bên góc trái của Editor có 1 cụm nút

gọi là Scene control tools, cho phép ta thu nhỏ, phóng to, xoay, di chuyển các
GameObject.


Hình 2.5 - Scene control tools và cụm nút Play

Ta hoàn toàn có thể thay đổi vị trí các Panel bằng cách kéo thả, hoặc mở thêm
các Panel khác.

1.3.6 Một số khái niệm cơ bản
GameObjects
Tất cả các đối tượng trong game được gọi là GameObjects. Các GameObjects
cần có các thuộc tính khác nhau, để trở thành Character, Enviroment, Effect... Nói
cách khác, GameObjects giống như một đối tượng, có thể chứa nhiều thành phần khác
nhau là các Components. Tùy thuộc vào loại đối tượng cần tạo, ta sẽ thêm vào các
Components thích hợp vào.
Components
Components được coi là các mảnh ghép chức năng của một GameObject. Mặc
định mỗi GameObjects sẽ có một Transform Component. Transform quy định vị trí,
góc quay cũng như tỉ lệ scale của GameObjects đó.



Hình 2.6 - Transform Component

Khi ta click vào một GameObject, ở panel Inspector sẽ có nút Add Component.
Thông qua đó có thể thêm vào rất nhiều loại Component khác nhau vào GameObject.

Hình 2.7 - Các Component có thể add thêm

Trên mỗi Component đều có các thông số riêng có thể tùy chỉnh cho phù hợp. Có
2 kiểu thông số chính: dạng giá trị (values) và dạng tham chiếu (reference). Dạng
Values được dùng để khai báo giá trị, còn dạng References được dùng để liên kết tới
các thuộc tính cũng như Objects khác.
Tags
Tag là một từ khóa dùng để liên kết 2 hoặc nhiều GameObjects với nhau. Vd ta
có thể sử dụng tag “Enemy” cho tất cả các GameObject quân địch. Tag có thể sử dụng
để tìm một hoặc nhiều GameObject xác định.


Hình 2.8 - Tags

Assets
Assets là tập hợp tất cả các tài nguyên trong game: Texture, Audio, GameObject,
Script... Assets có thể được thêm vào bằng cách kéo thả hoặc import.
Unity có một cửa hàng riêng để bán và cung cấp các loại Assets. Ta có thể tải về
các Asset thích hợp thông qua Assets Store.
Scene
Một scene chính là một vùng nội dung hiển thị trên Scene view. Với mỗi scene
được tạo, ta có thể coi chúng như một map, một màn chơi hoặc một vùng giao diện
hiển thị.
Prefabs
Khi ta có một GameObject cần sử dụng nhiều lần, có thể biến nó thành một

prefab để tái sử dụng bằng cách kéo thả GameObject đó từ Hierarchy vào Project
Panel.
Ta có thể kéo thả một prefabs vào Hierachy hoặc Scene view để tạo ra nhiều
GameObject giống nhau. Khi thay đổi thông số của prefab, thông số của các
GameObject này cũng tự động thay đổi theo.
Camera
Cũng giống như camera trong phim ảnh, camera trong Unity được dùng để hiển
thị các GameObject. Cần có ít nhất 1 camera trong 1 scene, tuy nhiên cũng có thể tạo
nhiều camera khác nhau. Ta có thể chuyển động các camera, hoặc điều khiển chúng
với các tương tác vật lý.


Hình 2.9 - Properties của một camera

Scripts
Scripts là một thành phần cực kì quan trọng, không thể không nhắc đến. Nếu như
các Component Sprite hay Texture giúp tạo hình ảnh cho GameObject thì Scripts
giống như bộ não. Tất cả các kịch bản của game đều được viết trong các Scripts này.
Ta có thể lựa chọn viết script bằng C#, Javascript hoặc Boo. Tên của script bắt buộc
phải trùng với tên class được khai báo bên trong. Với mỗi GameObject, ta có thể add
một hoặc nhiều Script khác nhau.
Để chỉnh sửa Scripts, Unity có hỗ trợ một IDE là MonoDeveloper. Tuy nhiên
hoàn toàn có thể sử dụng một IDE khác để chỉnh sửa các script này.


Vòng đời của một Scripts được tính kể từ khi chạy Scene cho tới khi Scene tắt
hoặc chuyển qua Scene khác
Awake
Start


Update

F

Tắt hoặc
chuyển Scenes

T
Destroy

1.3.7 Kiến trúc tổng quan của Unity Engine
Unity sử dụng UnityAPI để hỗ trợ việc viết các scripts. API này cung cấp khá
nhiều phương thức hỗ trợ các đối tượng cũng như thành phần trong game. Một script
trong Unity mặc định được kế thừa lớp MonoBehavior để có thể thêm vào vào một
GameObject.
Một số lớp quan trọng có thể kể đến trong UnityAPI: MonoBehaviour,
GameObject, Transform, Rigidbody, Collider, Input ...

UnityAPI

Collider
GameObject

MonoBehaviour

Transform

Scripts

Rigidbody



Mỗi Script được viết sẽ bắt đầu chạy từ khi scene được chạy tới khi tắt hoặc
chuyển qua scene khác. Một chu kì của Script trải qua thứ tự sau: Awake, Start,
Update, Destroy
Awake(): được gọi trước khi có bất kì frame nào được chạy
Start(): được gọi sau khi frame thứ nhất được chạy
Update(): gọi liên tục ở mỗi frame, sau Start()
Destroy(): gọi khi script bị hủy.
Ngoài ra còn có hàm FixedUpdate – gọi sau mỗi khoảng thời gian cố định (0.02s)

1.4 SQLite
1.4.1 Giới thiệu về SQLite
SQLite là một hệ quản trị CSDL tương tự MySQL, gọn, nhẹ, không cần server và
cấu hình. Sử dụng SQLite, ta không cần quan tâm đến các thông số như user,
password hay phân quyền.
SQLite không thích hợp cho các hệ thống lớn, tuy nhiên với các hệ thống vừa và
nhỏ, đặc biệt là lưu trữ dữ liệu trong game thì SQLite tỏ rõ được thế mạnh của nó.
SQLite truy cập các file lưu trữ của nó một cách trực tiếp và đảm bảo tính vẹn toàn dữ
liệu.
1.4.2 Các đặc tính của SQLite
Không đòi hỏi server riêng biệt để chạy (serverless)
Không cần config (zero-configuration )
Dữ liệu được lưu trữ trong 1 file duy nhất
Rất nhỏ, chỉ từ 250KB tới 400KB
Không phụ thuộc bên ngoài
Đảm bảo tính ACID
Có thể chạy trên Windows, Linux, iOS, Android...
1.4.3 Quản lý và thao tác với Plugin SQLiteManager trên Firefox
Để quản lý dữ liệu trong SQLite, ở đây ta sử dụng một plugin trên Firefox là

SQLiteManager.
Giao diện của plugin này như sau:


Hình 2.10 - SQLiteManager

Plugin này cung cấp cho ta khả năng tạo, xóa bảng cũng như thêm bớt các giá trị
một cách trực quan và tiện lợi

1.5

C#
C# là ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft, là sự

dung hòa giữa C++ và Java. Ở đề tài này, ta lựa chọn C# để viết các script vì tính tiện
dụng cũng như tường minh của nó.



×