Tải bản đầy đủ (.pdf) (48 trang)

Nghiên cứu công nghệ đa nền tảng unity 3d và phát triển ứng dụng hỗ trợ em tự học ghép vần

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 (1.79 MB, 48 trang )

LỜI CẢM ƠN
Em xin chân thành cảm ơn bộ môn Công nghệ lập trình và ứng dụng, khoa
Công nghệ thông tin, Trường Đại học Công nghệ thông tin và truyền thông Thái
nguyên đã tạo điều kiện thuận lợi cho em thực hiện báo cáo này. Em xin chân
thành cảm ơn Thầy Nguyễn Hải Minh là người đã tận tình hướng dẫn, chỉ bảo cho
em trong suốt thời gian thực hiện báo cáo đồ án tốt nghiệp. Em cũng xin gửi lời
cảm ơn sâu sắc đến quý thầy cô trong Khoa và Bộ môn đã tận tình giảng dạy,
trang bị cho em những kiến thức quý báu trong những năm học vừa qua. Mặc dù
em đã cố gắng hoàn thành báo cáo trong phạm vi và khả năng cho phép, nhưng
chắc chắn sẽ không tránh khỏi những thiếu sót, kính mong sự cảm thông và tận
tình chỉ bảo của quý thầy cô và các bạn.

Thái Nguyên, tháng 5 năm 2017
Sinh Viên

Hoàng Quốc Bảo

1


LỜI CAM ĐOAN
Em xin cam đoan rằng đây là đồ án của em, có sự hỗ trợ từ giáo viên hướng
dẫn T.S Nguyễn Hải Minh - bộ môn lập trình ứng dụng, trường Đại Học Công nghệ
thông tin và truyền thông Thái Nguyên, Đại Học Thái Nguyên. Em xin cam đoan
các nội dung nghiên cứu và kết quả trong đề tài này là trung thực và không sao chép
từ các báo cáo thực tập và đồ án khác trước đây. Những số liệu trong các bảng biểu
phục vụ cho việc phân tích, nhận xét, đánh giá được chính bản thân thu thập từ các
nguồn khác nhau. Nếu có bất kỳ sự gian lận nào em xin hoàn toàn chịu trách nhiệm
trước Hội đồng.
Thái Nguyên, tháng 5 năm 2017
Sinh Viên



Hoàng Quốc Bảo

2


MỤC LỤC
MỤC LỤC .............................................................................................................. 3
MỤC LỤC HÌNH ẢNH .......................................................................................... 5
LỜI NÓI ĐẦU ........................................................................................................ 7
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT ........................................................................ 8
1.1 Đa nền tảng và các hệ điều hành trên thiết bị di động ..................................... 8
1.1.1 Giới thiệu về Windows Phone .................................................................. 8
1.1.2 Giới thiệu hệ điều hành Android .............................................................. 9
1.1.3 Giới thiệu về iOS ................................................................................... 10
1.2 Game Engine Unity3D ................................................................................. 11
1.2.1 Lý do chọn Unity Engine ....................................................................... 12
1.2.2 Unity Engine ......................................................................................... 13
1.2.3 Tổng quan kiến trúc engine Unity .......................................................... 23
1.3 Sơ lược về ngôn ngữ lập trình C# ................................................................. 26
1.4 Giới thiệu công cụ Visual studio................................................................... 26
1.5 Tổng Quan về phân tích thiết kế hướng đối tượng sử dụng UML ................. 27
1.5.1 Các thành phần của UML ....................................................................... 27
1.5.2 Biểu đồ Usecase ..................................................................................... 28
1.5.3 Biểu đồ lớp(class diagram) ..................................................................... 28
1.5.4 Biểu đồ trình tự ...................................................................................... 29
CHƯƠNG 2: KHẢO SÁT MỘT SỐ GAME MOBILE ĐANG CÓ TRÊN THỊ
TRƯỜNG .............................................................................................................. 30
2.1 Khái niệm Game mobile ............................................................................... 30
2.2 Đặc điểm của game mobile........................................................................... 30

2.2.1 Tính cơ động và tiện lợi ......................................................................... 30
2.2.2 Chi phí thấp............................................................................................ 30
2.2.3 Chất lượng ............................................................................................. 31
2.2.4 Phù hợp với đối tượng nữ giới và trẻ em ................................................ 31
2.2.5 Phong phú và có giá trị trải nghiệm cao .................................................. 32
2.3 Một số game tương tự trên thị trường ........................................................... 32
2.3.1 Game Ghép chữ và đánh vần .................................................................. 32
3


2.3.2 Game Học cách đánh vần và viết............................................................ 34
2.4 Đề xuất ý tưởng ........................................................................................... 35
CHƯƠNG 3: PHÂN TÍCH – THIẾT KẾ............................................................... 36
3.1 Yêu cầu về trò chơi ...................................................................................... 36
3.2 Phân tích yêu cầu về dữ liệu ......................................................................... 36
3.3 Phân tích các yêu cầu chức năng, biểu đồ trường hợp có sẵn ........................ 36
3.3.1 Tác nhân ................................................................................................ 36
3.3.2 Các biểu đồ Usecase............................................................................... 37
3.3.3 Biểu đồ hoạt động .................................................................................. 38
3.3.4 Biểu đồ trình tự ...................................................................................... 39
3.3.5 Biểu đồ lớp............................................................................................. 40
3.3.6 Biểu đồ cộng tác.................................................................................... 40
CHƯƠNG 4: XÂY DỰNG ỨNG DỤNG GAME XẾP CHỮ ................................ 41
4.1 Giới thiệu game ............................................................................................ 41
4.2 Xây dựng game ............................................................................................ 41
4.3 Một số hình ảnh trong game ......................................................................... 44
4.4 Cách chơi ..................................................................................................... 46
KẾT LUẬN VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN ............................................ 47
TÀI LIỆU THAM KHẢO ..................................................................................... 48


