I.
Giới thiệu về Unity3d
Unity3D
là phần mềm làm games trực tiếp theo thời gian thực, mà không cần render, cho
phép người design game có thể thiết kế InterfaceGraphic,
map hay character … từ một phần mềm thứ 2 (thường là các phần mềm thiết kế đồ họa
chuyên nghiệp như 3Dsmax, Blender, Maya, XSL,Cinema4D,Cheetah3D, Modo, Autodesk
FBX, LightWave…) sau đó chỉ việc import nó vào trong Unity với định dạng của tập
tin là *.FBX hay *.dae, *.3DS, *.dxf và *.obj, nhưng định dạng *.FBX
hay được dùng vì được tối ưu hóa hơn, còn dùng các định dạng khác ngoài FBX thì
phải cài phần mền thiết kế character tưng ứng thì mới dùng được (tức là dùng
Maya có định dạng *.mb, *.ma thì muốn dùng được phải cài Maya)
Ngoài
ra khi bạn design được một game thì bạn có thể xuất được ra một file.exe và có
thể chạy và chơi được trên PC khác.
Một
thế mạnh nữa của Unity là bạn có thể chạy demo game của bạn ngay trongkhi
design, nó có hỗ trợ hai chế độ là Scene và Game, rất thuận tiện cho việc test
thử các modulGame.
Unity3D
có 2 loại phiên bản, một cho người dùng free, và một phiên bản pro thì mất phí.
Khi
tải Unity về các bạn cài đặt bình thường, đến khi kết thúc cài đặt nền các bạn
chọn phiên bản Pro thì cần phải mua, còn nếu là người dùng free thì các bạn chọn
kích hoạt qua web, chỉ cần có kết nối mạng
internet, sau đó chọn cài đặt thủ công và nhập mail, chọn free là bạn có thể sử
dụng một bản Unity free.
II. Giới thiệu về giao diện Unity3D.
Sau khi cài đặt Unity
thành các bạn khởi động Unity:
-
Đối với Window: Start -> Program
-> Unity, hoặc chọn biểu tượng Unity trên screen.
-
Đối với người dùng MacOs: Application
-> Unity
Sau khi khởi động Unity
cửa sổ Editor xuất hiện: Cửa sổ Editor của Unity gồm nhiều Tab gọi là các view,
và ta có thể tùy ý kéo thả sắp xếp các view theo ý thích.
1. Cửa sổ project:
Mỗi
Project của Unity đều chứa một thư mục Assets.Nội dung của thư mục này được hiển
thị trong Project View. Đây là nơi chứa tất cả các assets để tạo Game của bạn
như Scenes, Script, 3D models, Textures, Audio, Prefabs. Chúng ta không nên di
chuyển asseets bằng cách sử dụng Window
Explorer (hay Finder trong MAC), vì nó sẽ phá vỡ cấu trúc siêu dữ liệ của
assets với nhau, và luôn sử dụng Project View để cấu trúc assets của mình.
Để
thêm assets vào project của mình, chúng ta có thể kéo thả bất kỳ file nào vào
trong project view hoặc vào công cụ Assets – Import new Assets(Click chuột phải
vào Project View). Scenes cũng được lưu trữ trong Project view, và đây là một
level độc lập mang tính cá nhân. Chúng ta dễ dàng tạo một assets game trong Unity
bằng cách chọn hình tam giác nhỏ nằm bên phải Create trong cửa sổ Project hoặc
click chuột phải trong Project View, sau đó chọn assets tương ứng.
Ngoài
ra bạn cũng có thể thêm các assets và đổi tên các assets một cách dễ dàng.
2. Hierarchy
Tức
là hệ thống phân cấp
Trong
Hierarchy chứa các GameObject hiện thời,
một số có thể trỏ trực tiếp tới những file assets như 3D models, một số khác đại
diện cho Prefabs – những đối tượng đã được tùy biến, dùng làm các công việc
khác nhau sau này trong Game của bạn. Bạn có thể chọn và parenting Object trong
Hierarchy . Một Object có thể được thêm vào hay loại bỏ trong scene và có thể
thấy nó mất đi hay xuất hiện trong Hierarchy .
3. Parenting.
Tức
là thư mục chứa hay thư mục gốc, bất kỳ một game object nào muốn là đối tượng
con(child) thì ta chỉ việc kéo thả đối tượng đó vào trong đối tượng dự tính làm
Parenting trong Hierarchy và nó sẽ kế thừa
chuyển động và quay của parenting.
4. Toolbar.
Toolbar
chứa 5 loại điều khiển cơ bản, mỗi loại giữ một vai trò quan trọng trong
Editor.
A:
Transform Tool: được
dung với Scene view, như quay trái , phải, lên trên, xuống dưới, phóng to thu
nhỏ đối tượng.B: Transform Gizmo Toggles: dung cho việc thể hiện Scene view.
C: Play/Pause/Step Buttons: dung cho view game, chỵ game ngay trong Editor để kiểm tra.
D: Layer Drop-down kiểm soát đối tượng nào đang được thục hiện trong Scene view
E: Layout Drop-down kiểm soát sự sắp xếp cảu các Views.
5. Scene View.
Là
nơi bạn Design Game của bạn, đối tượng Maneuvering và Importanting trong Scene
view (chuyển động và điều khiển) là hai trong số các chức năng quan trọng của Unity,
ở góc bên phải của Scene là Scene Gizmo, nó thể hiện hướng nhìn trong không
gian của camera trong Scene View hiện thời, cho phép thay đổi góc nhìn trực
quan và nhanh chóng.
Click lên các nhánh hình nón để
chuyển qua các góc nhìn khác nhau có thể xem ở chế độ Isometric Model(tức ở dạng
mặt cắt hai chiều), để chuyển qua chế độ 3D bạn Click vào hình vuông ở giữa hay
giữ phím Shift + Click để chuyển đổi chế độ nhìn.
Khi
xây dựng một Game, bạn sẽ đặt rất nhiều đối tượng vào trong Game của bạn. Bạn có
thể dử dụng các công cụ Transform Tools ở trong Toolbar để di chuyển, xoay,
phóng to tu nhỏ từng đối tượng.Khi bạn chọn một đối tượng trong Scene View,
xung quanh đối tượng được chọn sẽ có những thay đổi tương ứng với từng chế độ
trong Transform Tools.Sau đó bạn thay đổi đối tượng tùy ý, nếu muốn chính xác bạn
có thể chỉnh chi tiết ở bảng Inspector.
Scene
View Control Bar
Thanh
điều khiển Scene view cho phép bạn xem screen Game với nhiều chế độ như đã phủ
vật liệu (material), khung lưới(wireframe), RGB, Overdraw, …Bạn cũng có thể xem
và cả nghe những hiệu ứng ánh sáng, âm thanh, những thành phần động trong Game…
ngay tại Scene.
6. Game View.
Game
View được rendered từ những Camera trong Game. Đó là những gì được nhìn thấy
khi hoàn tất, khi Game được xuất bản. Bạn sẽ cần ít nhất là một hoặc nhiều hơn
số lượng các Camera để quết định những gì mà người chơi sẽ nhìn thấy khi họ
chơi Game.
7. Play Mode
Sử
dụng những nút trên Toolbar để điều khiển Editor Play Mode, và xem trước Game của
bạn sẽ như thế nào khi chơi. Trong chế Play, mọi giá trị thay đổi sẽ được lưu tạm,
và bị xóa khi thoát khỏi chế độ play.
8.
Inspector
Games trong Unity được tạo ra bởi
tập hợp rất nhiều GameObject, trong đó bao gồm meshes, scripts, âm thanh, hay
những đối tượng Graphic như nguồn sáng v..v... Inspector sẽ hiển thị mọi thông
tin về đối tượng đang làm việc một cách chi tiết, kể cả những Components được
đính kèm và những thuộc tính của nó. Tại đây bạn có thể điều chỉnh, thiết lập mọi
thông số chức năng của những mối liên kết GameObject-Component.
Mọi thuộc tính thể hiện trong Inspector
đều có thể được tùy biến một cách trực tiếp. Ngay cả với những biến trong
script cũng có thể được hiệu chỉnh mà không cần xem mã. Trong script, nếu bạn
định nghĩa một giá trị là public cho một kiểu đối tượng (như GameObject hay
Transform), bạn có thể drag-drop một GameObject hay một Prefab vào trong
Inspector để gán giá trị cho nó.
Chúng
ta có thể click lên icon hình bánh răng nhỏ bên phải hay click chuột phải lên
tên cảu Component để xuất hện context menu dành cho những thiết lập của
Component.
Inspector
cũng sẽ thể hiện mọi thông số Import Setting của assets đang làm việc.
9. Tùy biến không gian làm việc
Bạn có thể tùy ý thay đổi cấu trúc của các Views bằng cách click-dragging những tab tới những nơi bạn muốn. Đặt cạnh một View nào đó, nó sẽ tự phân chia windows ra, đặt ra ngoài nó sẽ tự động tạo thành một windows riêng. (dịch thoáng).
Views có thể được đặt bên cạnh bên, hay bên dưới bất kỳ cửa sổ nào.
Các tab cũng có thể kéo ra ngoài cửa sổ chính và được sắp xếp theo ý thích người dùng. Nếu cần thiết, bạn cũng có thể cho nó nằm ngang hàng với các Views khác trong cửa sổ chính.
View được kéo nổi lên, tách biệt hẳn với các cửa sổ View khác.
Bạn cũng có thể lưu lại những thiết lập về cấu trúc của các Views, bằng cách click vào menu Dropdown Layout ở thanh Toolbar, chọn Save Layout... Đặt tên cho nó và sau đó bạn dễ dàng gọi nó ra bằng cách chọn nó trong Dropdown Menu Layout.
Một Layout đã hoàn toàn được chỉnh sửa
Bất kỳ lúc nào bạn cũng có thể right-click lên một tab của bất kỳ view nào để xem những tính năng khác như Maximize hay thêm vào một tab mới trong cùng một cửa sổ.
Bạn có thể tùy ý thay đổi cấu trúc của các Views bằng cách click-dragging những tab tới những nơi bạn muốn. Đặt cạnh một View nào đó, nó sẽ tự phân chia windows ra, đặt ra ngoài nó sẽ tự động tạo thành một windows riêng. (dịch thoáng).
Views có thể được đặt bên cạnh bên, hay bên dưới bất kỳ cửa sổ nào.
Các tab cũng có thể kéo ra ngoài cửa sổ chính và được sắp xếp theo ý thích người dùng. Nếu cần thiết, bạn cũng có thể cho nó nằm ngang hàng với các Views khác trong cửa sổ chính.
View được kéo nổi lên, tách biệt hẳn với các cửa sổ View khác.
Bạn cũng có thể lưu lại những thiết lập về cấu trúc của các Views, bằng cách click vào menu Dropdown Layout ở thanh Toolbar, chọn Save Layout... Đặt tên cho nó và sau đó bạn dễ dàng gọi nó ra bằng cách chọn nó trong Dropdown Menu Layout.
Một Layout đã hoàn toàn được chỉnh sửa
Bất kỳ lúc nào bạn cũng có thể right-click lên một tab của bất kỳ view nào để xem những tính năng khác như Maximize hay thêm vào một tab mới trong cùng một cửa sổ.
10.
Quản lý Asset.
Workflowlà “tiến trình công việc” hay “quy
trình làm việc”, tức là khi bạn import hoặc tạo ra asset, bạn không cùng một
lúc tạo ra toàn bộ, mà là theo trình tự, tùy theo nhu cầu, theo kịch bản, bạn
import hoặc tạo ra asset theo thứ tự.
Tạo
một Asset thô
Unity hỗ trợ import hầu như tất cả các định dạng 3D model
hiện nay. Khi một đối tượng hay vật thể 3D được import hoặc tạo ra trong Unity,
nó đều được gọi là asset.
Import
Khi lưu trữ asset, nên lưu trong thư mục Assets đặt trong thư mục Project của bạn. Lúc mở project, Unity sẽ tự động dò tìm và import tất cả vào trong Project.
Import Settings
Khi bạn chọn một asset trong Project View, những thông số import cho asset sẽ hiển thị ở Inspector. Mỗi loại asset sẽ có mỗi kiểu thông số khác nhau.
Thêm Asset vào trong Scene
Chỉ cần click-drag các khung lưới được vẽ trong 3D (mesh) từ Project View vào cửa sổ Hierarchy hoặc Scene View để thêm nó vào trong Scene. Khi thêm một mesh vào trong scene, tức là bạn đã tạo ra một GameObject có Mesh Renderer Component. Tương tự khi thêm vật liệu, hoặc âm thanh, bạn cũng phải gán nó vào một GameObject đã có sẵn trong Scene hay Project.
Sử dụng các kiểu Assets khác nhau
Mối liên hệ giữa một số kiểu assets thông dụng:
Khi lưu trữ asset, nên lưu trong thư mục Assets đặt trong thư mục Project của bạn. Lúc mở project, Unity sẽ tự động dò tìm và import tất cả vào trong Project.
Import Settings
Khi bạn chọn một asset trong Project View, những thông số import cho asset sẽ hiển thị ở Inspector. Mỗi loại asset sẽ có mỗi kiểu thông số khác nhau.
Thêm Asset vào trong Scene
Chỉ cần click-drag các khung lưới được vẽ trong 3D (mesh) từ Project View vào cửa sổ Hierarchy hoặc Scene View để thêm nó vào trong Scene. Khi thêm một mesh vào trong scene, tức là bạn đã tạo ra một GameObject có Mesh Renderer Component. Tương tự khi thêm vật liệu, hoặc âm thanh, bạn cũng phải gán nó vào một GameObject đã có sẵn trong Scene hay Project.
Sử dụng các kiểu Assets khác nhau
Mối liên hệ giữa một số kiểu assets thông dụng:
- Một Texture(kết cấu) được áp cho một Material(vật liệu).
- Một Material được áp cho một GameObject (với một Mesh Renderer Component)
- Một Animation được áp cho một GameObject (với một Animation Component)
- Một file âm thanh được áp cho một GameObject (với một Audio Source Component)
Tạo một Prefab
Prefabs là một tính năng hữu ích trong Unity, nó là một bộ sưu tập của nhiều GameObject và Components mà có thể được dùng lại nhiều lần trong scene. Nhiều đối tượng riêng biệt có thể được tạo ra chỉ bằng một Prefab, được gọi là Intance.
Lấy ví dụ những cái cây trong game. Ta tạo ra một Prefab cho cây, sau đó có thể thêm nó vào trong game để tạo thành một vườn cây. Bởi vì tất cả cây đều cùng một Prefab, nên sau này, nếu bạn cần thay đổi màu lá, màu vỏ cây v..v... cho toàn bộ vườn cây, bạn chỉ cần đơn giản hiệu chỉnh thông số trong Prefab, sau đó áp nó cho toàn bộ đối tượng bằng cách chọn GameObject->Apply Changes to Prefab từ menu chính.
Thật dễ dàng và nhanh chóng, Prefab sẽ giúp bạn tiết kiệm rất nhiều thời gian trong việc quản lý và hiệu chỉnh asset.
Tưởng tượng Prefab như là một khung sườn, một khuôn mẫu. Nghĩa là khi Prefab thay đổi, tất cả những bản sao sẽ được cập nhật theo. Có nhiều cách để thay đổi, như bạn có thể thay đổi chính từ Prefab gốc, hoặc từ những bản sao của nó rồi áp ngược lại cho toàn bộ Prefab.
Để tạo ra một Prefab từ một GameObject trong scene, đầu tiên, khởi tạo trước một Prefab mới trong Project View, đặt tên cho Prefab đó theo ý bạn thích, sau đó, click và drag đối tượng GameObject mà bạn muốn nó trở thành một Prefab vào trong Prefab, khi đó tên của GameObject sẽ chuyển sang xanh dương.
Prefabs là một tính năng hữu ích trong Unity, nó là một bộ sưu tập của nhiều GameObject và Components mà có thể được dùng lại nhiều lần trong scene. Nhiều đối tượng riêng biệt có thể được tạo ra chỉ bằng một Prefab, được gọi là Intance.
Lấy ví dụ những cái cây trong game. Ta tạo ra một Prefab cho cây, sau đó có thể thêm nó vào trong game để tạo thành một vườn cây. Bởi vì tất cả cây đều cùng một Prefab, nên sau này, nếu bạn cần thay đổi màu lá, màu vỏ cây v..v... cho toàn bộ vườn cây, bạn chỉ cần đơn giản hiệu chỉnh thông số trong Prefab, sau đó áp nó cho toàn bộ đối tượng bằng cách chọn GameObject->Apply Changes to Prefab từ menu chính.
Thật dễ dàng và nhanh chóng, Prefab sẽ giúp bạn tiết kiệm rất nhiều thời gian trong việc quản lý và hiệu chỉnh asset.
Tưởng tượng Prefab như là một khung sườn, một khuôn mẫu. Nghĩa là khi Prefab thay đổi, tất cả những bản sao sẽ được cập nhật theo. Có nhiều cách để thay đổi, như bạn có thể thay đổi chính từ Prefab gốc, hoặc từ những bản sao của nó rồi áp ngược lại cho toàn bộ Prefab.
Để tạo ra một Prefab từ một GameObject trong scene, đầu tiên, khởi tạo trước một Prefab mới trong Project View, đặt tên cho Prefab đó theo ý bạn thích, sau đó, click và drag đối tượng GameObject mà bạn muốn nó trở thành một Prefab vào trong Prefab, khi đó tên của GameObject sẽ chuyển sang xanh dương.
Cập
nhật Assets
Bạn đã làm quen với việc import, thay đổi, và liên kết asset trong một Prefab. Giờ bạn muốn có một chút thay đổi với asset? Chỉ cần double-click nó trong Project View. Chương trình chỉnh sửa tương ứng sẽ chạy và bạn có thể chỉnh sửa theo ý thích, khi hoàn tất, chỉ cần save nó lại, Unity sẽ tự động nhận biết sự thay đổi và import lại asset đó một cách nhanh chóng. Những asset liên kết trong Prefab cũng sẽ thay đổi theo.
Ví dụ bạn thêm một bảng hiệu trong game bằng file Photoshop. Double-click lên nó, Photoshop sẽ chạy, bạn chỉnh sửa bảng hiệu trong Photoshop, save lại. Quay lại Unity, bạn sẽ thấy nó đã thay đổi, thật tiện lợi phải không nào?
Bạn đã làm quen với việc import, thay đổi, và liên kết asset trong một Prefab. Giờ bạn muốn có một chút thay đổi với asset? Chỉ cần double-click nó trong Project View. Chương trình chỉnh sửa tương ứng sẽ chạy và bạn có thể chỉnh sửa theo ý thích, khi hoàn tất, chỉ cần save nó lại, Unity sẽ tự động nhận biết sự thay đổi và import lại asset đó một cách nhanh chóng. Những asset liên kết trong Prefab cũng sẽ thay đổi theo.
Ví dụ bạn thêm một bảng hiệu trong game bằng file Photoshop. Double-click lên nó, Photoshop sẽ chạy, bạn chỉnh sửa bảng hiệu trong Photoshop, save lại. Quay lại Unity, bạn sẽ thấy nó đã thay đổi, thật tiện lợi phải không nào?
Optional
- Đính thêm Labels cho Assets.
Thêm labels cho những asset quả không là một ý tưởng tồi nếu bạn muốn giữ nó ngăn nắp, nhằm làm cho việc tìm kiếm và quản lý, sử dụng nó dễ dàng hơn.
Các bước đính thêm label cho asset:
Thêm labels cho những asset quả không là một ý tưởng tồi nếu bạn muốn giữ nó ngăn nắp, nhằm làm cho việc tìm kiếm và quản lý, sử dụng nó dễ dàng hơn.
Các bước đính thêm label cho asset:
- Chọn asset mà bạn muốn thêm label. (Bằng project view).
- Trong cửa sổ Inspector click lên biểu tượng "Add Label" nếu bạn chưa có label nào trước đó.
- Nếu asset đã có label rồi, click vào đó.
- Gõ label vào đó.
Ghi
chú:
- Bạn có thể đính nhiều label cho một asset.
- Để ngăn cách, hay tạo mới label khác, chỉ cần dùng khoảng trắng space bar hay enter và viết tiếp label khác.
11.
Khởi tạo Scene.
Scene chứa tất cả các đối tượng trong Game, nó thường được
dùng để tạp màn hình chính trong game, những level độc lập, và mọi thứ khác
trong game. Tức là mỗi Scene là một tầng độc lập, và trong mỗi Scenen bạn có
thể lập môi trường, vật thể, chi tiết, kể cả design và xây dựng game từ những
thứ nhỏ nhất.
Instancing
Prefabs.
Khi bạn đã có một prefabs bạn có thể copy nó ra thành
nhiều bản một cách dễ dàng, đó gọi là
Instancing prefabs. Để tạo Instancing của bất kỳ một Prefabs nào, chỉ cần drag
nó từ trong Project view qua Hierarchy hay trực tiếp trong Scene view.
Thêm
Component and Scripts.
Khi bạn đã có một Prefabs hoặc game Object đang làm việt bạn
có thể thêm các tính năng cho nó bằng cách sử dụng Component (Script cũng là
một Component). Để thêm một Component chỉ cần chọn đối tượng rồi chọn Component
tương ứng trong menu Component, bạn sẽ thấy xuất hiện các thông số trên cửa sổ
Inspector. Script cũng được mặc định trong menu Component/
Trong trường hợp việc thêm Componet làm gãy liên kết giữa
những GameObject với prefab của nó thì bạn có thể dùng Gameobject -> Apply
Changes to Prefab từ menu để thiết lập lại liên kết đó.
Placing
GameObject.
Khi đã có một GameObject trong Scene bạn có thể dùng công cụ
Transform Tools để di chuyển, hoặc thay đổi giá trị Transform trong Inspector
để có vị trid chnhs xác hơn.
Working
Camera
Camera chính là mắt trong Game, mọi thứ người chơi có thể
nhìn thấy đều thông qua Camera, nó cũng được hiển thị và thay đổi, di chuyển
như bất kỳ một GameObject nào, và nó thực chất cũng là một GameObject và nó có
đầy đủ thuộc tính của GameObject ngoài ra nó còn có các thuộc tính riêng cho
Camera. Unity đã cung cấp một số Script sẵn kèm theo gói cài đặt mẫu Asset khi
bạn khởi tạo mới một project.
Nguồn
sáng
Hầu
như chúng ta phải thêm nguồn sáng cho các bối cảnh của Game.
Có
ba kiểu nguồng sáng cơ bản, mỗi nguồn sáng khác
nhau sẽ thay đổi sắc thái của game rất nhiều.
-
Dirictional Light:
Có thể hiểu là với nguồn sáng này ta có thể định hướng chiếu
cho nó, các tia chiếu là song song.
-
Point Light:
là điểm sáng, thường dùng để tạo các điểm sáng nhỏ trên các Character,
hay các cảnh trong Game theo đúng ý tưởng của chủ nhân.
-
Spotlight:
Đèn
tại chỗ chỉ chiếu theo một chiều hình nón, thường dùng là hiệu ứng chiếu cho
đèn các loại xe, đèn pin, ánh sáng hắt vào object trong các cảnh…
Camera
- Như Camera được sử dụng trong các bộ phim , Camera trong Unity cũng được dùng để hiển thị game trên thế giới cho người chơi. Nó cũng được coi là một Game Object trong Unity. Bạn có thể xoay, di chuyển…. tùy chỉnh nó theo ý tưởng của bạn.
- Camera được sử dụng để hiển thị cảnh trong game, chúng ta có thể làm cho game của mình trở nên độc đáo hơn nhờ tùy chỉnh Camera. Tron g một cảnh, chúng ta có thể có một hoặc rất nhiều Camera.
- Đặc điểm Camera:
o Clear Flags: Xác định các bộ phận mà màn hình sẽ bị xóa. Thuận tiện khi sử dụng nhiều máy ảnh và để vẽ nhiều đổi tượng khác nhau. Không xóa nó sẽ hiển thị màu đen xì.
o Background: Màu nền cho phần màn hình còn lại.
o Culling Mask: Chỉ định các lớp đối tượng của bạn trong Inspector. Cho phép hoặc bỏ qua các đối tượng được hiển thị trong Camera.
o Projection:
§ Perspective: Camera hiển thị các đối tượng theo phối cảnh trọn vẹn.
§ Orthographic: Hiển thị các đối tượng như một thể thống nhất, không có theo nghĩa của phối cảnh(Perspective).
o Size: Kích thước quan sát của Camera khi chọn phép chiếu là: Orthographic.
o Field of view: Chiều rộng của góc nhìn Camera. Được đo bằng độ dọc theo trục Local Y.
o Clipping plane:
§ Near: Khoảng cách gần nhất hiển thị trong Camera.
§ Far: Khoảng cách xa nhất hiển thị được trong tầm nhìn của Camera.
o Normalized View Port Rect:
§ X: Bắt đầu từ vị trí ngang mà Camera hiển thị.
§ Y: Bắt đầu từ vị trí thẳng đứng mà Camera hiển thị.
o Depth: Vị trí. Camera có một giá trị lớn hơn sẽ được hiển thị lên đầu. Tức là cái nào có giá trị lớn hơn thì nó sẽ được ưu tiên được hiển thị lên màn hình.
o Rendering path: Tùy chọn cho việc xác định phương pháp vẽ những gì sẽ được hiển thị lên Camera.
§ Use Player Setting: Sử dụng cài đặt Player.
§ Vertex Lit: tất cả các đối tượng được đưa ra bởi máy ảnh sẽ được trả lại như đối tượng Vertex-Lit.
§ Forward: tất cả các đối tượng sẽ được trả về như một tài liệu. Giống như tiêu chuẩn Unity 2.x.
§ Deferred Lighting (Unity Pro only): Mất phí, không chơi. Tất cả các đối tượng sẽ được rút ra mà không có ánh sáng, sau đó tất cả ánh sáng được trả lại trong hàng đợi Render.
§ Target Texture: Phiên bản free 4.0 đã có. Tham chiếu đến một texture. Cho phép dựng hình High Dynamic Range cho máy ảnh này.
ĐỊA HÌNH
Sử
dụng: Trên Menu chính, chọn Create Terrain
-
Terrain
Script: Tại đây chúng ta có thể vẽ địa hình, nâng/hạ địa hình, vẽ cây, cỏ, cài
đặt cho Terrain.
-
Brushes:
Gồm một số dạng bút lông phục vụ việc vẽ địa hình.
MẮT LƯỚI(MESHES)
Khi một đối tượng
mô hình 3D được Import. Unity sẽ gán cho nó một đại diện như một bộ lưới. Lưới
phải được đính kèm với một Game Object bằng cách sử dụng một thành phần Filter
Meshes.
Định dạng 3D
-
Export
file định dạng 3D như: *.FBX, *.OBJ.
o
Ưu
điểm:
§
Chỉ
xuất ra dữ liệu bạn cần.
§
Kiểm
tra lại dữ liệu.(Import lại)
§
Nhìn
chung tập tin rất nhẹ.
§
Khuyến
khích phương pháp Module.
§
Hỗ
trợ các gói 3D.
o
Nhược
điểm:
§
Có
thể gây chậm trong việc tạo mẫu và sử dụng lại.
§
Khó
có thể theo dõi
-
Sở
hưu các file ứng dụng 3D như: .Max, .Blend.
o
Ưu
điểm:
§
Nhanh
chóng lặp đi lặp lại các quá trình.
§
Đơn
giản việc sử dụng ban đầu.
o
Nhược
điêm:
§
Công
cụ hay bản sao của định dạng đó phải được cài đặt trên máy.
§
Tập
tin có thể cồng kềnh với các file dữ liệu không cần thiết.
§
Các
tập tin lớn có thể làm chậm cập nhật của Unity.
§
Chưa
xác nhận khó khăn để khắc phục sự cố các vấn đề.
Animation View Guide (Legacy)
- Ctrl + 6(Windows): mở Animation View.
- Để sử dụng Animation cơ bản, trước tiên chọn Create new clip. Animation sẽ hiển thị các tùy chọn trên Animation View hoặc trên Inspector. Để áp dụng animation cho một đối tượng nào đó bạn phải chọn vào đối tượng đó à thuộc tính animation tương ứng sẽ hiển thị trên Animation View tương ứng.
- Sử dụng Cuves:
è
Right
– click à add Curves.
Trên
Animation view có thể chọn một thuộc tính hoặc một vào thuộc tính để tùy
biến hoạt hình theo các thuộc tính của đối tượng. Chính sửa Curves bằng cách tại
các frame đã được tạo, kéo đường kẻ theo ý bạn muốn. Nó sẽ hiển thị ngay trên
Scene View hoặc trên Inspector.
Tại các điểm Frame, có thể xóa frame,
chỉnh/chọn tiếp tuyến, ….Có thể sử dụng button nhỏ (+) để thêm Frame hoặc Event cho Animation hoặc click-right lên thanh frame.
Animation Scripting (Legacy): hệ thống Animation của Unity cho phép bạn tạo đẹp nhân vật của mình bằng các pha trộn các vật liệu, chất phụ gia, đồng bộ hóa thời gian, chu kì, các lớp ảnh động, kiểm soát tất cả các các khía cạnh phát lại của hình ảnh động(thời gian, tốc độ, sự pha trộn – trọng lượng)
Một nhân vật hoạt hình luôn có hai vấn đề chính đó là sự di chuyển của nó trong thế giới và tạo hiệu ứng cho phù hợp.
- Animation Blending:
Trong các trò chơi ngày nay, hình ảnh động hòa
trộn làm cho nhân vật trở nên trơn chu hơn. Tại bất cứ thời điểm nào trong
game, bạn đều có thể chuyển đổi qua lại giữa hình ảnh động và hình ảnh
tĩnh(hình ảnh nhàn rỗi).
Đây là nơi các hình ảnh
động được Blending. Tất cả các hình ảnh động được thêm, pha trộn vào nhau để được
hình ảnh động cuối cùng.
Ví dụ: Tạo một chuyển động
đơn giản để xem nhân vật chuyển động nhanh thế nào, và rồi chuyển đổi giữa hoạt
hình động và hoạt hình tĩnh.
function Update () {
if (Input.GetAxis("Vertical") >
0.2)
animation.CrossFade ("walk");
else
animation.CrossFade ("idle");
}
C#:
void Update () {
if (Input.GetAxis("Vertical")
> 0.2)
animation.CrossFade ("Đi mau");
else
animation.CrossFade ("Không làm gì");
}
|
Tạo file Java Script
hoặc C# Script. Copy đoạn mã trên vào và kéo file Script vào nhân vật.
- Animation Layers: là một khái niệm hữu ích giúp bạn nhóm các hình ảnh động và ưu tiên cho chúng.
Hệ thống hoạt hình của Unity có thể pha trộn giữa nhiều Clip hoạt hình
theo ý bạn muốn. Có thể gán lượng pha trộn bằng tay hay sử dụng
animation.CrossFade()(Cái này sẽ sinh liều lượng pha trộn tự động).
Lượng Blen luôn được bình thường
hóa trước khi được áp dụng. Tưởng tượng như bạn có một chu kỳ Walk và một chu kỳ
chạy, cả hai đều có lượng là 1(100%). Khi bình thường hóa thì mỗi chu kỳ chiếm
50% lượng. Tuy nhiên nếu bạn muốn cho bên nào đó có lượng lớn hơn thì bạn có thể
Blen bằng tay.
Ví dụ
Layering
Ví dụ: Bạn phải có một hoạt
hình bắn, một object tĩnh và một Object Walk chu kỳ. Đối tượng Walk và đối tượng
tĩnh sẽ được Blen dựa vào tốc độ của người chơi. Nhưng khi người chơi bắn,
chúng ta chỉ cần hiển thị đối tượng hoạt hình bắn. Vì vậy các hoạt hình động cơ
bản có mức ưu tiên cao hơn. Cách đơn giản nhất để làm điều này đó là tiếp tục
chạy đối tượng Walk và các đối tượng tĩnh(Nhàn rỗi hay đối tượng đứng im) trong
khi bắn. Để làm điều này, chúng ta cần chắc chắn là các đối tượng hoạt hình bắn
ở cao hơn so với đối tượng hoạt hình Walk và đối tượng tĩnh. Điều đó có nghĩa
là hoạt hình bắn sẽ được Blend đầu tiên. Đối tượng Walk và đối tượng tĩnh chỉ
nhận được lượng(Blend) khi đối tượng hoạt hình bắn không sử dụng hết 100% lượng
Blend. Vì khi CrossFade đối tượng hoạt hình bắn trong một lượng sẽ bắt đầu từ 0
và trong một thời gian ngắn sẽ trở thành 100%. Trong khi mới bắt đầu, The Walk và the IDLE layer cũng vẫn nhận được
lượng hòa trộn(Blend). Nhưng khi đối tượng hoạt hình bắn(Shoot) được hoàn thành
và hoàn toàn bị phai nhạt, chúng sẽ không nhận được lượng Blend nào.
- Animation Mixing: Animation Mixing cho phép cắt giảm số Animation mà bạn cần trong game bởi chỉ cần một số Animation được áp dụng trên thân đối tượng. Điều đó có nghĩa là đối tượng hoạt hình có thể được sử dụng chung với các đối tượng hoạt hình khác.
Bạn thêm một Animation Mixing biển đổi tới một Animation bởi lời gọi AddMixingTranform().
Ví dụ Mixing: Trong hoạt hình, giông như khi bạn nghe thấy những làn sóng vỗ tay. Bạn có thể tạo ra những làn sóng vỗ tay hoặc khi nhàn rỗi tùy từng trường hợp đối tượng ở trạng thái nào.Ví dụ thêm một chuyển đổi Mixing từ một biến Transform.
- Animating Characters Procedurally: Nhiều khi chúng ta sẽ cần hoạt hình hóa xương của nhân vật.
- Animation Playback and Sampling: Làm thế nào để lấy lại được mẫu hoạt hình trong Unity khi người chơi sử dụng lại máy đó.
Sound
-
Audio Listener: Giống như một
thiết bị Microphone. Nó nhận đầu vào từ bất cứ một nguồn âm thanh nào trong
Scenes và các âm thanh thông qua máy tính. Đối với hầu hết các ứng dụng, nó là
ý nghĩa nhất để gắn tai nghe lên Main Camera.
Ranh giới/độ ảnh hưởng
âm thanh nghe của Reverb Zone được
áp dụng cho toàn Scene thì có thể nghe thấy âm thanh trên bất cứ địa điểm nào của
Scene.
-
Properties:
Phải
thêm âm thanh vào Scene và chỉnh sửa thuộc tính của âm thanh bên Inspector
View.
o
Audio
Clip: Chọn file âm thanh cho Scene.
o
Mute:
bật/tắt
âm thanh.
o
Bypass
Effects: Lọc nhanh hiệu ứng “by-pass” to audio source. Một
cách dễ dàng nhất để bật/tắt hiệu ứng(effect).
o
Play
on Wake: Nếu enable, âm thanh sẽ được chạy ngay khi ra mắt Scene.
Nếu để Disable, khi cần chạy âm thanh chúng ta phải gọi phương thức/chức năng Play() từ Script.
o
Priority:
Xác
định độ ưu tiên của Audio Source trong số tất cả các Audio Source có trong
Scene.
§ Priority = 0: Rất quan trọng. Sử dụng
ở mức 0 cho bài nhạc để tránh bị thường xuyên trao đổi.
§ Priority =256: Độ quan trọng thấp
nhất(Độ ưu tiên ở mức thấp nhất).
§ Mặc định(default) = 128.
o
Volumn:
Làm
thế nào để âm thanh lớn trên một bộ phận của thế giới Scene từ Audio Source.
o
Pitch:
Số
dùng thay đổi tốc độ của âm thanh. Tốc độ bằng 1 là ở mức chạy bình thường.
o
3D
Source Setting: Cài đặt, cái mà được áp dụng cho Audio
source nếu Audio Clip là một file âm thanh 3D.
o
Pan
Lever: Cài đặt, làm thế nào để máy 3D có được hiệu ứng từ
Audio source.
o
Spread:
Cài
đặt góc ảnh hưởng tới âm thanh 3D Stereo nếu Audio Clip là một âm thanh 3D.
o
Doppler Lever: Xác định bao
nhiêu hiệu ứng âm thanh Dopper sẽ được áp dụng cho Audio Source(Nếu cài đặt là
0 thì sẽ không có hiệu ứng nào được áp dụng).
o
Min
Distance: Với Min Distance, âm thanh sẽ đạt mức to nhất có thể.
Ngoài Min Distance, nó sẽ bắt đầu suy yếu đi. Tăng MinDistance của âm thanh để
được âm thanh lớn hơn trong thế giới 3D và giảm MinDistance để cho âm thanh nhỏ
hơn.
o
Max
Distance: Khoảng cách mà âm thanh dừng suy giảm. Sau khoảng
cách này nó sẽ tạm ngừng không cho MinDistance tăng nữa. Tức là đây là giá trị
Max mà MinDistance sẽ đạt tới.
o
Rolloff
Mode: Làm thế nào nhanh chóng mất dần âm thanh. Giá trị
cao hơn, gần gũi hơn Listener có được trước khi nghe âm thanh.(Điều này được xác
định bởi một Graph).
§ Logarithmic Rolloff: Âm
thanh là lớn khi bạn ở gần nguồn âm thanh. Nhưng khi chúng ta nhận được từ các
đối tượng nó sẽ giảm đi nhanh chóng một cách đáng kể.
§ Linear Rolloff: Càng
xa nguồn âm thanh, bạn nghe thấy càng ít.
§ Custom Rolloff:
o
2D
Sound Setting: Cài đặt áp dụng cho nguồn âm thanh, nếu Audio
Clip là âm thanh 2D.
o
Pan
2D: Cài đặt hiệu ứng
trên nguồn âm thanh.
o
Type
Rolloff:
o
Distance Function:
Volume: Amplitude(0.0 - 1.0) over distance.
Pan: Left(-1.0) to Right(1.0) over distance.
Spread: Angle (degrees 0.0 - 360.0) over distance.
Low-Pass (only if LowPassFilter is attached to the AudioSource): Cutoff Frequency (22000.0-10.0) over distance.
Pan: Left(-1.0) to Right(1.0) over distance.
Spread: Angle (degrees 0.0 - 360.0) over distance.
Low-Pass (only if LowPassFilter is attached to the AudioSource): Cutoff Frequency (22000.0-10.0) over distance.
o
Tạo
một nguồn âm thanh:
§ Import file âm thanh của bạn vào
project. Nó là những Audio Clip.
§ Tới Game Object -> Create Empty
từ menubar.
§ Trên file âm thanh đang chọn trên
Game Object View, chọn Component à Audio à
Audio Source.
§ Thuộc tính của nguồn âm thanh sẽ được
hiển thị trên Inspector View.
Các phần tử giao diện trong Game
(Game Interface Elaments)
Unity đã cho chúng ta một
số cài đặt để có thể tạo giao diện người dùng đồ họa của game(Graphic User
Interface). Bạn có thể sử dụng đối tượng GUI Text và GUI Texture trong Scene hoặc
tùy chính giao diện từ Script.
-
GUI
Script:
Điều khiển Unity cung cấp một chức năng đặc biệt gọi
là OnGUI(). Chức năng OnGUI() được gọi
từ tất cả các frame, nó giống như chức năng Update().Rect(float left, float top, float width, float height);
Ví dụ: Tạo một giao diện đơn giản:
JavaScript:
// JavaScript
function OnGUI () {
if (GUI.Button (Rect (10,10,150,100), "I am a button")) {
print ("You clicked the button!");
}
}
|
using
UnityEngine;
using
System.Collections;
public
class GUI_Learn : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnGUI()
{
GUI.Box(new
Rect(0,0,600,300),"GUI_Box");
}
}
|
Hien thi mot hinh anh, mot bien Texture
2D
Hiển thị một hình ảnh, cần khai báo một
biến Texture 2D, đường dẫn ảnh lấy như trong hình dưới:
Source đã demo trực tiếp
using UnityEngine;
using System.Collections;
public class GUI_Learn : MonoBehaviour {
public Texture2D controlTexture2D;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
private bool flag=false;
string text = "Ví dụ tạo textFild và
textArea";
private bool toggle;
void OnGUI()
{
// Create a Box
GUI.Box(new
Rect(0,0,600,300),"GUI_Box");
// Nghich voi Button
if(!flag)
{
// print(flag);
if(
GUI.Button(new Rect(260, 20, 80, 20)," GUI_Button 1"))
{
flag
= true;
}
}else
{
}
if(flag
== true)
{
if(
GUI.Button(new Rect(260, 60, 80, 20)," GUI_Button 2"))
{
flag
= false;
}
}
//
voi Loader Menu --- Thang nay chua hieu lam
if(
GUI.Button(new Rect(260, 80 , 80, 20), "Lever 1"))
{
Application.LoadLevel(2);
}
if(
GUI.Button(new Rect(260, 100 , 80, 20), "Lever 1"))
{
Application.LoadLevel(1);
}
//
Có thể vẽ vào vào bất cứ thời gian được xác định nào.
//
vi du Neu time chan-> khong ve, neu time le? thi ve
if(Time.time
% 2 < 1)
{
GUI.TextField(new
Rect(260, 120, 80, 20), "text");
}
//
vi tri Top-left, Top-right, Top-Bottom, Bottom_right
GUI.Button(new Rect(0,0, 80, 40),
"Top-Left") ;
GUI.Button(new
Rect(0,Screen.height - 40, 80, 40), "Bottom-left");
GUI.Button(new Rect(Screen.width -
80,0, 80, 40), "Top-Right");
GUI.Button(new
Rect(Screen.width - 80, Screen.height - 40, 80,
40),"Bottom-Right");
//
Hien thi mot hinh anh, mot bien Texture 2D
GUI.Label(new Rect(90,0, 80,80),
controlTexture2D);
GUI.Button(new
Rect(170, 0, 80,80), controlTexture2D);
//
hiển thị Icon với GUIContent trên một BOX
GUI.Box(new Rect(0,100,100,100), new GUIContent("GUI_Content",
controlTexture2D));
//
Hiển thị ToolTip khi Hover chuột
//
Button này sẽ hiển thị Tooltip lên một Label khi người dùng Hover vào Button
//GUI.Button(new
Rect(0,230,60,60), new GUIContent("Click here"," I'm ToolTip
1"));
// Nội dung Tooltip sẽ được hiển thị lên Label này
//GUI.Label(new
Rect(60, 210, 100,30), GUI.tooltip);
//
Vẽ Icon lên ToolTip chưa được
GUI.Button(new
Rect(10,320,60,60), new GUIContent("Click
here",controlTexture2D,"I'm ToolTip 2"));
GUI.Label(new
Rect(100, 390, 200,60), GUI.tooltip);
//
RepeatButton Là một biến thể của Button, nhưng sự khác biệt là: RepeatButton
sẽ trả lời từng khung hình mà nút chuột vẫn còn chán nản(thấp...)
//
Ví dụ: Cách sử dụng cơ bản
if(GUI.RepeatButton(new
Rect(200,300, 100,100),"RepeatButton"))
{
//
Code ở trong này sẽ được thực thi trên tất cả các frame cái mà RepeatButton vẫn
đã Click
print("RepeatButton");
}
text = GUI.TextField(new Rect(200,150,
50,40),text); // Phải có thằng biến text kia mới nhập được xâu
kí tự vào TextField thì phải
//GUI.TextField(new
Rect(400,150, 50,40),text); //
Đúng rồi, test thử cái tghằng này, nếu không có cái biến text kia thì sẽ
khong nhập được String
/*
----------------------- */
//
Toggle sử dụng để tạo CheckBox. Người sử dụng có thể thay đôi trạng thái nhờ
Click
toggle
= GUI.Toggle(new Rect(200, 400, 90,20),toggle,"Check Box");
//
Sử dụng ToolBar/ thanh công cụ dùng để kiểm soát một loạt các nút. Các nút hoạt
động trong nó được theo dõi thông qua số
//
nguyên, chúng ta phải cung cấp các số nguyên như là một đối số trong hàm. Để
làm cho thanh công cụ tương tác
//
chúng ta phải gán số nguyên với các giá trị trả về của hàm. Số phần tử trong
mảng sẽ quy định số nút hoạt động trên ToolBar
toolBarInt = GUI.Toolbar(new Rect(400,0, 300,
40),toolBarInt, toolBarString);
/*
-------------------------- */
/*
----------SelectionGrid---------- */
/*
-------------------------- */
/*
Tương tự như Toolbar, ta kiểm soat thông qua 1 biến số nguyên */
selectionGridInt
= GUI.SelectionGrid(new Rect(400, 80, 200,200), selectionGridInt,
selectionGridString, 2 /* số cột */);
/*
-------------------------- */
/*
----------HorizontalSlider---------- */
/*
-------------Điều khiển thanh trượt ngang từ giá trị nhỏ nhất tới giá trị lớn
nhất------------- */
slider_value
= GUI.HorizontalSlider(new Rect(400, 300, 100, 20), slider_value, 0.0f,
100.0f);
/*
-------------------------- */
/*
----------VerticalSlider---------- */
slider_value
= GUI.VerticalSlider(new Rect(400, 330, 100, 20), slider_value, 0.0f,
100.0f);
/*
-------------------------- */
/*
----------HorizontalScrollbar---------- */
HorizontalScrollbar
= GUI.HorizontalScrollbar(new Rect(400, 360, 100, 20), HorizontalScrollbar,
1.0f, 0.0f, 10.0f);
/*
-------------------------- */
/*
----------ScrollView---------- */
//
Begin the ScrollView
scrollViewVector
= GUI.BeginScrollView (new Rect (25, 25, 100, 100), scrollViewVector, new
Rect (0, 0, 400, 400));
//
Put something inside the ScrollView
innerText
= GUI.TextArea (new Rect (0, 0, 400, 400), innerText);
//
End the ScrollView
GUI.EndScrollView();
/*
-------------------------- */
/*
----------GUI.changed---------- */
/*
---- Dùng để phát hiện người sử dụng đã làm điều gì đó: Click, kéo thả, kéo
thanh cuộn, ....
*/
//
Xác định Button đang được bật cho dù nó đã được click frame này hay không
GUIChanged
= GUI.Toolbar(new Rect(100,300,100,100),GUIChanged, ToolbarStringChanged);
//
Nếu người dùng đã click một nút Toolbar mới frame này, chúng ta sẽ xử lý đầu
vào
if(GUI.changed)
{
Debug.Log("Toolbar
da duoc click");
if(0
== GUIChanged)
{
Debug.Log("Nut
thu nhat da duoc click");
}
else{
Debug.Log("Nut
thu hai da duoc click");
}
}
/*
-------------------------- */
/*
----------Window---------- */
windowRect
= GUI.Window (0, windowRect, WindowFunction, "My Window");
}
void WindowFunction (int windowID) {
//
Draw any Controls inside the window here
//GUI.Button(new
Rect(300,500, 100,100), "hello");
}
}
|
Customization
Có hai cách tùy chỉnh đó là sử dụng: GUI
Skin và GUI Style. Thực chất GUI Skin là một tập hợp các GUI Style.
Layout Modes
-
Điều chỉnh Layout và Layout tự động:
//
Layout
// Fix Layout
GUI.Button(new
Rect(260, 100 , 80, 20), "In Layout");
// Layout Automatic
GUILayout.Button(" Layout Automatic");
|