4


MỤC LỤC HÌNH ẢNH
Hình 1.1 Hệ điều hành Windows Phone 7................................................................ 9
Hình 1.2 Giới thiệu android ..................................................................................... 9
Hình 1.3 Giới thiệu iOS ......................................................................................... 10
Hình 1.4 iOS 8 ra mắt với nhiều tính năng hấp dẫn ................................................ 11
Hình 1.5 Logo Unity3D ......................................................................................... 13
Hình 1.6 Giao diện Editer của Unity3d .................................................................. 15
Hình 1.7 Các nút điều khiển .................................................................................. 15
Hình 1.8 Chọn đối tượng trong Scene và Hierrarchy ............................................. 16
Hình 1.9 Cửa sổ Inspector hiển thị thông tin một đối tượng ................................... 17
Hình 1.10 Asset trong Unity .................................................................................. 19
Hình 1.11 Các scene của Unity ............................................................................. 20
Hình 1.12 Kéo tài nguyên vào Scene để sử dụng ................................................... 20
Hình 1.13 Các thành phần trong đối tượng Camera ............................................... 21
Hình 1.14 Cách tạo file script mới ......................................................................... 21
Hình 1.15 Một file script đang gắn vào đối tượng .................................................. 22
Hình 1.16 Material và Shader ................................................................................ 23
Hình 1.17 Tổng quan kiến trúc Unity .................................................................... 24
Hình 1.18 Chu kỳ sống của thành phần script ........................................................ 25
Hình 1.19 Hình ảnh biểu tượng của C# .................................................................. 26
Hình 1.20 Hình ảnh Visual Studio ......................................................................... 26
Hình 2. 1 Đồ họa game mobile đã được cải tiến rất nhiều ...................................... 31
Hình 2. 2 Các chợ ứng khổng lồ luôn sãn sang phục vụ người dùng ...................... 32
Hình 2. 3 Game Ghép Chữ Và Đánh Vần .............................................................. 32
Hình 2.4 Giao diện bắt mắt .................................................................................... 33
Hình 2.5 Nhưng ngôn ngữ lại là tiếng Anh ............................................................ 33
Hình 2.6 Game học cách đánh vần và viết ............................................................. 34

Hình 2.7 Giao diện của trò chơi ............................................................................. 34
Hình 2.8 Ngôn ngữ tiếng Anh và Tây Ban Nha ..................................................... 35
Hình 3. 1 Tác nhân Player ..................................................................................... 36
Hình 3.2 Usecase hệ thống. ................................................................................... 37
5


Hình 3.3 Biểu đồ trình tự ....................................................................................... 39
Hình 3.4 Biểu đồ lớp ............................................................................................. 40
Hình 3.5 Biểu đồ cộng tác ..................................................................................... 40
Hình 4.1. Giao diện trò chơi .................................................................................. 44
Hình 4.2. Màn chơi 1 ............................................................................................. 44
Hình 4.3.Trả lời chính xác. .................................................................................... 45
Hình 4.4. Chọn màn chơi. ...................................................................................... 45
Hình 4.5. Xác nhận thoát trò chơi. ......................................................................... 46
Hình 4.6. Giao diện màn chơi. ............................................................................... 46

6


LỜI NÓI ĐẦU
Hiện nay, việc lập trình game mobile không còn quá xa lạ với nhiều người ,
đặc biệt sau sự thành công của Nguyễn Hà Đông với trò chơi “Flapy Bird” làm mưa
làm gió 1 thời gian dài trên cộng đồng mạng vì độ khó chơi của nó. Với thị trường
Việt Nam khá rộng lớn với hơn 90 triệu và đa phần là dân số trẻ nên thị trường của
game mobile cực kỳ rộng lớn, với thị trường rộng lớn như thế thì doanh thu mang
lại cũng cực kỳ lớn, năm 2014 đã hơn 500 tỷ và sẽ tăng dần theo thời gian, với số
vốn đầu tư ban đầu không cần nhiều, một chút kiến thức về đồ họa, một ít kinh
nghiệm về lập trình cùng với một chiếc PC tầm trung là bạn có thể tự mình tạo ra
những sản phầm game của riêng mình.

Ở Việt Nam hiện tại có số lượng không hề nhỏ các startup làm game, có thể
kể đến như : Joy Entertainment, Divmob, ColorBox, v.v..., ngoài ra còn có rất nhiều
những lập trình viên độc lập. Với suy nghĩ có kiến thức thì nên vận dụng nó một
cách triệt để cộng thêm việc yêu thích những tựa game nổi tiếng trên thế giới, em đã
bắt đầu đi tìm hiểu và nghiên cứu những cách lập trình game một cách thực sự
nghiêm túc và đã có một số kinh nghiệm nhất định. Khi nhận đề tài, em nhận thấy
việc phát triển game mobile với các công cụ hỗ trợ - các game engine - ở trường
ĐH CNTT & TT Thái Nguyên còn khá mới mẻ cho nên em nhận đề tài: “Nghiên
cứu công nghệ đa nền tảng Unity 3D và phát triển ứng dụng hỗ trợ em tự học
ghép vần”. Bố cục bài báo cáo gồm 4 chương:
Chương 1: Cơ sở lý thuyết
Chương 2: Khảo sát một số game mobile đang có trên thị trường
Chương 3: Phân tích thiết kế
Chương 4: Xây dựng ứng dụng hỗ trợ em tự học ghép vần.

7


CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Đa nền tảng và các hệ điều hành trên thiết bị di động
Đa nền tảng theo cách hiểu đơn giản thì đa nền tảng sẽ được hiểu là nhiều
nền tảng, vậy ngôn ngữ nào có thể chạy được từ 2 nền tảng trở lên thì có thể gọi là
ngôn ngữ lập trình đa nền tảng? Đây có thể là giải thích đúng nhưng chưa hoàn
toàn. Như chúng ta biết, ngày nay khi các hệ điều hành dần trở nên phổ biến, đa
dạng và ngày càng có nhiều HĐH mới như Android, iOS, window mobile, windows
desktop, windows server, linux (ubuntu, debian, suse…), macOS, chromeOS,
firefoxOS, tizen … Thì khái niệm đa nền tảng không dừng lại ở 2 nữa mà là nhiều
hơn, có thể là tất cả. Vậy ngôn ngữ lập trình đa nền tảng là ngôn ngữ có thể chạy
được trên nhiều nền tảng kể cả di động và desktop. Và đây cũng sẽ là đích hướng
đến của các lập trình viên, các framework mới trong thời gian tới.

Hệ điều hành là chương trình chạy trên hệ thống máy tính, quản lý các tài
nguyên trên máy tính và là môi trường cho các ứng dụng chạy trên nó. Ngày nay,
khái niệm hệ điều hành không chỉ là trên máy tính mà còn được mở rộng cho nhiều
thiết bị điện tử khác chẳng hạng như điện thoại thông minh (smartphone), máy tính
bảng v.v…
Như vậy hệ điều hành di động là hệ điều hành chạy trên hệ thống máy có
tính di động cao. Với đặc thù đó, hệ điều hành di động phải có những khả năng đặc
biệt mà những hệ điều hành thông thường không có được. Chẳng hạn như nó phải
chạy trên hệ thống máy có cấu hình máy hạn chế về tốc độ bộ vi xử lý, bộ nhớ sử
dụng, phải chạy được ổn định liên tục trong một thời gian dài mà chỉ sử dụng một
lượng điện năng nhỏ, trong suốt thời gian chạy đó có thể duy trì các kết nối mạng
không dây để đảm bảo liên lạc.
1.1.1 Giới thiệu về Windows Phone
Khoảng trước những năm 2010, Microsoft đã sống những ngày huy hoàng
nhất trong suốt quá trình tham gia vào việc phát triển hệ điều hành cho nền tảng di
động khi mà Windows Mobile của hãng đã đánh bại Palm và trở thành một trong
những nền tảng lớn nhất vào thời điểm đó. Nhưng sự ra đời của IPhone OS (viết tắt
là iOS) và Android sau đó đã làm cho Windows Mobile dần lụi tàn .

8


Windows Phone là hệ điều hành của Microsoft dành cho smartphone kế tục
nền tảng Windows Mobile. Khác với Windows Mobile, Windows Phone tập trung
vào sự phát triển của Marketplace (Sau này đổi tên thành Store) - nơi các nhà phát
triển có thể cung cấp sản phẩm (miễn phí hoặc có phí) tới người dùng. Với
Windows Phone, Microsoft đã phát triển giao diện người dùng mới mang tên Metro
- tích hợp khả năng liên kết với các phần cứng và phần mềm của hãng thứ ba một
cách dễ dàng. Microsoft đã phát triển Windows phone qua 3 phiên bản. lần lượt là
Windows Phone 7, Windows Phone 8, Windows Phone 8.1, và hiện tại đang phát

triển một hệ điều hành có tên là Windows 10 for Phone.

Hình 1.1 Hệ điều hành Windows Phone 7
1.1.2 Giới thiệu hệ điều hành Android

Hình 1.2 Giới thiệu android
9


Android là tên một nền tảng mở cho thiết bị di động của Google (gồm hệ
điều hành – [linux base], middleware và một số ứng dụng cơ bản). Android sẽ
đương đầu với một số hệ điều hành dành cho thiết bị di dộng khác đang hâm nóng
thị trường như Windows phone, Symbian và dĩ nhiên là cả OS X (iPhone).
Android đã thu hút được sự chú ý của giới công nghệ khắp toàn cầu khi đứa
con của Google sẽ sử dụng giấy phép mã nguồn mở. Đó là một sản phẩm kết tinh từ
ý tưởng của Khối Liên minh thiết bị cầm tay mở do Google dẫn đầu, gồm 34 thành
viên với các công ty hàng đầu về công nghệ và di động toàn cầu như Qualcomm,
Intel, Motorola, Texas Instruments và LG Electronics, các nhà mạng như T-Mobile,
Sprint Nextel, NTT DoCoMo và China Mobile. Các nhà phát triển có thể sử dụng
miễn phí bộ Android Software Development Kit (SDK) để xây dựng các ứng dụng
của mình
1.1.3 Giới thiệu về iOS

Hình 1.3 Giới thiệu iOS
IOS là hệ điều hành di dộng của Apple ban đầu được gọi là hệ điều hành
dành cho iPhone và đến tháng 6 năm 2010 thì chính thức được đổi gọi tên là “iOS”.
Ban đầu, hệ điều hành này chỉ được phát triển riêng cho iPhone nhưng sau đó được
mở rộng để hỗ trợ các thiết bị khác của Apple như iPod touch, iPad và Apple TV.
Hệ điều hành di dộng của Apple được công bố cùng chiếc iPhone 2G tại
Macworld Conference & Expo vào ngày 9/1/2007 và chính thức phát hành trong

tháng 6 sau đó. Khi ra mắt, hệ điều hành này không được Apple chỉ định một cái tên
riêng biệt mà chỉ đơn giản gọi là "hệ điều hành X dành cho iPhone” và không hỗ trợ
các ứng dụng từ các nhà phát triển thứ 3. Nguyên nhân của việc từ chối các ứng

10


dụng từ bên thứ 3 được Steve Jobs đưa ra là các nhà phát triển có thể xây dựng ứng
dụng trùng chức năng với các ứng dụng gốc trên iPhone.
Đến ngày 17/ 10/ 2007, Apple thông báo đã phát triển bộ công cụ phát triển
phần mềm (SDK) và lên kế hoạch chuyển chúng đến tay các nhà phát triển vào
tháng 2 năm 2008. Sau đó ngày 6/3/2008, Apple phát hành phiên bản thử nghiệm
(beta) đầu tiên của bộ công cụ này cùng với một cái tên mới cho hệ điều hành,
"iPhone OS".
Tháng 9 năm 2009, iPod touch ra đời mang trên mình “iPhone OS” với hầu
hết chức năng hiện có ngoại trừ khả năng gọi, nhắn tin hay các dịch vụ từ nhà mạng
khác. Và đến mùa lễ cuối năm này, Apple cũng đạt doanh số hơn một triệu chiếc
iPhone.
Ngày 27/1/2010, sau sự thành công của iPhone và iPod touch, Apple tiếp tục
giới thiệu iPad sử dụng hệ điều hành được tùy chỉnh từ “iPhone OS” với một màn
hình lớn hơn so với iPhone và iPod touch được thiết kế để duyệt web, đọc sách ,
giải trí đa phương tiện…
Cuối cùng đến tháng 6 năm 2010, Apple chính thức đổi tên “iPhone OS”
thành một cái tên mới đơn giản, dễ nhớ hơn được mua từ hãng sản xuất thiết bị
mạng Cisco, đó là "iOS" và được sử dụng cho đến ngày hôm nay.

Hình 1.4 iOS 8 ra mắt với nhiều tính năng hấp dẫn
1.2 Game Engine Unity3D
Game Engine là một phần mềm được viết cho mục đích thiết kế và phát triển
video game. Chức năng cốt lõi của Game Engine phần lớn nằm trong công cụ dựng

11


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. Các Engine dùng cho làm game hiện tại có
rất nhiều, trong đó có thể kể đến CryEngine, Unreal Engine, Havok Engine, Unity
Engine…
1.2.1 Lý do chọn Unity Engine
Hiện nay, chúng ta có rất nhiều Engine như: Cry Engine, Unreal Engine,
Source Engine, ID Tech Engine, Unity Engine và những cái tên khác như
RenderWare Engine, Game Bryo Engine và các Engnie mã nguồn mở: Orge
Engine, Panda3D Engine, jMonkey Engine,... Trong đó Source Engine và ID Tech
Engine là các lão làng trong ngành công nghiệp Game, Cry Engine và Unreal
Engine là hai tân binh đáng chú ý nhất do những thành công đáng kể của họ trong
những năm gần đây.
Về mặt đồ họa, Cry Engine được đánh giá cao và hầu như không có đối thủ,
hình ảnh 3D của Cry Engine cho chất lượng chân thực minh chứng qua các tựa
game như Far Cry hay Crysis,...
Tuy nhiên, Cry Engine rất kén chọn vì chỉ những máy cấu hình thật cao mới
có thể đáp ứng được. Bên cạnh đó, Unreal Engine cũng cho chất lượng đồ họa
không kém, mà không đòi hỏi cấu hình quá cao. Các hệ máy laptop mua cách đây 45 năm trở lại đa số là dùng được. Các Engine khác được kể tên ở trên thay nhau vị
trí top 10 sau Cry Engnine và Unreal Engine.
Nếu có tiền, có nhiều kinh nghiệm và có một nhóm làm việc chuyên nghiệp,
lúc đó ta mới nên nghĩ tới Cry Engine hay Unreal Engnie... Còn nếu muốn sử dụng
mã nguồn mở cho tiết kiệm thì ta phải cần nhiều thời gian và sức lực hơn để tìm
hiểu Orge Engine hay Panda Engine... Vì thế lựa chọn sáng giá nhất cho các tân
binh trong lĩnh vực làm game, có ít kinh nghiệm, ít tiền, nhưng không muốn phải bỏ
quá nhiều công sức tìm hiểu lại những gì người khác đã làm chính là Unity Engine.

Về mặt đồ họa, Unity không so sánh được với Cry Engine nhưng đủ làm hài
lòng những người dùng phổ thông. Unity không đòi hỏi máy cấu hình cao, thêm nữa
Unity đặc biệt chú ý đến sự tiện dụng. Việc làm game, làm phim sử dụng Unity
12


Engine so với các Engine còn lại dễ dàng hơn rất nhiều vì đối tượng mà Unity
hướng đến chủ yếu là những người dùng không chuyên sâu. Chúng ta có thể kéo
thả, kế thừa, viết Script, tổ chức các thành phần, import – export các tài nguyên
(model, texture, mesh, ...) đóng gói các đối tượng hoàn chỉnh và chia sẻ nó một cách
dễ dàng với Unity.
Vấn đề thương mại, Unity cung cấp bản miễn phí cho các người dùng cá
nhân và các công ty có thu nhập dưới 100.000 USD. Chúng ta có thể tạo các ứng
dụng, các mô hình, các Game cho riêng mình hoặc bán nó trên Unity Store mà
không lo về vấn đề vi phạm bản quyền. Nếu muốn bán sản phẩm của mình trên
Unity Store thì chúng ta phải trả 30% hoa hồng. Nếu có nhu cầu cao hơn, sử dụng
bản Pro, chúng ta sẽ phải trả 1.500 USD, tương đương khoảng 32 triệu VNĐ với rất
nhiều tính năng cao cấp và tiện dụng.
Cuối cùng, Unity có một cộng đồng rộng lớn và cực kỳ thân thiện, với nhiều
tài nguyên miễn phí và tutorial hướng dẫn cho những người bắt đầu học và sử dụng
Unity. Những tài liệu chúng ta có thể tìm kiếm trên forum của Unity hoặc
Google.[5]
1.2.2 Unity Engine

Hình 1.5 Logo Unity3D
Unity là một 3D Game Engine, là một công cụ thiết kế Game dành cho PC,
Mac và nhiều hệ máy di động khác.
+ Nhà phát triển: Unity Technologies.
+ Phiên bản mới nhất: 5.5
+ Được viết bởi ngôn ngữ C++, C#

+ Phát triển Game cho các hệ điều hành: Windows, Mac OS X (tạo và đóng
gói), Nintendo Wii, iPhone/iPad, Xbox 360, Android, Sony PlayStation 3 (chỉ đóng
gói; cần giấy phép bổ sung cho từng nền tảng).
13


+ Giấy phép: Độc quyền.
+ Website: www.unity3d.com.
Unity được sự hỗ trợ của Just-In-Time Compilation (JIT), sử dụng thư viện
mã nguồn mở C++ Mono. Bằng việc sử dụng JIT, những Engine như Unity có thể
tận dụng lợi thế của tốc độ biên dịch. Ngoài thư viện Mono, Unity cũng tận dụng
chức năng của những thư viện phần mềm khác vào chức năng của nó, như Engine
mô phỏng vật lý PhysicX của Nvidia, OpenGL và DirectX cho kết xuất hình ảnh
3D, OpenAL cho âm thanh. Tất cả các thư viện này được xây dựng thành những
tính năng tự động hoặc công cụ trực quan vào Unity, vì vậy chúng ta không cần
phải lo lắng về việc học thế nào để sử dụng chúng một cách riêng lẻ.Unity có một
cộng đồng người dùng rất lớn mạnh, luôn chia sẻ những Plugins, công cụ của họ
dưới phần mềm gói bổ sung.
 Sơ lược sự hình thành và phát triển của Unity
Hình thành:
Phần lõi của Unity ban đầu được viết bởi Joachim Ante vào năm 2001. Sau
đó công ty được hình thành vào năm 2005 và bắt đầu với phiên bản 1.0. Đến năm
2007, Unity được nâng lên phiên bản 2.0. Unity bắt đầu hỗ trợ iPhone vào năm
2008. Vào tháng 6/2010, Unity chính thức hỗ trợ Android và cho ra đời phiên bản
3.0 có hỗ trợ Android vào tháng 9/2010. Có thể thấy tốc độ phát triển của Unity khá
nhanh. Phiên bản mới nhất là phiên bản 5.2
Giải thưởng:
Unity đã đoạt được nhiều giải lớn với những giải chính sau:
+ Năm 2006, Unity đạt "Best Use of Mac OS X Graphics" tại Apple's
WWDC. Đây là lần đầu tiên một công cụ phát triển game đạt được chất

lượng do giải thưởng uy tín này đưa ra.
+ Năm 2009, Unity Technologies có tên trong "Top 5 công ty game của
năm" do Gamasutra tổ chức.
+ Năm 2010, Unity đoạt giải Best Engine Finalist do Develop Magazine bình
chọn, giải Technology Innovation Award của Wall Street Journal ở thể loại phần mềm

14


Khách hàng:
Unity được trên 250.000 người đăng ký sử dụng gồm Bigpoint, Cartoon
Network, Coca-Cola, Disney, Electronic Arts, LEGO, Microsoft, NASA, Ubisoft,
Warner Bros, các hãng phim lớn nhỏ, các chuyên gia độc lập, sinh viên và những
người đam mê.
 Sơ nét về giao diện của Unity
Giao diện Unity, giống như nhiều môi trường làm việc khác, layout có thể
tùy chỉnh. Layout của Unity bao gồm nhiều tab khác nhau và có thể bật tắt. Chúng
ta hãy xem xét một cách bố trí giao diện Unity điển hình:

Hình 1.6 Giao diện Editer của Unity3d
Như hình trên chúng ta thấy có 5 khung khác nhau:
1. Scene – nơi xây dựng trò chơi.
2. Hierarchy – danh sách các đối tượng trong một cảnh game.
3. Inspector – màn hình cài đặt cho tài nguyên/đối tượng đang được chọn.
4. Game – cửa sổ xem trước game, chỉ hoạt động ở chế độ chơi (khi nhấn Play).
5. Project– danh sách các tài nguyên trong project, đóng vai trò như một thư viện.
Cửa sổ Scene và Hierarchy:
Cửa sổ Scene là nơi chúng ta sẽ xây dựng toàn bộ các đối tượng trong game.
Cửa sổ cung cấp nhiều góc nhìn khác nhau, có thể nhìn dạng phối cảnh hoặc dạng
song song. Chúng ta có thể kéo thả đối tượng trên cửa sổ này, di chuyển, xoay…


Hình 1.7 Các nút điều khiển

15


Cửa sổ Scene cũng kèm theo năm nút điều khiển tiện lợi như hình trên. Truy
cập từ bàn phím bằng cách sử dụng các phím Q, W, E, R và T. Các phím thực
hiệncác hoạt động sau đây:
+ Công cụ bàn tay [Q]: công cụ này cho phép di chuyển trong cửa sổ Scene,
xoay góc nhìn, phóng to, thu nhỏ góc nhìn.
+ Công cụ di chuyển [W]: Công cụ này dùng để di chuyển một đối tượng.
+ Công cụ xoay [E]: Công cụ này cho phép chúng ta xoay nhân vật theo một
trục nào đó trong không gian.
+ Công cụ tỷ lệ [R]: Công cụ này cho phép chúng ta tăng giảm tỷ lệ kích
thước của đối tượng.Khi chọn một đối tượng trong cửa sổ Scene, đối tượng này sẽ
được tự động chọn trong cửa sổ Hierarchy và ngược lại

Hình 1.8 Chọn đối tượng trong Scene và Hierrarchy
Inspector:
Inspector sẽ hiển thị tất cả thông tin, các thành phần trong đối tượng game
đang chọn, và cho phép điều chỉnh các biến của các thành phần này. Có thể xem
cửa sổ này như cửa sổ Properties khi design giao diện Winform trên Visual Studio.

16


Hình 1.9 Cửa sổ Inspector hiển thị thông tin một đối tượng
Cửa sổ Game:
Cửa sổ này sẽ hiển thị những gì có trong cửa sổ Scene và sẽ hoạt động khi

nhấn nút Play. Trong cửa sổ này chúng ta có thể chọn các kích cỡ hiển thị khác
nhau để build cho các loại máy khác nhau. Chúng ta có thể chơi thử game trên cửa
sổ này khi đã nhấn nút Play. Lưu ý rằng khi cửa sổ này hoạt động rồi thì mọi chỉnh
sửa trên cửa sổ Scene và cài đặt cho các đối tượng chỉ là tạm thời và khi nhấn nút
Stop, cửa sổ này về lại trạng thái tĩnh thì mọi chỉnh sửa trước đó là không còn.
Cửa sổ Project:
Cửa sổ Project thể hiện nội dung bên trong thư mục Assets của project chúng
ta. Khi thêm tài nguyên vào thư mục Assets ngay lập tức chúng sẽ tự động được cập
nhập vào project Unity của chúng ta.
 Các đặc điểm và tính năng của Unity
1. Rendering (kết xuất hình ảnh)
Giống như tất cả các Engine hoàn chỉnh khác, Unity hỗ trợ đầy đủ khả năng
kết xuất hình ảnh cùng nhiều hỗ trợ cho phép áp dụng các công nghệ phổ biến trong
lĩnh vực 3D nhằm cải thiện chất lượng hình ảnh.Một số hỗ trợ:
- Unity cung cấp 100 Shaders với đầy đủ các loại phổ biến nhất.
- Hỗ trợ Surface Shaders, Occlusion Culling, GLSL Optimizer.
- Hỗ trợ LOD.
17


2. Lighting (Ánh sáng)
Unity cung cấp nhiều giải pháp đa dạng cho phép chúng ta áp dụng ánh sáng
một cách tốt nhất vào môi trường trong trò chơi với nhiều loại nguồn sáng như ánh
sáng có hướng (Directional Light), ánh sáng điểm (Point Light), ...Một số công
nghệ và kỹ thuật về ánh sáng được Unity hỗ trợ: Lingtmapping, Realtime Shadows,
hiệu ứng Sunshafts và Lens Flares.
3. Terrains (địa hình)
Unity cung cấp một công cụ rất tốt khả năng này với tên gọi là Terrains
Tools cho phép chúng ta thiết kế địa hình với các công cụ vẽ dưới dạng Brush có
nhiều thông số tùy chỉnh để tạo và lát Texture cho địa hình. Cùng với Terrains

Tools là Tree Creator, một công cụ mạnh mẽ cho phép chúng ta tạo ra cây cối với
hình dạng, kích thước và kiểu cách đa dạng.
4. Substances (Texture thông minh)
Substances cho phép các trò chơi và các ứng dụng sáng tạo sử dụng tất cả
các sức mạnh của nó để cung cấp những trải nghiệm độc đáo cho người dùng cuối:
- Được tạo ra ngay trong khi game được tạo
- Cung cấp nội dung tải về nhỏ
- Sử dụng sức mạnh của các textures động tạo ra các hiệu ứng độc đáo
Substances được xử lý giống như các bitmap khác trong Unity: chỉ cần kéo
và thả nó trong project là đã có thể sẵn sàng sử dụng ngay. Substances có kích
thước tự nhiên nhỏ hơn bitmap nên khi sử dụng Substances thay cho bitmap sẽ làm
giảm đáng kể kích thước của game cuối cùng.
5. Physics (Vật lý)
PhysX là một Engine mô phỏng và xử lý vật lý cực kì mạnh mẽ được phát
triển bởi nhà sản xuất card đồ họa hàng đầu thế giới NVIDIA. Unity đã tích hợp
Engine này vào để đảm nhận mọi vấn đề về vật lý.
6. Pathfinding (Tìm đường)
Đây là tính năng mới mẻ từ phiên bản Unity 3.5. Với các phiên bản trước, để
phát triển khả năng tìm đường cho trí thông minh nhân tạo (AI), nhà phát triển phải
hoàn toàn tự xây dựng cho mình một hệ thống tìm đường riêng biệt.

18


7. Audio (Âm thanh)
Unity tích hợp FMOD – công cụ âm thanh thuộc hàng mạnh nhất hiện nay,
hỗ trợ chúng ta nhập và sử dụng nhiều định dạng tập tin âm thanh khác nhau.
8. Programming (Lập trình)
Unity được viết trên nền C++, tuy nhiên để sử dụng Unity, người dùng chỉ
cần biết 1 trong 3 ngôn ngữ là C#, JavaScript, hoặc Boo, với JavaScript là đơn giản

và dễ sử dụng nhất, tuy nhiên với 1 số hạn chế nên C# được đa số chuyên gia ưa
chuộng hơn, ngôn ngữ Boo được cho là tốt nhất, tuy nhiên do ngôn ngữ được rất ít
người sử dụng, nên gần như không bao giờ thấy tài liệu hoặc code liên quan đến
Unity được viết bằng ngôn ngữ Boo.
9. Networking
Networking cho phép chúng ta tạo ra các trò chơi trực tuyến (online), hỗ trợ
đầy đủ giúp ta tạo nên các khía cạnh phổ biến trong Game online như hệ thống điểm
kinh nghiệm, chat và tương tác với thời gian thực, ...
Tài nguyên (model, âm thanh, hình ảnh, ...) được tải vào trong Unity và tự
động cập nhật nếu tài nguyên có sự thay đổi. Unity hỗ trợ các kiểu định dạng từ
3DS Max, Maya, Blender, Cinema 4D và Cheetah3D.
 Các khái niệm cơ bản trong Unity 3D
1. Asset
Đây là kho tài nguyên cho việc xây dựng game trong một project của Unity.
Các tài nguyên này có thể là hình ảnh, âm thanh, hoặc một mô hình 3D có sẵn.
Unity sẽ tham chiếu đến các tập tin chúng ta sẽ sử dụng để tạo ra các tài nguyên cho
trò chơi. Đây là lý do tại sao trong bất kỳ thư mục chứa project sử dụng Unity thì tất
cả các tập tin tài nguyên phải được lưu trữ trong một thư mục con tên là Assets.

Hình 1.10 Asset trong Unity
19


2. Scene
Trong Unity, chúng ta có thể xem Scenes là các màn chơi, cấp độ chơi riêng
lẻ, hoặc các vùng của nội dung trò chơi. Ví dụ như Main menu, Options, About …
Bằng cách xây dựng trò chơi với nhiều cảnh, chúng ta sẽ có thể phân phối
thời gian tải và thử nghiệm các phần khác nhau của trò chơi riêng lẻ một cách nhanh
chóng và chính xác.


Hình 1.11 Các scene của Unity
3. Game Object
Khi một tài nguyên được sử dụng trong một scene, khi đó chúng ta có thể coi
tài nguyên này là một “Game Object” mới. Mỗi GameObject phải chứa ít nhất một
thành phần, đó là thành phần “Transform”. Transform chứa các phép để biến đổi
góc quay, tỷ lệ hay tịnh tiến của đối tượng.

Hình 1.12 Kéo tài nguyên vào Scene để sử dụng

20


4. Component
Component là các thành phần trong một Game Object của Unity. Bằng cách
đính kèm các thành phần vào cho một đối tượng, chúng ta có thể áp dụng ngay các
phần mới của game engine vào đối tượng. Thông thường các thành phần này được
Unity xây dựng sẵn như ánh sáng, camera, particle, hiệu ứng vật lý…

Hình 1.13 Các thành phần trong đối tượng Camera
5. Script
Script là thành phần quan trọng nhất trong Unity, có thể xem scripts như là
linh hồn của game. Chúng ta có thể viết kịch bản cho game bằng C#, Java scripts.
Theo nhiều người đã sử dụng Unity thì code bằng C# sẽ giúp game chạy nhanh hơn
và giúp kiểm soát code tốt hơn do tất cả các biến phải được khai báo rõ ràng. Mặt
khác ngôn ngữ C# rất tiện dụng để lập trình, nên em dùng ngôn ngữ C# để viết kịch
bản cho game. Mỗi file script C# là một class bắt buộc kế thừa từ lớp
MonoBehaviour, có tên class phải trùng với tên file script.

Hình 1.14 Cách tạo file script mới
21



Một đoạn script muốn thực thi được thì nó phải được gắn vào một đối tượng

Hình 1.15 Một file script đang gắn vào đối tượng
6. Prefab
Hãy tưởng tượng Prefab là một cái thùng rỗng, mà bên trong nó chúng ta có
thể chứa đựng các thành phần hay đối tượng khác nhau, chúng ta có thể viết kịch
bản cho hành động của Prefab (khởi tạo, di chuyển, hay hủy đối tượng). Chúng ta
có thể sử dụng đối tượng này nhiều lần trong trò chơi, và cũng có thể sử dụng lại
cho project khác. Prefab cho phép chúng ta lưu trữ cá đối tượng, toàn bộ thành phần
bên trong và cấu hình hiện tại.
7. Material và Shader
Shader là đoạn script qui định cách thức render của chất liệu trên bề mặt vật
thể. Material sử dụng shader để làm chất liệu cho mô hình. Giữa materials và
shaders có mối liên hệ với nhau. Shaders qui định các thuộc tính cần để shader làm
việc. Còn material cho phép gán hình ảnh vào các thuộc tính đó từ Asset.

22


Hình 1.16 Material và Shader
1.2.3 Tổng quan kiến trúc engine Unity
 Kiến trúc tổng quan
Engine Unity hỗ trợ cho chúng ta UnityAPI để viết script game. UnityAPI là
API lập trình game trong Unity rất mạnh. UnityAPI chứa các đối tượng và phương
thức hỗ trợ hầu hết các đối tượng và các loại thành phần trong Unity.
Trong một scene thường có nhiều đối tượng game. Mỗi đối tượng này có thể
có hoặc không có đoạn script nào gắn lên đó. Nếu muốn gắn script vào đối tượng, ta
bắt buộc phải kế thừa class đó từ lớp MonoBehaviour của UnityAPI và tên class

phải trùng với tên file script. Mỗi script khi gắn lên đối tượng game đều được đối
tượng game xem như một thành phần bên trong và được cấp phát vùng nhớ khi
chạy game.

23


Hình 1.17 Tổng quan kiến trúc Unity
Bên trong UnityAPI chứa rất nhiều lớp hỗ trợ lập trình game, trong đó có
một số lớp quan trọng như :
- MonoBehaviour: tất cả các script muốn gắn vào một đối tượng game bắt
buộc phải kế thừa từ lớp này.
- GameObject: lớp cha của tất cả các thực thể trong scene.
- Component: lớp cha của tất cả các thành phần có thể gắn vào đối tượng.
- Transform: giúp thay đổi vị trí, xoay, biến đổi tỉ lệ mô hình.
- Input: hỗ trợ lập trình với chuột, cảm ứng đa điểm, cảm biến gia tốc.
- Camera: giúp lập trình camera.
- Light: giúp tạo ánh sáng trong game.
- Projector: giúp chiếu texture lên bề mặt vật thể.
- ParticleEmitter: hỗ trợ tạo các hiệu ứng particle đẹp mắt.
- Audio: hỗ trợ lập trình với âm thanh.
- Animation: chạy chuyển động của mô hình nhân vật.
- Rigidbody: giúp tạo hiệu ứng vật lý liên quan đến trọng lực như bóng nẩy, lăn,
24


- CharacterController: giúp điều khiển nhân vật di chuyển theo độ cao địa hình.
- Collider: hỗ trợ lập trình va chạm giữa các vật thể.
- GUI: giúp lập trình giao diện người dùng trên Unity. Từ phiên bản 4.6 trở
đi, Unity hỗ trợ một bản uGUI cho giao diện đẹp hơn.

 Chu kỳ sống của thành phần script gắn trên đối tượng game
Chu kỳ sống của một thành phần script được tính kể từ khi scene được chạy
cho đến lúc scene bị tắt hoặc chuyển sang scene khác.

Hình 1.18 Chu kỳ sống của thành phần script
Tùy theo trạng thái của scene mà sự kiện tương ứng sẽ được gọi.
- Awake: được gọi khi script được load xong
- Start: được gọi khi script được load xong nếu thành phần script đó không
bị disable.
- Update: đây là sự kiện thường sử dụng nhất và được gọi liên tục từng
frame để vẽ lại màn hình.
- LateUpdate: sự kiện này chạy sau sự kiện Update và được gọi liên tục
từng frame.
- OnGUI: sự kiện này dùng để vẽ GUI và được gọi liên tục từng frame, chỉ
trong sự kiện này ta mới có thể sử dụng các lớp hỗ trợ tạo giao diện người dùng của
UnityAPI.
- OnDestroy: được gọi khi thành phần script bị hủy khỏi bộ nhớ.[3]
25


×