unity4.x从入门到精通、Unity 5.x游戏开发指南读书摘要(2015-4-21 12:10、2015-12-28 22:12)
生活随笔
收集整理的這篇文章主要介紹了
unity4.x从入门到精通、Unity 5.x游戏开发指南读书摘要(2015-4-21 12:10、2015-12-28 22:12)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
20160330添加:
Unity3d開發(fā)VR第一講---概述 http://www.docin.com/p-1444636517.html Unity對某些虛擬現(xiàn)實(shí)設(shè)備提供了內(nèi)置支持。 Unity從5.3版本開始專注于虛擬現(xiàn)實(shí)Oculus家族設(shè)備,特別是Oculus Rift Development Kit 2(DK2)和消費(fèi)版Gear VR。 Unity5.3版本不再支持note4。 Unity從5.3開始內(nèi)置了VR接口。 需要安裝Oculus runtime 0.8 installed。下載地址www.vrzhinan.com 配置Unity支持VR 打開Edit|Project Settings|Player|Other Settings|Rendering 在監(jiān)視面板中勾選Other Setting中的Virtual Reality Supported using UnityEngine; using UnityEngine.VR;//VR包 public class ToggleVR:MonoBehaviour { private void Update(){ //當(dāng)鍵盤按下V,則切換到VR狀態(tài) if(Input.GetKeyDown(KeyCode.V)){ VRSettings.enabled=|VRSettings.enabled; } } } 當(dāng)勾選了Virtual Reality Supported后,并且DK2已經(jīng)連接到電腦,在Unity中運(yùn)行程序的時候,程序就會在DK2中顯示啦。 自從Unity5.3版本不支持VR后,并不需要為了VR創(chuàng)建兩個攝像機(jī)了。并且Unity會自動為場景中資源進(jìn)行VR優(yōu)化。比如遮擋剔除、陰影渲染、紋理渲染等。 VR最先讓人頭痛的就是眩暈,所以設(shè)備的頻率一定要配置正確。 DK2必須配置成75fps。Gear VR必須是60fps。 屏幕分辨率也是一定要達(dá)到要求才行的。 對于DK2設(shè)備的分辨率為1920*1080大小的75fps。若是商用的Oculus Rift(CV1)則分辨率為2130*1200,大小90fps。 20160225添加: 星球項(xiàng)目換新的UI,選角色界面模型換回圖片
4個角色,每個角色有待機(jī)、響應(yīng)、選中3種狀態(tài)。
用Text代替TextMesh顯示龍幣、積分
用Image代替Sprite顯示龍幣積分底圖
第一個場景的層級管理:
1、層次視圖中選中TipInfoCamera
Layer選擇TipInfo
Culling Mask選中TipInfo,不要選中Default、UI、Role
在Camera Preview可以看到這個攝像機(jī)僅僅照射TipInfo。
Roles節(jié)點(diǎn)下有Role1、Role2、Role3、Role4四個節(jié)點(diǎn)
Role1下TipInfo節(jié)點(diǎn)的Layer選擇TipInfo
彈出一個框Change Layer
Do you want to set layer to TipInfo for all child objects as well?
【Yes change children】【No,this object only】【Cancel】
選擇第一個按鈕。
2、RolesCamera
Layer選擇Default
Culling Mask選中Default,不要選中TipInfo
在Camera Preview可以看到這個攝像機(jī)僅僅照射第2~4個角色模型。
3、Role1Camera
Layer選擇Role1
Culling Mask選中Role1,不要選中Default、UI、TipInfo
在Camera Preview可以看到這個攝像機(jī)僅僅照射第1個角色模型。
4、Role4Camera
Layer選擇Role4
Culling Mask選中Role4,不要選中Default、UI、TipInfo
在Camera Preview可以看到這個攝像機(jī)僅僅照射第4個角色攻擊狀態(tài)的模型。
坦克項(xiàng)目UGUI經(jīng)驗(yàn)總結(jié)2015-10-9 10:44
UGUI動畫變遷
第2、3版坦克選擇UI進(jìn)場離場動畫:
12個坦克節(jié)點(diǎn),每個節(jié)點(diǎn)掛1個Animation組件,Animations組件的Size屬性填2,第0、1個元素分別填進(jìn)場、離場動畫的anim文件,Play Automatically選擇打鉤;第一個坦克節(jié)點(diǎn)還掛1個坦克UI控制腳本,處理OnAnimEventTankUILeave事件;動畫事件在Animation視圖中編輯、添加、刪除。
坦克結(jié)算UI:
針對每個MVP節(jié)點(diǎn)在項(xiàng)目視圖存放anim文件的路徑下創(chuàng)建1個Animator Controller,命名為A1MVPAnim等等,每個MVP節(jié)點(diǎn)掛1個Animator組件, Controller填A(yù)1MVPAnim等等,在狀態(tài)機(jī)上拖進(jìn)場和離場的anim文件進(jìn)來,掛一個坦克結(jié)算UI控制腳本。
Unity 2D游戲開發(fā)快速入門第一章
http://www.docin.com/p-895914135.html
RangTanks(狂怒坦克)
Win7+Unity4.5.3
在2013年發(fā)布4.3版本時,就開始提供對制作2D游戲的支持了。
Texture Type:表示圖片的類型。對于2D游戲項(xiàng)目,系統(tǒng)默認(rèn)設(shè)置為Sprite(2D\uGUI);對于3D游戲項(xiàng)目,默認(rèn)設(shè)置 為Texture。
Filter:此屬性一共有3個選項(xiàng):Point、Bilinear、Trilinear。
Max Size:表示圖片的最大尺寸。圖片Platform實(shí)際尺寸是397*221,屬性中最接近397的是512。
Format:表示圖片的格式。
http://www.docin.com/p-895914134.html UGUI全面實(shí)踐教程
http://www.docin.com/p-1155996353.html
NGUI全面實(shí)踐教程
http://www.docin.com/p-1117662568.html
NGUI發(fā)布于2012年初,發(fā)布者從版本1.08開始持續(xù)不斷的將NGUI插件更新到現(xiàn)在的3.8.1版本(2015年3月23日的數(shù)據(jù))。
Win7+NGUI3.8.0+Unity4.5.5。
Unity3d UGUI 官方示例 包括UGUI各個控件的用法的示例
http://download.csdn.net/detail/xushuai20142014/8809107#comment
uGUI 2d面板顯示3D模型問題
用RawImage+RenderTexture可以做,參考官方Demo的RenderTexture例子。
UGUI全面實(shí)踐教程
http://www.docin.com/p-1155996353.html
chap7官方示例及其簡要說明
7.7實(shí)時紋理繪制示例——RenderTexture
Chap5控制動畫
——Unity開發(fā)實(shí)戰(zhàn)這一章可讀性很差,略過
Mecanim
Avatar
http://edu.51cto.com/lesson/id-46981.html
3個核心控件:Text、Image、Button
小雪花是Anchor(錨點(diǎn))
小圓點(diǎn)是Pivot(中心點(diǎn)、重心點(diǎn)),0~1表示沒有離開控件本身
中心點(diǎn)和錨點(diǎn)重合:偏移量PosX,PosY為初始值0,0
http://edu.51cto.com/lesson/id-46982.html
Text控件
Txt_UserName
InputField控件:1個母控件,2個子控件
20160116添加:
NGUI版本:
2012年初,NGUI 1.0.8發(fā)布
2.2.2
2.6.1
2.6.3
2013-08-06之前,2.6.4
2.7.0
3.0.0
3.0.9 f4
3.5.4
3.6.0
4手柄+NGUI3.7.8
3.8.0,Win7+Unity4.5.5及以上版本
2015年3月23日,3.8.1
4.0
NGUI將全部的源碼分成了5個部分:
Editor(與Unity編輯器相關(guān)的腳本)、
Interaction(與交互功能相關(guān)的腳本)、
Internal(間接發(fā)揮作用的腳本)、
Tweening(與補(bǔ)間動畫功能相關(guān)的腳本)、
UI(與UI功能相關(guān)的腳本)。
高雪峰:Unity 3D NGUI 實(shí)戰(zhàn)教程
http://wenku.baidu.com/view/ba880d8252d380eb63946d77.html?from=search
chap1初始NGUI
1.1游戲UI開發(fā)介紹
1.2什么是NGUI
chap2 NGUI基礎(chǔ)
2.1導(dǎo)入NGUI插件
2.1.1NGUI版本介紹
2.1.2NGUI的下載和購買
2.1.3導(dǎo)入NGUI插件應(yīng)用
2.1.4導(dǎo)入常見問題
2.2認(rèn)識基本的UI資源
2.2.1什么是UI精靈(Sprite)
2.2.2什么是UI圖集(Atlas)
2.2.3什么是UI貼圖(Texture)
2.2.4什么是UI標(biāo)簽(Label)
2.2.5什么是UI字體(Font)
2.3制作第一個UI圖集
2.3.1學(xué)會解剖UI的資源結(jié)構(gòu)
2.3.2學(xué)會導(dǎo)入切好的美術(shù)資源
2.3.3用Atlas Maker制作圖集
2.4制作第一個UI字體
2.4.1為什么要制作UI字體
2.4.2靜態(tài)字體和動態(tài)字體
2.4.3制作靜態(tài)字體介紹
2.4.4制作動態(tài)字體介紹
2.5創(chuàng)建第一個UI
2.5.1創(chuàng)建一個2D UI
2.5.2創(chuàng)建一個3D UI
2.5.3了解UIRoot、UIPanel和UICamera組件
2.6 2DUI和3DUI的工作原理
2.6.1 2DUI的工作原理
2.6.2 3DUI的工作原理
2.6.3 如何判斷該選擇哪一種UI
2.7深度(Depth)概念
2.7.1強(qiáng)化對深度的理解
2.7.2小心相機(jī)的深度
chap3核心組件
3.1什么是UI控件
3.2制作精靈(UISprite)
3.2.1怎樣判斷是否應(yīng)該使用精靈
3.2.2創(chuàng)建精靈
3.2.3Sprite組件的設(shè)置
3.3制作標(biāo)簽(Label)
3.3.1怎樣判斷是否應(yīng)該使用標(biāo)簽
3.3.2創(chuàng)建標(biāo)簽
3.3.3Label的文字設(shè)置
3.4制作UI紋理(UITexture)
3.4.1什么情況下使用UITexture
3.4.2創(chuàng)建紋理
3.4.3紋理的設(shè)置
3.5制作按鈕(Button)
3.6制作進(jìn)度條(UISlider)
3.7制作輸入框(Input)
3.8制作滾動視圖(ScrollView)
3.9制作復(fù)選框(Toggle)
3.10制作下拉菜單(PopupList)
chap4 UI動畫
4.1常見的兩種UI動畫介紹
4.1.1要區(qū)分UI動畫和UI特效兩個概念
4.1.2關(guān)于Tween動畫
4.1.3關(guān)于Animation動畫
4.2漸隱漸現(xiàn)動畫(透明度動畫)
4.3顏色變化動畫(變色動畫)
4.4位置變化動畫(位移動畫)
4.5旋轉(zhuǎn)變化動畫(旋轉(zhuǎn)動畫)
4.6大小變化動畫(放縮動畫)
4.7Tween動畫總結(jié)
4.8動畫控制組件UIPlayTween
4.8動畫控制組件UIPlayAnimation
chap5其他組件
chap6 NGUI實(shí)戰(zhàn)進(jìn)階
chap7用代碼深度控制UI
chap8實(shí)用案例演示
chap9常見疑難問題解答 圖集Atlas
將多張零散的圖片融合成為一張圖,低碳環(huán)保。
字體Font
動態(tài)字體
使用標(biāo)準(zhǔn)的字體文件.TTF。
圖集字體
將字體弄到圖集里,根據(jù)坐標(biāo)靜態(tài)調(diào)用。
好處可以使用各種效果,以及聊天表情。
面板Panel
用于組織界面元素。每一個面板,都會讓層從0開始。
NGUI
Panel常規(guī)面板
常規(guī)
靜態(tài)
切割
選項(xiàng)卡要玩家單獨(dú)實(shí)現(xiàn)。
文本欄Label
用于顯示文本信息
NGUI
顏色
圖片:需要自定義輸入內(nèi)容
陰影
輪廓
按鈕Buton
NGUI
舊版本采用消息機(jī)制,新版本使用了委托的方式
普通按鈕
圖片按鈕
Tween組件
在兩個值之間隨時間進(jìn)行漸變,用于實(shí)現(xiàn)一些伴隨時間的效果。
比如淡入、淡出、移動、旋轉(zhuǎn)、放大縮小等。
NGUI
iTween
NGUI:多個物體可以屬于一個層。層一定要弄好,不能混亂。對齊方式一定要設(shè)定好,否則大亂。
統(tǒng)一的層管理,我們約定:基礎(chǔ)背景0~1層,一級面板在2層,面板元素3~6層,二級面板7~10層,不能超過3級面板。 Unity最火十大插件20130130
1、2D Toolkit 1.90 Final
能夠讓開發(fā)者在Unity中進(jìn)行2D開發(fā)。
能夠完全支持Unity4,它對于2.5D場景的開發(fā)和建立也十分有效。
2、NGUI 2.3.1
3、Playmaker 1.4.5
4、EasyTouch 2.5.1 & EasyJoystick 1.0
5、UnIDE 1.0.5
UnIDE 1.0.5新增了對Mac OS X系統(tǒng)的支持,性能更加流暢。
6、Tile Based Map and Nav 2.8b
7、FX Maker 1.27
是一款制作特效的工具,它專為移動操作系統(tǒng)做了優(yōu)化。
包括300種Prefab特效,300種紋理結(jié)構(gòu)、100種網(wǎng)格、100種曲線效果。
由開發(fā)商IGSoft提供。
8、Toon shader 1.5
是一款卡通著色器,適用于iOS系統(tǒng)。
9、Top-Down Assets Mobile Final
是一個游戲視圖工具包。
10、83 Explosion Sound Effects 1.1
這是一個聲音特效工具包,包含83個WAV立體聲文件。這些聲響均是爆炸聲響。
所有的聲音文件均為16bit 44.1KHz立體聲WAV文件。
20160119添加:
密碼9900
http://www.manew.com/thread-1206-1-1.html
第59講
Mecanim讀作Mec+anim
動畫片段Animation Clip
身體遮罩Body Mask,以.mask保存
Avatar讀作Ava+tar,屬于子資源
Animator組件
Animator Controller,屬于資源
http://www.manew.com/thread-1207-1-1.html
第60講:
創(chuàng)建角色資源的三個主要步驟:
建模、骨骼設(shè)置、蒙皮
自動角色系統(tǒng)或角色產(chǎn)生軟件:
Poser,Makehuman or Mixamo
Unity中,標(biāo)準(zhǔn)立方體盒子是1米
正常角色的高度是2米
第62講
http://www.manew.com/thread-1209-1-1.html
單擊模型標(biāo)簽,改變縮放系數(shù),點(diǎn)擊實(shí)施按鈕
人類類型角色都有類似的骨骼結(jié)構(gòu):軀干、頭部、四肢
骨骼的創(chuàng)建和命名時要遵循一定規(guī)范
創(chuàng)建角色的Avatar
分析導(dǎo)入的角色資源的骨骼結(jié)構(gòu),其過程是與Mecanim中已有的簡化的標(biāo)準(zhǔn)人類骨骼進(jìn)行對比
Rig標(biāo)簽
動畫類型選擇Hunmanoid
Unity4.2.0打開Unity4.6.4創(chuàng)建的工程會出現(xiàn)以下提示:
Project incompatible,New version of Unity required
Your project was created with a newer version of Unity.
You should upgrade to the latest version of Unity.
You risk data loss if you continue!
【Quit】【Continue and risk data loss】
打開一個舊版本的工程會出現(xiàn)提示:
Upgrading project
Upgrading project
After upgrading the project,you can not open the project with older versions of Unity anymore.
【Continue】【Quit】
點(diǎn)擊【Continue】會出現(xiàn)提示:
Project reimport required
【Reimport Project】【Quit】
Unity3D光照貼圖烘焙知識
http://www.docin.com/p-1046168380.html
Unity在4.x版本里使用光照烘焙的方法,采用的是Autodesk的Beast,Beast只能烘焙靜態(tài)的光照貼圖,而不支持動態(tài)光照。
使用Beast的工作流程是:先建造一個場景,然后在場景中布置各種光源,進(jìn)而點(diǎn)擊Bake操作鍵,接下來整個烘焙過程可能需要幾小時。
Unity 5.0中會舍棄掉Beast,取而代之的是PowerVR Ray Tracing和Enlighten這兩種方案的結(jié)合。PowerVR Ray Tracing的特點(diǎn)是不需要烘焙過程,速度非常快,但是效果不是非常理想。Enlighten的特點(diǎn)是需要一定的烘焙過程,但是效果非常好。PowerVR Ray Tracing負(fù)責(zé)編輯器中的編輯模式,即所見即所得的模式;而Enlighten會負(fù)責(zé)游戲內(nèi)的實(shí)時渲染。
http://unity3d.com/cn/unity/whats-new/unity-3.5
Unity3.5新特性與改進(jìn):
1、忍者飛鏢粒子系統(tǒng)
2、內(nèi)置尋路
3、升級的遮擋剔除、新的LOD
4、Google Chrome Native Client deployment
5、線性空間照明和HDR
http://unity3d.com/cn/unity/whats-new/unity-3.5.5
Unity 3.5.5主要包含Unity 3.5的修復(fù)。
http://unity3d.com/cn/unity/whats-new/unity-4.0
Unity 4.0新的強(qiáng)大的特性:
1、Mecanim,驅(qū)動角色或物件的新的動畫系統(tǒng)
2、所有平臺的實(shí)時陰影
3、DX11渲染
4、忍者飛鏢粒子系統(tǒng)更新了世界碰撞功能
5、Adobe Flash和Linux兩個新平臺
6、跨平臺動態(tài)字體
http://unity3d.com/cn/unity/whats-new/unity-4.1
Unity 4.1帶來了如下新特性:
1、更強(qiáng)大的內(nèi)存分析器
2、AirPlay支持
3、Mecanim更新
4、Shader更新
5、移動平臺支持Allegorithmic Substances
http://unity3d.com/cn/unity/whats-new/unity-4.1.5
Unity 4.1.5帶來一些修正。
發(fā)行說明:
修正Windows上MonoDevelop的問題
已知問題:
Win8上MonoDevelop作為默認(rèn)編輯器啟動時不能自動打開腳本
http://unity3d.com/cn/unity/whats-new/unity-4.6.2
Unity 4.6.2帶來一些改進(jìn)和修正
發(fā)行說明:
特性:
使用il2cpp支持iOS 64位
變更:
不再支持Flash目標(biāo)編譯。
改進(jìn):
修復(fù):
iOS:修復(fù)Xcode6.2支持
http://unity3d.com/cn/unity/whats-new/unity-4.6.4
Unity 4.6.4帶來一些改進(jìn)和修正
發(fā)行說明:
特性:
Unity免費(fèi)版中支持Intel實(shí)感插件
改進(jìn):
iOS:支持Xcode6.3
變更:
應(yīng)蘋果要求,支持的最低iOS版本升為5.1
修復(fù):
http://unity3d.com/cn/unity/whats-new/unity-5.0
Unity 5.0包含強(qiáng)大的新特性:
1、基于物理的標(biāo)準(zhǔn)著色器
2、實(shí)時全局照明
3、混音器
4、HDR反射探頭增強(qiáng)視覺保真度
5、PhysX 3.3帶來了3D物理方面極大的性能提升
6、主要更新了動畫系統(tǒng)
7、WebGL預(yù)覽
http://unity3d.com/cn/unity/whats-new/unity-5.0.1
Unity 5.0.1帶來新特性、一些改進(jìn)、變更和許多修復(fù)。
發(fā)行說明:
改進(jìn):
Android:手柄輸入優(yōu)化,修復(fù)在一些較老設(shè)備上變慢的問題
變更:
修復(fù):
iOS:增加Xcode6.3兼容性
http://unity3d.com/cn/unity/whats-new/unity-5.0.2
Unity 5.0.2帶來新特性、一些改進(jìn)、少許變更和大量修復(fù)。
發(fā)行說明:
特性:
改進(jìn):
Editor:Minimum API Level列表增加Android 5.0 and 5.1
變更:
修復(fù):
iOS:增加Xcode6.3建立并運(yùn)行的支持
羅盛譽(yù):Unity 5.x游戲開發(fā)指南
http://vdisk.weibo.com/s/e41M8kW4cptg
chap4 3D基礎(chǔ)知識
4.1 Camera攝像機(jī)
4.1.1攝像機(jī)參數(shù)
攝像機(jī)參數(shù)
參數(shù)|說明
Clear Flags|清除標(biāo)記,決定屏幕的哪部分被清除。該項(xiàng)一般用于使用多臺攝像機(jī)來描繪不同游戲?qū)ο蟮那闆r。
Depth only:深度相機(jī),只渲染采集到的畫面。
Culling Mask|剔除遮罩。攝像機(jī)將看到勾選的層,忽略未被勾選的層。
Projection|投射方式。
Perspective:透視。攝像機(jī)以正交方式渲染畫面,拍攝區(qū)域是一個截錐體。
Orthographic:正交。攝像機(jī)以正交方式渲染畫面,拍攝區(qū)域是一個長方體。
Depth|該項(xiàng)用于控制多個攝像機(jī)的渲染優(yōu)先級。數(shù)值越大優(yōu)先級越高。優(yōu)先級高的攝像機(jī)拍攝的畫面將覆蓋在優(yōu)先級低的攝像機(jī)的畫面上。
Rendering Path|渲染路徑。該項(xiàng)用于指定攝像機(jī)的渲染方法。
Use Player Setting:攝像機(jī)將使用設(shè)置的渲染方法,即Project Settings下Player中的設(shè)置。
Target Texture|目標(biāo)紋理。將攝像機(jī)畫面輸出到一張貼圖而不是屏幕,可用于實(shí)現(xiàn)畫中畫或者畫面特效。
Occlusion Culling|是否剔除物體背向攝像機(jī)的部分。
HDR|高動態(tài)光照渲染
4.1.2攝像機(jī)投射
4.2 3D模型
4.2.1 Mesh網(wǎng)格模型
4.2.2 Texture貼圖
4.2.3 Material材質(zhì)
4.2.4對應(yīng)組件
4.2.5骨骼動畫
4.3小結(jié)
4.4習(xí)題
chap6 創(chuàng)建人物
6.1 Mecanim系統(tǒng)
Mecanim系統(tǒng)是Unity在4.0版本開始引入的新動畫系統(tǒng),它提供了以下幾種功能。
為人形角色提供了簡單的設(shè)置和制作流程,包括Avatar的創(chuàng)建和對Muscle definitions肌肉定義的調(diào)節(jié)。
動畫的復(fù)用性。主要通過動畫重定向?qū)崿F(xiàn),可以非常方便地把動畫從一個角色模型應(yīng)用到具有相同骨骼結(jié)構(gòu)的其他角色模型上。
通過可視化的工具可以方便地創(chuàng)建、預(yù)覽動畫或者管理不同狀態(tài)的切換。
身體邏輯,如下半身在執(zhí)行跑步動作的同時,上半身在執(zhí)行開槍動作。
一般來說,整個人物的創(chuàng)建分為以下3個階段。
資源準(zhǔn)備和導(dǎo)入階段。
狀態(tài)機(jī)階段。
腳本階段。
6.2 導(dǎo)入模型
6.2.1模型導(dǎo)入設(shè)置
6.2.2 Avatar的設(shè)置
6.3狀態(tài)機(jī)
6.3.1 Animator
6.3.2添加碰撞體
6.3.3添加攝像機(jī)
6.3.4動作混合與控制
6.4反向動力學(xué)
6.5人體動畫重定向
6.6小結(jié)
6.7習(xí)題
chap9用戶界面
Unity中的UI的發(fā)展從最早的OnGUI系統(tǒng),到之后EzGUI和NGUI兩個插件的階段。現(xiàn)在我們有了最新的官方的uGUI系統(tǒng),它借鑒了NGUI的很多設(shè)計(jì),例如NGUI中所有的UI元素都放在UIRoot根節(jié)點(diǎn)下,類似地,uGUI中的所有元素都放置在Canvas畫布下。 9.1Sprite精靈
精靈是UI以及Unity 2D的基本元素。在UI系統(tǒng)中,所有圖片的顯示都必須通過精靈。
如果建立工程時選擇的是2D工程,那么導(dǎo)入的所有圖片會自動設(shè)置為精靈;而如果是3D,那么需要對圖片的導(dǎo)入設(shè)置進(jìn)行更改。
9.1.1圖片設(shè)置為精靈
在監(jiān)視窗口中將紋理類型設(shè)置為Sprite(2D and UI),并點(diǎn)擊窗口右下角的Apply按鈕。
9.1.2圖片切割為多個精靈
當(dāng)精靈模式為Single時,表明整張圖片將作為一個精靈;當(dāng)精靈模式為Multiple時,表明整張圖片包含多個精靈。我們需要圖片進(jìn)行切割。
9.1.3設(shè)置Border邊界
9.1.4Pivot錨點(diǎn)
Pivot錨點(diǎn)在精靈編輯器界面以藍(lán)色空心圓鈕表示。
9.2Canvas畫布
Canvas實(shí)際上是一個游戲?qū)ο笊辖壎薈anvas組件。所有UI元素都必須是Canvas的子對象。
9.2.1創(chuàng)建畫布
9.2.2畫布參數(shù)
第一個參數(shù)渲染模式有3種:
1.屏幕空間-覆蓋模式的畫布會填滿整個屏幕空間,并將畫布下的所有UI元素置于屏幕的最上層,或者說畫布的畫面永遠(yuǎn)覆蓋其他普通3D畫面。如果屏幕尺寸被改變,畫布將自動改變尺寸來匹配屏幕。
Pixel Perfect:使UI元素像素對應(yīng),效果就是邊緣清晰不模糊。
Sort Layer:用以指明畫布的深度。
2.屏幕空間-攝像機(jī)模式和屏幕空間-覆蓋模式相似。不同的是,在該模式下,畫布會被放置在指定攝像機(jī)的前方。
Pixel Perfect:只有RenderMode為Screen類型時才有的選項(xiàng)。使UI元素像素對應(yīng),效果就是邊緣清晰不模糊。
屏幕空間-攝像機(jī)模式比屏幕空間-覆蓋模式多了下面幾個參數(shù)。
Render Camera:攝像機(jī)。
Plane Distance:畫布平面距離攝像機(jī)的距離。
Sorting Layer:用以指明畫布的深度。
Order in Layer:在相同Sorting Layer下的畫布顯示先后順序。數(shù)字越高,顯示的優(yōu)先級也就越高。
3.世界空間模式。在此渲染模式下,畫布被視作與場景中其他普通游戲?qū)ο笮再|(zhì)相同的類似一張面片的對象。畫布的尺寸可以通過Rect Transform設(shè)置,所有UI元素可能位于普通3D物體的前面或者后面顯示。當(dāng)UI為場景的一部分時,可使用這個模式。
9.3 Image圖片
點(diǎn)擊導(dǎo)航菜單欄|GameObject|UI|Image導(dǎo)航欄,創(chuàng)建一個Image元素。
Rect Transform:所有UI元素都是以矩形來表現(xiàn)的。
RectTransform是繼承自Transform的一個組件,是所有UI元素都具有也必須具有的組件。
一共有9種錨點(diǎn)(Anchor)。當(dāng)選定一種錨點(diǎn)后,該錨點(diǎn)為UI元素的坐標(biāo)原點(diǎn)。
縮放元素要用width和height,而不用scale,因?yàn)閟cale會產(chǎn)生很多影響,例如字體的大小等。
選擇“img01”的圖片,并點(diǎn)擊Texture Type欄的選擇條選擇Sprite。
Sprite精靈是所有UI和Unity 2D所使用的圖片導(dǎo)入格式。
Image的參數(shù)
參數(shù)|說明
Source Image|原圖,指定顯示的圖片
Color|顏色,設(shè)置圖片的疊加顏色,默認(rèn)設(shè)置為白色,顯示與原圖一致
Material|材質(zhì),可以指定自定義的材質(zhì),默認(rèn)留空即可
Image Type|顯示的類型,有簡單、切片、磚塊、填充4種類型
Preserve Aspect|簡單、填充類型特有參數(shù),是否保留精靈的原圖形,而不進(jìn)行自動剔除
Set Native Size|點(diǎn)擊該按鈕使顯示與原圖尺寸對應(yīng)
// 填充類型
public void SetRage(int Heroindex,float Rage)
{
Image img=m_ImageWeapon2[Heroindex].GetComponent<Image>();
img.fillAmount=Rage;
}
9.5 Text文本
直接在文本組件的Text參數(shù)中填文本即可。
所有UI元素都可以添加輪廓及陰影效果,這兩個效果也被Text元素所經(jīng)常使用。
9.5.2添加陰影
9.5.3添加輪廓
chap15導(dǎo)航系統(tǒng)
15.1實(shí)現(xiàn)導(dǎo)航系統(tǒng)
15.1.1建立場景
15.1.2設(shè)置NavMesh
15.1.3烘焙
15.1.4設(shè)置導(dǎo)航代理
15.2障礙物
15.3分離網(wǎng)格鏈接
15.4小結(jié)
15.5習(xí)題
chap15導(dǎo)航系統(tǒng)
導(dǎo)航系統(tǒng)(navigation system)可以讓人物在場景里智能地移動、繞過障礙等。
導(dǎo)航系統(tǒng)用NavMesh來解析環(huán)境。
15.1實(shí)現(xiàn)導(dǎo)航系統(tǒng)
本節(jié)首先創(chuàng)建場景并烘焙導(dǎo)航網(wǎng)絡(luò),接著創(chuàng)建導(dǎo)航代理,以實(shí)現(xiàn)讓角色繞過重重障礙到達(dá)終點(diǎn)的功能。
chap19 2D游戲基礎(chǔ)
19.1正交攝像機(jī)
19.2精靈
19.2.1精靈實(shí)現(xiàn)
19.2.2調(diào)整精靈尺寸
19.2.3精靈渲染器
19.2.4圖片導(dǎo)入設(shè)置
19.2.5精靈編輯
19.2.6精靈圖集
19.3 2D物理系統(tǒng)
19.3.1剛體
19.3.2碰撞體
19.3.3 Joint 2D
19.3.4 Constant Force 2D
19.3.5 Effector 2D
19.4小結(jié)
19.5習(xí)題
20150714添加:
Unity3d資源反編譯(DisUnity) v0.3.3 官方最新版
http://www.cr173.com/soft/97114.html
——經(jīng)測試,4.x的Unity資源可以反編譯出來,5.x的不行
disunity extract F:\hxhwin7\Unity4.6.4\disunity\TankExe\tank_Data\*.*
disunity extract U3d5.02XunLong0619testdemo\assets\bin\Data\*.*
disunity extract Unity4_20150608\assets\bin\Data\*.*
disunity extract 20150601\assets\bin\Data\*.*
爐石傳說:http://pan.baidu.com/s/1c0tU6J2 密碼:fu2q
使用Mono進(jìn)行平臺無關(guān)的.NET開發(fā)
http://wenku.baidu.com/link?url=DbNijkKcqJGeXvyJfaVUqcnYMDZOQovpNdqjrtIsrM3WPMOaegr9B779rtxrV6MowVodeAYFje1HSjW14kauWBpFOYmD_SRVXTpKwsJxXGG
CLI公共語言基礎(chǔ)結(jié)構(gòu)Infrastruction
.NET的平臺無關(guān)性
微軟公司自己不提供.NET在Mac、Linux等平臺下的安裝包。
這兩份規(guī)范是:
ECMA-334定義了C#編程語言的語法和語義;
ECMA-335定義了許多.NET平臺的細(xì)節(jié),統(tǒng)稱為CLI。
ECMA-335規(guī)范分為6個部分:
部分1:架構(gòu)
部分2:元數(shù)據(jù)
部分3:公共中間語言CIL
部分4:類庫
部分5:二進(jìn)制格式
部分6:附件
除了微軟的CLR、Microsoft Silverlight和Microsoft .NET Compact Framework之外,還有另外兩種主流的CLI實(shí)現(xiàn):
Mono、Portable .NET。
Mono是與C# 2.0/NET2.0相兼容的。
Mono是還沒有完全與C# 3.0或NET3.0/3.5相兼容的。
許多C# 3.0的語言特性已經(jīng)是Mono 1.2.5的一部分了,包括隱式類型、對象初始化語法和匿名類型。
C:\Program Files (x86)\Unity\Editor\Data\Mono\bin>mono --version
Mono JIT compiler version 2.0 (Visual Studio built mono)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
??????? TLS:?????????? normal
??????? GC:??????????? Included Boehm (with typed GC)
??????? SIGSEGV:?????? normal
??????? Notification:? Thread + polling
??????? Architecture:? x86
??????? Disabled:????? none
C:\Program Files\Unity\Editor\Data\Mono\bin>mono --version
Mono JIT compiler version 2.0 (Visual Studio built mono)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
??????? TLS:?????????? normal
??????? GC:??????????? Included Boehm (with typed GC)
??????? SIGSEGV:?????? normal
??????? Notification:? Thread + polling
??????? Architecture:? x86
??????? Disabled:????? none
與微軟的CLR發(fā)布相同,Mono也提供了多種托管的編譯器:
mcs/gmcs,C#編譯器
vbnc,Mono Visual Basic編譯器
booc,Boo語言編譯器
ilasm/ilasm2,Mono CIL編譯器
Mono項(xiàng)目的第一個C#編譯器是mcs,并且它完全兼容C# 1.1。
通用mono C#編譯器(gmcs)是mcs用于支持.NET 2.0特有的C#語言特性和引用基于.NET 2.0的基類庫的版本。C:\Program Files (x86)\Unity\Editor\Data \Mono\lib\mono\2.0>gmcs -?
Mono C# compiler, Copyright 2001 - 2008 Novell, Inc.
mcs [options] source-files
?? --about????????????? About the Mono C# compiler
?? -addmodule:M1[,Mn]?? Adds the module to the generated assembly
?? -checked[+|-]??????? Sets default aritmetic overflow context
?? -codepage:ID???????? Sets code page to the one in ID (number, utf8, reset)
?? -clscheck[+|-]?????? Disables CLS Compliance verifications
?? -define:S1[;S2]????? Defines one or more conditional symbols (short: -d)
?? -debug[+|-], -g????? Generate debugging information
?? -delaysign[+|-]????? Only insert the public key into the assembly (no signing
)
?? -doc:FILE??????????? Process documentation comments to XML file
?? -help??????????????? Lists all compiler options (short: -?)
?? -keycontainer:NAME?? The key pair container used to sign the output assembly
?? -keyfile:FILE??????? The key file used to strongname the ouput assembly
?? -langversion:TEXT??? Specifies language version: ISO-1, ISO-2, Default, or Fu
ture
?? -lib:PATH1[,PATHn]?? Specifies the location of referenced assemblies
?? -main:CLASS????????? Specifies the class with the Main method (short: -m)
?? -noconfig??????????? Disables implicitly referenced assemblies
?? -nostdlib[+|-]?????? Does not reference mscorlib.dll library
?? -nowarn:W1[,Wn]????? Suppress one or more compiler warnings
?? -optimize[+|-]?????? Enables advanced compiler optimizations (short: -o)
?? -out:FILE??????????? Specifies output assembly name
?? -pkg:P1[,Pn]???????? References packages P1..Pn
?? -platform:ARCH?????? Specifies the target platform of the output assembly
??????????????????????? ARCH can be one of: anycpu, x86, x64 or itanium
?? -recurse:SPEC??????? Recursively compiles files according to SPEC pattern
?? -reference:A1[,An]?? Imports metadata from the specified assembly (short: -r) -reference:ALIAS=A?? Imports metadata using specified extern alias (short: -r
)
?? -target:KIND???????? Specifies the format of the output assembly (short: -t)
??????????????????????? KIND can be one of: exe, winexe, library, module
?? -unsafe[+|-]???????? Allows to compile code which uses unsafe keyword
?? -warnaserror[+|-]??? Treats all warnings as errors
?? -warnaserror[+|-]:W1[,Wn] Treats one or more compiler warnings as errors
?? -warn:0-4??????????? Sets warning level, the default is 4 (short -w:)
?? -help2?????????????? Shows internal compiler options Resources:
?? -linkresource:FILE[,ID] Links FILE as a resource (short: -linkres)
?? -resource:FILE[,ID]???? Embed FILE as a resource (short: -res)
?? -win32res:FILE????????? Specifies Win32 resource file (.res)
?? -win32icon:FILE???????? Use this icon for the output
?? @file?????????????????? Read response file for more options Options can be of the form -option or /option
顯示特定程序集中C#指定類型的定義。
C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0>monop System.Object
[Serializable]
public class Object { public Object (); public static bool Equals (object objA, object objB);
??????? public static bool ReferenceEquals (object objA, object objB);
??????? public virtual bool Equals (object obj);
??????? protected override void Finalize ();
??????? public virtual int GetHashCode ();
??????? public Type GetType ();
??????? protected object MemberwiseClone ();
??????? public virtual string ToString ();
}
C#開發(fā)Android應(yīng)用實(shí)戰(zhàn) 使用Mono for Android和.NET C#
Mono for Android程序集
程序集,說明
Mono.Android.dll,該程序集包含了綁定到Android API的C#
Mono.CompilerServices.SymbolWriter.dll,該程序集主要是針對編譯器編寫者
Mono.Data.Sqlite.dll,針對SQLite的ADO.NET提供程序
Mono.Data.Tds.dll,對TDS協(xié)議的支持;主要用于為System.Data內(nèi)的 System.Data.SqlClient提供支持
Mono.Security.dll,加密API
mscorlib.dll,Silverlight
OpenTK.dll,OpenGL/OpenAL面向?qū)ο驛PI,可對其進(jìn)行擴(kuò)展以提供Android設(shè)備支持
System.dll,Silverlight,再加上來自下列命名空間中的類型: System.Collections.SpecializedSystem.ComponentModel.Design
System.DiagnosticsSystem.IO.CompressionSystem.Net
System.Net.CacheSystem.Net.Mail
System.Net.NetworkInformation
System.Net.Security
System.Net.Sockets
System.Security.Authentication
System.Security.Cryptography
System.Timer
System.Core.dll,Silverlight
System.Data.dll,刪除了部分功能的.NET 3.5
System.Json.dll,Silverlight
System.Runtime.Serialization.dll,Silverlight
System.ServiceModel.dll,Silverlight Alpha中所呈現(xiàn)的WCF堆棧
……
System.Xml.dll,.NET 3.5
System.Xml.Linq.dll,.NET 3.5
chap15 在Mono for Android、MonoTouch和Windows Phone7之間共享代碼 15.1三大平臺
針對iOS的MonoTouch、Windows Phone上的.NET以及Android設(shè)備上的Mono for Android。下面將深入研究這三個平臺。
15.1.1 Mono for Android 默認(rèn)情況下項(xiàng)目包括mscorlib、System、System.Core、System.Xml和System.Xml.Linq程序集。除這些程序集外,項(xiàng)目還包括了Mono.Android程序集,而該程序集則包含了Android API的所有綁定。
15.1.2 MonoTouch
MonoTouch于2009年發(fā)布,它是一組允許.NET開發(fā)人員針對iPhone和iPod Touch進(jìn)行開發(fā)的工具。
不同之處是MonoTouch包括一個MonoTouch.dll引用,Mono for Android則包括一個Mono.Android.dll引用。
MonoTouch.dll是針對iOS API的,而Mono.Android.dll則是針對Android API。
15.1.3 Windows Phone 7
還可以看到程序集Microsoft.Phone和Microsoft.Phone.Interop。這兩個程序集是特定于手機(jī)的API。應(yīng)用程序包括的另一個程序集是System.Windows,該程序集包括了大部分Silverlight API。
用Unity4.2.0打包APK到Android 2.2.3
打包時可能會出錯:
Error building Player: Win32Exception: ApplicationName='D:/android-sdk-windows\tools\zipalign.exe', CommandLine='4 "D:\u3d4.2.0\Temp/StagingArea/Package_unaligned.apk" "D: \u3d4.2.0\Temp/StagingArea/Package.apk"', CurrentDirectory='Temp/StagingArea' 解決方法:
將D:\android-sdk-windows\build-tools\19.1.0\zipalign.exe復(fù)制到D:\android-sdk-windows\tools即可
Unity5.1.1
iOS設(shè)置
Target iOS Version
6.0
7.0
7.1
8.0
8.1
Android設(shè)置
Mininum API Level
Android 2.3.1 'Gingerbread'(API level 9)
Android 2.3.3 'Gingerbread'(API level 10)
Android 3.0 'Honeycomb'(API level 11)
Android 3.1 'Honeycomb'(API level 12)
Android 3.2 'Honeycomb'(API level 13)
Android 4.0 'Ice Cream Sandwich'(API level 14)
Android 4.0.3 'Ice Cream Sandwich'(API level 15)
Android 4.1 'Jelly Bean'(API level 16)【小米2S:4.1.1 JRO03L,四核1.7GHz,2.00GB運(yùn)行內(nèi)存,16.00GB機(jī)身存儲(2.12GB可用),IMEI:860955022931665,MAC地址:ac:f7:f3:5b:13:02,序列號:207d0147,AndroidId:a31d834f770ba6e0(刷機(jī)后會改變)】
Android 4.2 'Jelly Bean'(API level 17)
Android 4.3 'Jelly Bean'(API level 18)
Android 4.4 'Kit Kat'(API level 19)【TV上Android版本4.4.2】
Android 5.0 'Lollipop'(API level 21)
Unity4.6.4f1
iOS設(shè)置
Target iOS Version
5.1.1
6.0
7.0
7.1
8.0
8.1
Android設(shè)置
Mininum API Level
Android 2.3.1 'Gingerbread'(API level 9)
Android 2.3.3 'Gingerbread'(API level 10)
Android 3.0 'Honeycomb'(API level 11)
Android 3.1 'Honeycomb'(API level 12)
Android 3.2 'Honeycomb'(API level 13)
Android 4.0 'Ice Cream Sandwich'(API level 14)
Android 4.0.3 'Ice Cream Sandwich'(API level 15)
Android 4.1 'Jelly Bean'(API level 16)
Android 4.2 'Jelly Bean'(API level 17)
Android 4.3 'Jelly Bean'(API level 18)
Android 4.4 'Kit Kat'(API level 19)
Unity4.5.4f1、Unity4.6.0f3
iOS設(shè)置
Target iOS Version
4.0
4.1
4.2
4.3
5.0
5.1
6.0
7.0
7.1
Android設(shè)置
Mininum API Level
Android 2.3.1 'Gingerbread'(API level 9)
Android 2.3.3 'Gingerbread'(API level 10)
Android 3.0 'Honeycomb'(API level 11)
Android 3.1 'Honeycomb'(API level 12)
Android 3.2 'Honeycomb'(API level 13)
Android 4.0 'Ice Cream Sandwich'(API level 14)
Android 4.0.3 'Ice Cream Sandwich'(API level 15)
Android 4.1 'Jelly Bean'(API level 16)
Android 4.2 'Jelly Bean'(API level 17)
Android 4.3 'Jelly Bean'(API level 18)
Android 4.4 'Kit Kat'(API level 19)
Unity4.3.0f4、Unity4.3.4f1
iOS設(shè)置
Target iOS Version
4.0
4.1
4.2
4.3
5.0
5.1
6.0
Android設(shè)置
Mininum API Level
Android 2.3.1 'Gingerbread'(API level 9)
Android 2.3.3 'Gingerbread'(API level 10)
Android 3.0 'Honeycomb'(API level 11)
Android 3.1 'Honeycomb'(API level 12)
Android 3.2 'Honeycomb'(API level 13)
Android 4.0 'Ice Cream Sandwich'(API level 14)
Android 4.0.3 'Ice Cream Sandwich'(API level 15)
Android 4.1 'Jelly Bean'(API level 16)
Android 4.2 'Jelly Bean'(API level 17)
Android 4.3 'Jelly Bean'(API level 18)
Unity4.0.0f7、Unity4.2.0f4
iOS設(shè)置
不支持在Windows上生成iOS程序
Android設(shè)置
Mininum API Level
Android 2.0.1 'Eclair'(API level 6)
Android 2.1 'Eclair'(API level 7)
Android 2.2 'Froyo'(API level 8)
Android 2.3.1 'Gingerbread'(API level 9)
Android 2.3.3 'Gingerbread'(API level 10)
Android 3.0 'Honeycomb'(API level 11)
Android 3.1 'Honeycomb'(API level 12)
Android 3.2 'Honeycomb'(API level 13)
Android 4.0 'Ice Cream Sandwich'(API level 14)
Android 4.0.3 'Ice Cream Sandwich'(API level 15)
Android 4.1 'Jelly Bean'(API level 16)
Android 4.2 'Jelly Bean'(API level 17)【Unity4.0.0f7無、Unity4.2.0f4有】
http://wenku.baidu.com/view/152ec4d0b9d528ea81c779bc.html
2004年,Unity Technology公司成立,總部在舊金山。
2005年,Unity1.0發(fā)布。
2007年,Unity2.0發(fā)布。新增了地形引擎、實(shí)時動態(tài)陰影,支持DirectX 9并具有內(nèi)置的網(wǎng)絡(luò)多人聯(lián)機(jī)功能。
2008年,iOS版本
2009年3月,Unity2.5發(fā)布。添加了對Windows Vista和XP系統(tǒng)的全面支持,所有的功能都可以與Mac OS X實(shí)現(xiàn)同步和互通。Unity在其中任何一個系統(tǒng)中都可以為另一個平臺制作游戲,實(shí)現(xiàn)了真正意義上的跨平臺。
2010年,Android版本
2010年9月,Unity3.0發(fā)布。添加了Android平臺的支持。整合了光照貼圖烘培引擎Beast。Unity3.0通過使用MonoDevelop在Windows和Mac系統(tǒng)上引入了腳本調(diào)試,可以中斷游戲、逐行單步執(zhí)行、設(shè)置斷點(diǎn)和檢查變量,還支持遮擋剔除和延遲渲染。
2011年,PS3版本和Xbox360版本
2012年2月,3.5正式版發(fā)布
2011年,3.5.5版本
2012年4月,Unity上海分公司成立,Unity正式進(jìn)軍中國市場。
2012年11月15日,Unity4.0發(fā)布。Unity4.0中加入了對DirectX 11的支持和Macanim動畫工具,而且還增添了Linux和Adobo Flash Player發(fā)布預(yù)覽功能。
2013年3月,4.1版本
新版本修復(fù)了先前版本的大量Bug并新增了內(nèi)存分析器(Memory Profiler),能實(shí)時、動態(tài)地顯示游戲中不同動畫、不同物體的內(nèi)存占用情況。在圖形的著色和渲染方面有了大幅度的提升。
2013年7月,4.2版本
添加對于Win8、WP8以及Blackberry 10的支持。
2013年11月,4.3.0版本
2014年8月,4.5.3版本
支持通用Windows應(yīng)用程序
2014年10月13日,Unity 4.5.5版本發(fā)布,這是4.5系列的最終版本
2014年11月,Unity 4.6
推出了新的UI系統(tǒng)ugui,添加了對Andorid-x86系統(tǒng)的支持,現(xiàn)在你可以選擇構(gòu)建目標(biāo)平臺為FAT、x86或ARMv7。
2015年1月,Unity4.6.2
這是Unity第一個支持64位iOS的正式版本,采用了最新的IL2CPP技術(shù)。
2015年,4.6.4版本
注0:Win8下安裝jdk1.7.0_11,不要安裝JDK6(1.6)
JDK安裝后設(shè)置環(huán)境變量步驟如下:
?我的電腦->屬性->高級->環(huán)境變量->系統(tǒng)變量中添加以下環(huán)境變量:
?變量名,變量值
JAVA_HOME,C:\Program Files\Java\jdk1.7.0_11
CLASSPATH,.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
PATH,C:\MinGW\bin;C:\Program Files (x86)\IDM Computer Solutions\UltraEdit\;C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
安裝完成之后,可以在檢查JDK是否安裝成功。打開cmd窗口,輸入java –version查看JDK的版本信息。出現(xiàn)類似下面的畫面表示安裝成功了:
C:\Users\DELL->java -version
java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
C:\Users\DELL->java -version
java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01, mixed mode)
注1:Unity4.6.4中使用F:\adt-bundle-windows-x86-20140624\sdk會提示
Android SDK is outdated
SDK Build Tools version 20.0.0<21
Android SDK is outdated
SDK Platform Tools version 20.0.0<21
Android SDK is missing required platform api
Minimum platform required is Android 5.0(API level 21)
注2:Unity4.6.4中使用F:\adt-bundle-windows-x86_64-20130729\sdk會提示
Android SDK is outdated
SDK Tools version 22.0.5<23
選擇Update
Updating Android SDK
注3:Unity4.6.4中使用C:\Program Files (x86)\Android\android-studio\sdk會提示
Android SDK is outdated
SDK Tools version 22.2.0<23
2015年3月,5.0版本
2015年6月,5.1版本
Win8下,路徑帶x86的是32位的Unity(C:\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\androidplayer\release\bin),不帶x86的是64位的Unity。
渲染平臺
Unity支持多種圖形API,目前支持的API包括:
d3d9
d3d11
opengl
gles
xbox360
ps3?
flash
unity4.x從入門到精通
序言
2012年Unity正式進(jìn)入中國市場。
藍(lán)港的《王者之劍》
完美世界的TOUCH駿夢的《新仙劍》
昆侖萬維的《絕代雙驕》
計(jì)算兩個位置之間的距離
讓游戲?qū)ο笱刂付ǚ较蛞苿?br /> 得到游戲?qū)ο螽?dāng)前旋轉(zhuǎn)的角-軸表示 向前方移動
繞自身坐標(biāo)軸Y軸旋轉(zhuǎn)
繞世界坐標(biāo)軸的Y軸旋轉(zhuǎn)
使相機(jī)觀察方向跟隨物體移動
用戶應(yīng)避免在Unity編輯器外部移動或重命名項(xiàng)目資源文件,如果需重新組織或移動某個資源,應(yīng)該在項(xiàng)目視圖中進(jìn)行,否則會破壞資源文件與Unity工程之間的關(guān)聯(lián),甚至?xí)p壞游戲工程。? chap6 Mecanim動畫系統(tǒng)
6.1 Mecanim概述
6.1.1Mecanim工作流
6.1.2舊版動畫系統(tǒng)
6.2資源的準(zhǔn)備和導(dǎo)入
6.2.1如何獲取人形網(wǎng)格模型
6.2.2如何導(dǎo)入動畫
6.2.3動畫分解
6.3使用人形角色動畫
6.3.1創(chuàng)建Avatar
6.3.2配置Avatar
6.3.3設(shè)置Muscle參數(shù)
6.3.4 Avatar Body Mask
6.3.5人形動畫的重定向
6.3.6逆向運(yùn)動學(xué)功能(Pro only)
6.3.7一般動畫
6.4在游戲中使用角色動畫
6.4.1循環(huán)動畫片段
6.4.2Animator組件
6.4.3Animator Controller
6.4.4動畫狀態(tài)機(jī)
6.4.5混合樹
6.4.6 1D混合
6.4.7 2D混合
6.5案例分析? chap1 Unity介紹
1.5軟件安裝
Unity編輯器可以運(yùn)行在Windows和Mac OS X平臺上,用戶可依據(jù)自身的喜好來選擇相應(yīng)的平臺工作。以下將介紹這2個平臺上Unity編輯器的安裝步驟,安裝示例所用的Unity版本號均為4.1.3。
chap2 Unity編輯器 Scene Gizmo工具
在Scene視圖的右上角是Scene工具,使用它可迅速將攝像機(jī)的視角切換到預(yù)設(shè)的視角上。
Top頂
Bottom底
Front前
Back后
Left左
Right右 2.8.2視圖控制
在場景視圖的上方是場景視圖控制欄。
繪圖模式默認(rèn)選項(xiàng)是Textured
紋理顯示模式
網(wǎng)格線框顯示模式
紋理加線框網(wǎng)格顯示模式
渲染路徑顯示模式
光照貼圖顯示模式 渲染模式默認(rèn)是RGB選項(xiàng)
三原色顯示
阿爾法通道顯示
以半透明的方式顯示物體
MIP映射圖顯示 用戶選擇繪圖模式或渲染模式并不會改變游戲最終的顯示方式,它只是改變場景物體在場景視圖中的顯示方式。
chap3資源導(dǎo)入流程
3.1 3D模型、材質(zhì)與動畫的導(dǎo)入
3.1.1主流三維軟件簡介
Autodesk Maya,Maya可在Windows、Mac OS等操作系統(tǒng)上運(yùn)行。
Autodesk 3D Studio Max
Modo
Cinema 4D
Cheetah3D
LightWave
Blender
3.1.2模型、材質(zhì)以及動畫導(dǎo)入前的設(shè)置、準(zhǔn)備工作
3.1.2.1 Unity與常見三維動畫軟件單位的比例關(guān)系
Unity的默認(rèn)系統(tǒng)單位為“米”,三維軟件的單位與Unity單位的比例關(guān)系非常重要。
8.最小化Unity窗口。下一步運(yùn)行3ds Max軟件,制作項(xiàng)目所需的模型素材。
13.在3ds Max中創(chuàng)建一個長寬高都為100cm的立方體,并將其位置移動到坐標(biāo)原點(diǎn)。
3ds Max默認(rèn)導(dǎo)出的FBX文件導(dǎo)入到Unity中的默認(rèn)縮放因子是0.01,建議讀者將3ds Max系統(tǒng)單位以及顯示單位都設(shè)置成“厘米”。
19.刷新完畢后,在Unity界面項(xiàng)目視圖中的Assets文件夾下會顯示出新增的資源文件,即剛才導(dǎo)入的Player.FBX文件,并自動新建了Materials文件夾。
20.單擊選擇該FBX資源,在監(jiān)測視圖中可以看到Model選項(xiàng)卡中Scale Factor文本框中的默認(rèn)數(shù)值為0.01。
21.鼠標(biāo)拖動此FBX文件(下文用資源名字Player來代替)到場景視圖或?qū)哟我晥D中,在層次視圖中雙擊Player游戲?qū)ο?#xff0c;可以在場景視圖中居中并最大化顯示該游戲?qū)ο蟆?br /> 23.Unity中添加Cube默認(rèn)的Scale值都為1.可以理解為該Cube的長寬高都為1m。
3.1.3將模型、材質(zhì)、動畫導(dǎo)入到Unity中
Unity支持的3ds Max材質(zhì)球類型包括:
Standard標(biāo)準(zhǔn)材質(zhì)
Multi/Sub-Object多維子材質(zhì),需要注意每個子材質(zhì)必須是標(biāo)準(zhǔn)材質(zhì)。
另外,材質(zhì)的名稱盡量與模型的名稱對應(yīng),建議都采用英文字符命名。
9.在Advanced Options卷展欄下展開Units項(xiàng),勾選Automatic復(fù)選框,接下來展開Axis Conversion項(xiàng),選擇Y-up(表明在Unity程序世界中世界坐標(biāo)是Y軸向上 13.單擊選中該FBX文件,在監(jiān)測視圖中可以看到該資源的相關(guān)屬性。下面通過監(jiān)測視圖來講解此類Prefab的相關(guān)參數(shù)。
(1)Model:模型的默認(rèn)設(shè)置面板
Meshs:網(wǎng)格
Scale Factor:縮放系數(shù)。采用不同的軟件、不同的單位(建議在三維軟件中采用公制單位)創(chuàng)建的模型可以通過該功能進(jìn)行校正。
Mesh Compression:網(wǎng)格壓縮。壓縮值越大則網(wǎng)格體文件越小。
Read/Write Enabled:讀/寫啟用。
Optimize Mesh:優(yōu)化網(wǎng)格。
Generate Colliders:生成碰撞體。
SwapUVs:交換UV。
Generate Lightmap:生成光照貼圖UV通道。
Normals & Tangents:法線和切線
Smoothing Angle:平滑角度。
Split Tangents:分割切線。
Materials:材質(zhì)。
Import Materials:導(dǎo)入材質(zhì)。
Material Naming:材質(zhì)命名。決定Unity材質(zhì)的命名方式。有3個選項(xiàng):
依照基礎(chǔ)貼圖名稱
來自模型的材質(zhì)名稱
模型名+模型材質(zhì)名
Material Search:材質(zhì)搜索。決定Unity如何根據(jù)Material Naming選項(xiàng),搜索定位相應(yīng)的材質(zhì)。有3個選項(xiàng):
Local Materials Folder:局部材質(zhì)文件夾
Recursive-Up:向上。Unity依次向上搜索Assets文件夾中所有的材質(zhì)子文件夾。
Project-Wide:項(xiàng)目范圍。Unity將在整個Assets文件夾中搜索材質(zhì)。
(2)Rig:操控命令面板。
Animation Type:動畫類型。該選項(xiàng)用來指定導(dǎo)入FBX資源的動畫類型。
None:無動畫。
Legacy:舊版的動畫系統(tǒng)。
Generic:通用Mecanim動畫系統(tǒng)。
Humanoid:人形Mecanim動畫系統(tǒng)。
Avatar Definition:替身定義。
Create from this model:從這個模型創(chuàng)建,替身將依據(jù)選擇的模型創(chuàng)建。
Copy from other Avatar:從其他替身復(fù)制。
Configure:配置Avatar替身。
Keep additional bones:保留附加的骨骼。
(3)Animations:動畫。Animations選項(xiàng)卡中的內(nèi)容會依據(jù)Rig選項(xiàng)卡中選擇的動畫類型而有所不同。
3.5 Unity Asset Store資源商店
也可以在Unity應(yīng)用程序中依次打開菜單欄中的Window|Asset Store來直接訪問,或直接按快捷鍵Ctrl+9。
3.5.1Asset Store簡介
在創(chuàng)建游戲時,通過Asset Store中的資源可以節(jié)省時間、提高效率。
3.5.2Asset Store的使用方法
7.用戶還可以在Asset Store視圖中通過單擊圖標(biāo)顯示Unity標(biāo)準(zhǔn)的資源包和用戶已下載的資源包,對于已下載的資源包可以通過單擊Import按鈕將其加載到當(dāng)前的項(xiàng)目中。
chap4創(chuàng)建基本游戲場景
在Unity中可直接建立的基本幾何體有5種:
正方體、球體、膠囊體、圓柱體、平面。
4.3.3組件類型介紹
在Unity中,組件(Component)共分為如下7類。
1、Mesh
網(wǎng)格,該類型的組件有3項(xiàng)
網(wǎng)格過濾器Mesh Filter
該組件用于在項(xiàng)目資源中獲取網(wǎng)格并將其傳遞到所屬的游戲?qū)ο笾小?br /> 文字渲染器Text Mesh
該組件用于生成三維的字符串(文字)。
網(wǎng)格渲染器Mesh Renderer
該組件用于從網(wǎng)格過濾器獲得網(wǎng)格模型,進(jìn)而根據(jù)游戲?qū)ο蟮腡ransform組件中定義的位置在Scene視圖中進(jìn)行渲染。 2、Effects
特效/效果,該類型的組件(包括舊版粒子系統(tǒng)在內(nèi))共有7項(xiàng)。
粒子系統(tǒng)Particle System
軌跡/拖尾渲染器Trail Renderer
線條渲染器Line Renderer
鏡頭光暈Lens Flare
光環(huán)/光暈Halo
幻燈片Projector
舊版粒子系統(tǒng)Legacy Particles
?
3、Physics
物理組件,該類型組件有17項(xiàng)。
Unity擁有內(nèi)置的NVIDIA PhysX物理引擎,可以模擬真實(shí)的物理行為。
4、Navigation
5、Audio
6、Rendering
7、Miscellaneous
4.5創(chuàng)建光源
光源是每一個場景的重要組成部分。光源決定了場景環(huán)境的明暗、色彩和氛圍。每個場景中可以使用一個以上的光源,合理地使用光源可以創(chuàng)造完美的視覺效果。
4.5.1 Unity的光源類型
Unity提供了4種類型的光源,在合理設(shè)置的基礎(chǔ)上可以模擬自然界中任何的光源。
1.Directional light:方向光源。
該類型光源可以被放置在無窮遠(yuǎn)處,額可以影響場景的一切游戲?qū)ο?#xff0c;類似于自然界中日光的照明效果。方向光源是最不耗費(fèi)圖形處理器資源的光源類型。
2、Point light:點(diǎn)光源。
點(diǎn)光源從一個位置向四面八方發(fā)出光線,影響其范圍內(nèi)的所有對象,類似燈泡的照明效果。點(diǎn)光源的陰影是較耗費(fèi)圖像處理器資源的光源類型。
3.Spotlight:聚光燈。
燈光從一點(diǎn)發(fā)出,在一個方向按照一個錐形的范圍照射,處于錐形區(qū)域內(nèi)的對象會受到光線照射,類似射燈的照明效果。聚光燈是較耗費(fèi)圖形處理器資源的光源類型。
4.Area Light:區(qū)域光/面光源。
該類型光源無法應(yīng)用于實(shí)時光照,僅使用于光照貼圖烘培。
4.5.2光源屬性講解
下面就所有類型光源的參數(shù)統(tǒng)一進(jìn)行介紹:
Type:類型
可以選擇光源的類型
Range:范圍
用于控制光線從光源對象的中心發(fā)射的距離,只有點(diǎn)光源和聚光燈有該參數(shù)。
Spot Angle:聚光燈角度。
該項(xiàng)用于控制光源的錐形范圍,只有聚光燈有該參數(shù)。
Color:顏色。
Intensity:強(qiáng)度。
Cookie:
Cookie Size:
Shadow Type:
Strength:強(qiáng)度。
Resolution:分辨率。
Bias:偏移。
Softness:柔化。
4.6.1攝像機(jī)類型
Unity中支持兩種類型的攝像機(jī),分別是Perspective(透視)以及Orthographic(正交)攝像機(jī)。通過改變攝像機(jī)的模式可以方便地指定攝像機(jī)的類型。
4.6.2攝影機(jī)參數(shù)
在Unity中創(chuàng)建攝像機(jī)對象時,默認(rèn)情況下除了Transform(幾何變換)組件外還會帶有Camera、Flare Layer、GUI Layer、Audio Listener等4個組件。下面就Camera(攝影機(jī))組件的參數(shù)來進(jìn)行講解:
Clear Flags:清除標(biāo)記。決定屏幕的哪部份將被清除。該項(xiàng)一般用于使用多臺攝像機(jī)來描繪不同游戲?qū)ο蟮那闆r,有3種模式可供選擇:
Skybox:天空盒。該模式為默認(rèn)設(shè)置。在屏幕中空白的部分將顯示當(dāng)前攝像機(jī)的天空盒。如果當(dāng)前攝像機(jī)沒有設(shè)置天空盒,它會默認(rèn)使用Background(背景)色。
Solid Color:純色。選擇該模式屏幕上的空白部分將顯示當(dāng)前攝像機(jī)的Background(背景)色。
Depth only:僅深度。該模式用于游戲?qū)ο蟛幌M徊眉舻那闆r。
Don't Clear:不清除。該模式不清除任何顏色或深度緩存。其結(jié)果是,每幀渲染的效果疊加在下一幀之上。一般與自定義的Shader(著色器)配合使用。
Background:背景。
該項(xiàng)用于設(shè)置背景顏色。在鏡頭中的所有元素渲染完成且沒有指定Shybox(天空盒)的情況下,將設(shè)置的顏色應(yīng)用到屏幕的空白處。
Culling Mask:剔除遮罩。
依據(jù)游戲?qū)ο笏付ǖ膶觼砜刂茢z像機(jī)所渲染的游戲?qū)ο蟆?br /> Projection:投射方式。
Perspective:透視。攝像機(jī)將用透視的方式來渲染游戲?qū)ο蟆?br /> Orthographic:正交。攝像機(jī)將用無透視感的方式均勻地渲染游戲?qū)ο蟆?br /> Field of view:視野范圍。(只針對透視模式)
該項(xiàng)用于控制攝像機(jī)的視角寬度,以及縱向的角度尺寸。
Size:大小。(只針對正交模式)。
該項(xiàng)用于控制正交模式攝像機(jī)的視口大小。
Clipping Planes:裁剪平面。攝像機(jī)開始渲染與停止渲染之間的距離。
Near:近點(diǎn)。攝像機(jī)開始渲染的最近的點(diǎn)。
Far:遠(yuǎn)點(diǎn)。攝像機(jī)開始渲染的最遠(yuǎn)的點(diǎn)。
Normalized View Port Rect:標(biāo)準(zhǔn)視圖矩形。用四個數(shù)值來控制該攝像機(jī)的視圖將繪制在屏幕的位置以及大小,該項(xiàng)使用屏幕坐標(biāo)系,數(shù)值在0~1之間。
X:攝像機(jī)視圖進(jìn)行繪制的水平位置起點(diǎn)。
Y:攝像機(jī)視圖進(jìn)行繪制的垂直位置起點(diǎn)。
W:寬度。攝像機(jī)輸出到屏幕上的寬度。
W:高度。攝像機(jī)輸出到屏幕上的高度。
Depth:深度。
該項(xiàng)用于控制攝像機(jī)的渲染順序,較大值的攝像機(jī)將被渲染在較小值得攝像機(jī)之上。
Rendering Path:渲染路徑。該項(xiàng)用于指定攝像機(jī)的渲染方法。
Target Texture:目標(biāo)紋理(該項(xiàng)只有Pro版才能支持)。
該項(xiàng)用于將攝像機(jī)視圖輸出并渲染到屏幕。一般用于制作導(dǎo)航圖或者畫中畫等效果。
HDR:高動態(tài)光照渲染。
該項(xiàng)用于啟用攝像機(jī)的高動態(tài)范圍渲染功能。因?yàn)槿搜蹖Φ头秶墓庹諒?qiáng)度更為敏感,所以使用高動態(tài)范圍渲染能夠讓場景更為真實(shí),光照的變換不會顯得太突兀。
5.5常用編輯器組件
常用編輯器組件可分為兩種,一是原有組件,二是拓展組件。
5.5.1攝像機(jī)
作為一個游戲?qū)ο?#xff0c;攝像機(jī)存在Scene視圖中。
攝像機(jī)組件的一些常用參數(shù)。
Clear Flags:背景顯示內(nèi)容,默認(rèn)是天空盒子,前提是必須在Render Settings中設(shè)置過天空盒子材質(zhì)。
Background:背景顯示顏色。如果沒有設(shè)置天空盒子,將顯示這個顏色。
Culling Mask:用于選擇是否顯示某些層,默認(rèn)為全部顯示。
Projection:攝像機(jī)的類型。
Field of View:攝像機(jī)的視野范圍。
Near:以攝像機(jī)為圓心,繪制最近點(diǎn)的距離。
Far:以攝像機(jī)為圓心,繪制最遠(yuǎn)點(diǎn)的距離。
Normalized View Port Rect:可理解為設(shè)定Game視圖的顯示區(qū)域參數(shù)。多臺攝像機(jī)可以通過設(shè)置各自顯示區(qū)域來分屏同時顯示。
Depth:攝像機(jī)的深度。若存在多個攝像機(jī),先渲染該值較小的攝像機(jī)。
Rendering Path:渲染路徑。
Target Texture:目標(biāo)紋理,設(shè)置后會擋住攝像機(jī)。
4.7地形編輯器
4.7.1地形編輯器概述
Unity中的地形編輯器支持LOD(Level of Detail)功能,能夠根據(jù)攝像機(jī)與地形的距離以及地形起伏程度調(diào)整地形塊(Patch)網(wǎng)格的疏密程度。遠(yuǎn)處或平坦的地形塊使用稀疏的網(wǎng)格,近處或陡峭的地形塊使用密集的網(wǎng)格。這將使游戲場景既真實(shí)、精細(xì),同時也不影響性能。
地形與其他的游戲?qū)ο笥行┎煌?#xff0c;需要注意的是,地形支持Transform(幾何變換)組件中的Position(位置)變換,但對于Rotation(旋轉(zhuǎn))以及Scale(縮放)操作是無效的。
4.7.2地形的創(chuàng)建方式以及相關(guān)參數(shù)設(shè)定
4.7.2.1地形的創(chuàng)建及基本設(shè)置
1、打開菜單欄中的Terrain|Create Terrain項(xiàng),便會創(chuàng)建一個地形
2、新建地形后,首先講解一下菜單欄中Terrain項(xiàng)下面的設(shè)置。
Create Terrain:創(chuàng)建地形
該項(xiàng)用于在項(xiàng)目工程中創(chuàng)建地形并將該地形資源放置到場景中。
Import Heightmap-Raw…:導(dǎo)入高度圖
Export Heightmap-Raw…:導(dǎo)出高度圖
Set Resolution…:設(shè)置分辨率
該項(xiàng)用于設(shè)置地形尺寸、高度圖分辨率、細(xì)節(jié)分辨率、紋理分辨率等相關(guān)參數(shù)
Terrain Width:地形寬度。用于設(shè)置地形的寬度。
Terrain Height:地形高度。用于設(shè)置地形的高度。
Terrain Length:地形長度。用于設(shè)置地形的長度。
4.7.2.2地形組件參數(shù)詳解
新建地形后,在監(jiān)視視圖可以看到地形對象所掛載的組件,除了Transform組件外,還有一個Terrain(Script)(地形腳本)組件以及一個Terrain Collider(地形碰撞)組件。
4.10天空盒
Unity中的天空盒實(shí)際上是一種使用了特殊類型Shader的材質(zhì),該種類型材質(zhì)可以籠罩在整個游戲場景之外,并根據(jù)材質(zhì)中指定的紋理模擬出類似遠(yuǎn)景、天空等的效果,使游戲場景看起來更完整。
4.10.1天空盒資源包的概述
1、啟動Unity應(yīng)用程序,依次單擊菜單欄中的Assets|ImportPackage|Skyboxes選項(xiàng),為項(xiàng)目工程導(dǎo)入Skyboxes.UnityPackage。
2、資源包被導(dǎo)入后,資源包中包含9個天空盒。
3、9種天空盒的效果如下:
DawnDusk Skybox
Eerie Skybox
MoonShine Skybox
Overcast1 Skybox
Overcast2 Skybox
StarryNight Skybox
Sunny1 Skybox
Sunny2 Skybox
Sunny3 Skybox
4.10.2天空盒的兩種應(yīng)用方式及其區(qū)別
一種是在Unity中Render Settings(渲染設(shè)置)里進(jìn)行指定,這種方法是針對游戲場景的,簡單地講,就是在同一個游戲場景中,無論使用哪個攝像機(jī)對象,天空盒都保持不變。并且該方式指定天空盒可以在場景視圖中直接顯示。
另一種方式是為攝像機(jī)對象添加天空盒組件,然后在天空盒組件中進(jìn)行指定,這種方法只針對攝像機(jī)本身,簡單地講,就是在同一個游戲場景中,如果切換攝像機(jī)對象,天空盒會隨之變換。需要注意的是,為攝像機(jī)指定的天空盒優(yōu)先級會高于在渲染設(shè)定中指定的天空盒。
4.10.3創(chuàng)建天空盒的方法
除了Skybox資源包中提供的天空盒外,Unity還支持用戶自制天空盒材質(zhì)。
chap6 Mecanim動畫系統(tǒng)
Mecanim是Unity提供的一個豐富而復(fù)雜的動畫系統(tǒng),它提供了:
針對人形角色的工作流和動畫創(chuàng)建能力。
Retargeting(運(yùn)動重定向)功能,即把動畫從一個角色模型應(yīng)用到另一個角色模型上的能力。
針對Animation Clips(動畫片段)的簡易工作流,即針對動畫片段以及他們之間的過渡和交互過程的預(yù)覽能力。
一個用于管理動畫間復(fù)雜交互作用的可視化編程工具。
通過不同邏輯來控制不同身體部位運(yùn)動的能力。 Mecanim工作流可以被分解為3個主要階段:
1、資源的準(zhǔn)備和導(dǎo)入
這一步驟與Mecanim系統(tǒng)無關(guān)。
2、角色的建立
主要有以下兩種方式:
人形角色的建立
一般角色的建立。動畫重定向功能對此并不適用。
3、角色的運(yùn)動
這里包括設(shè)定動畫片段及其相互間的交互作用,也包括建立狀態(tài)機(jī)和混合樹、調(diào)整動畫參數(shù)以及通過代碼控制動畫等。 舊版動畫系統(tǒng)是Unity引擎在4.0版本之前使用的老的動畫系統(tǒng)。Unity公司正計(jì)劃采用Mecanim動畫系統(tǒng)逐步徹底地替換舊版動畫系統(tǒng)。 在使用角色模型之前,首先需要將它導(dǎo)入到項(xiàng)目工程中來。Unity可以導(dǎo)入原生的Maya文件(.mb或者.ma)、Cinema4D文件(.c4d)以及一般的FBX文件。 Animation Clips(動畫片段):動畫角色具有的一系列的在不同情景下被觸發(fā)的基本動作,比如行走、奔跑、跳躍、投擲和死亡等,這些基本動作被稱為動畫片段。 最容易使用的動畫模型是含有預(yù)分解動畫片段的模型。
使用預(yù)分解動畫模型
使用未分解動畫模型 用戶可以為任意模型的動畫組件添加動畫片段
在非Mecanim模型(沒有肌肉定義)上加入動畫片段要將Muscle Definition屬性設(shè)置為None。 另一種導(dǎo)入動畫片段的方法是遵循Unity指定的動畫文件命名方案。
用戶可以創(chuàng)建獨(dú)立的模型文件并按照modelName@animationName.fbx的格式命名。
除了人形動畫,Mecanim系統(tǒng)也能夠支持非人形動畫,只不過在非人形動畫中無法使用Avatar系統(tǒng)和其他一些相關(guān)功能。在Mecanim系統(tǒng)中,非人形動畫被稱為一般動畫(Generic Animation)。
在人形動畫中,一般可以很容易知道人形模型的中心點(diǎn)和方位;但對于一般動畫,由于骨架可以是任意形狀,則需要為其指定一根參考骨骼,它在Mecanim系統(tǒng)中被稱為根節(jié)點(diǎn)(root node)。選中根節(jié)點(diǎn)后,即可建立多個動畫片段之間的對應(yīng)關(guān)系,且實(shí)現(xiàn)它們之間的正確混合。此外,根節(jié)點(diǎn)還對實(shí)現(xiàn)區(qū)分骨骼動畫和根節(jié)點(diǎn)的運(yùn)動具有重要意義(通過OnAnimatorMove進(jìn)行控制)。
動畫片段可以基于姿態(tài)、旋轉(zhuǎn)和位置進(jìn)行循環(huán)。
任何一個擁有Avatar的GameObject都同時需要有一個Animator組件,該組件是關(guān)聯(lián)角色及其行為的紐帶。
Animator組件中還引用了一個Animator Controller,它被用于為角色設(shè)置行為,這里所說的行為包括狀態(tài)機(jī)(State Machines)、混合樹(Blend Trees)以及通過腳本控制的事件(Events),具體包括:
Controller:關(guān)聯(lián)到該角色的animator控制器。
Avatar:該角色的Avatar。
Apply Root Motion:是使用動畫本身還是使用腳本來控制角色的位置。
Animate Physics:動畫是否與物理交互。
Culling Mode:動畫的裁剪模式。
Always animate:總是啟用動畫,不進(jìn)行裁剪。
Based on Renderers:當(dāng)看不見角色時只有根節(jié)點(diǎn)運(yùn)動,身體的其他部分保持靜止。 20150824補(bǔ)充: chap7物理引擎
7.1 Rigidbody:剛體
剛體組件可使游戲?qū)ο笤谖锢硐到y(tǒng)的控制下來運(yùn)動,剛體可接受外力與扭矩力用來保證游戲?qū)ο笙裨谡鎸?shí)世界中那樣進(jìn)行運(yùn)動。任何游戲?qū)ο笾挥刑砑恿藙傮w組件才能受到重力的影響。
在Unity中為游戲?qū)ο筇砑觿傮w組件的方法是:
1、選中該對象,然后依次打開菜單欄中Component->Physics->Rigidbody選項(xiàng),這樣就在該游戲?qū)ο笊咸砑恿藙傮w組件。
2、Rigidbody組件的屬性面板如圖所示。剛體組件的各參數(shù)介紹如下:
Mass:質(zhì)量。
該項(xiàng)用于設(shè)置游戲?qū)ο蟮馁|(zhì)量。
Drag:阻力。
當(dāng)對象受力運(yùn)動時受到的空氣阻力。0表示沒有空氣阻力,阻力極大時游戲?qū)ο髸⒓赐V惯\(yùn)動。
Angular Drag:角阻力。
當(dāng)對象受扭矩力旋轉(zhuǎn)時受到的空氣阻力。0表示沒有空氣阻力,阻力極大時游戲?qū)ο髸⒓赐V惯\(yùn)動。
Use Gravity:使用重力。
若開啟此項(xiàng),游戲?qū)ο髸艿街亓Φ挠绊憽?br /> Is Kinematic:是否開啟動力學(xué)。
若開啟此項(xiàng),游戲?qū)ο髮⒉辉偈芪锢硪娴挠绊憦亩荒芡ㄟ^Transform(幾何變換組件)屬性來對其操作。該方式適用于模擬平臺的移動或帶有鉸鏈關(guān)節(jié)鏈接剛體的動畫。
Interpolate:插值
該項(xiàng)用于控制剛體運(yùn)動的抖動情況,有3項(xiàng)可供選擇。
None:沒有插值。
Interpolate:內(nèi)插值。基于前一幀的Transform來平滑此次的Transform。
Extrapolate:外插值。基于下一幀的Transform來平滑此次的Transform。
Collision Detection:碰撞檢測。
該屬性用于控制避免高速運(yùn)動的游戲?qū)ο蟠┻^其他的對象而發(fā)生碰撞,有3項(xiàng)可供選擇。
Discrete:離散碰撞檢測。該模式與場景中其他的所有碰撞體進(jìn)行碰撞檢測。該項(xiàng)為默認(rèn)值。
Continuous:連續(xù)碰撞檢測。
Continuous Dynamic:連續(xù)動態(tài)碰撞檢測模式。
Constraints:約束。
該項(xiàng)用于控制對于剛體運(yùn)動的約束。
Freeze Position:凍結(jié)位置。剛體對象在世界坐標(biāo)系中的X、Y、Z軸方向上(勾選狀態(tài))的移動將無效。
Freeze Rotation:凍結(jié)旋轉(zhuǎn)。剛體對象在世界坐標(biāo)系中的X、Y、Z軸方向上(勾選狀態(tài))的旋轉(zhuǎn)將無效。
通常沒有必要在操作一個對象剛體的同時也操作其Transform,只需要二選其一即可。
7.2 Colliders:碰撞體
碰撞體是物理組件中的一類,它要與剛體一起添加游戲?qū)ο笊喜拍苡|發(fā)碰撞。
添加碰撞體的方法:首先選中一個游戲?qū)ο?#xff0c;然后依次打開菜單欄Component->Physics選項(xiàng),可選擇不同的碰撞體類型,這樣就在該對象上添加了碰撞體組件。
7.2.1碰撞體型介紹
1.Box Collider:盒碰撞體
是一個立方體外形的基本碰撞體。
Is Trigger:觸發(fā)器。
勾選該項(xiàng),則該碰撞體可用于觸發(fā)事件,并將被物理引擎所忽略。
Material:材質(zhì)。
采用不同的物理材質(zhì)類型決定了碰撞體與其他對象的交互形式。
Center:中心
碰撞體在對象局部坐標(biāo)中的位置。
Size:大小。
碰撞體在X、Y、Z方向上的大小。
2.Sphere Collider:球形碰撞體
3.Capsule Collider:膠囊碰撞體
4.Mesh Collider:網(wǎng)格碰撞體
5.Wheel Collider:車輪碰撞體
7.2.2碰撞體相關(guān)的知識點(diǎn)介紹
7.3 Character Controller:角色控制器
7.4布料
7.4.1交互布料
7.4.2蒙皮布料
7.4.3布料渲染器
7.5關(guān)節(jié)
7.5.1鉸鏈關(guān)節(jié)
7.5.2固定關(guān)節(jié)
7.5.3彈簧關(guān)節(jié)
7.5.4角色關(guān)節(jié)
7.5.5可配置關(guān)節(jié)
7.6力場
7.7物理引擎實(shí)例
chap9導(dǎo)航網(wǎng)格尋路
9.1概述
NavMesh(導(dǎo)航網(wǎng)格)是3D游戲世界中用于實(shí)現(xiàn)動態(tài)物體自動尋路的一種技術(shù),它將游戲場景中復(fù)雜的結(jié)構(gòu)組織關(guān)系簡化為帶有一定信息的網(wǎng)格,在這些網(wǎng)格的基礎(chǔ)上通過一系列相應(yīng)的計(jì)算來實(shí)現(xiàn)自動尋路。Unity從3.5開始集成了導(dǎo)航網(wǎng)格功能,并提供了方便地用戶界面。導(dǎo)航時,只需要給導(dǎo)航物體掛載導(dǎo)航組件,導(dǎo)航物體便會自行根據(jù)目標(biāo)點(diǎn)來尋找最直接的路線,并沿著該路線行進(jìn)到目標(biāo)點(diǎn)。
chap12游戲開發(fā)基礎(chǔ)知識
在游戲引擎中使用的矩陣通常為4*4矩陣,因?yàn)樗梢悦枋鱿蛄康钠揭啤⑿D(zhuǎn)、縮放等所有的線性變換。
如果引入齊次坐標(biāo),則可以使用(x,y,z,1)來表示坐標(biāo)點(diǎn),而使用(x,y,z,0)來表示向量。
四元數(shù)Q可記作:Q=[w,(x,y,z)]
在3D數(shù)學(xué)中使用單位四元數(shù)/歐拉角/矩陣來表示旋轉(zhuǎn),對于三維空間中旋轉(zhuǎn)軸為n,旋轉(zhuǎn)角度為a的旋轉(zhuǎn),如果用四元數(shù)表示,四個分量分別為:
w=cos(a/2),x=sin(a/2)cos(b_x),y=sin(a/2)cos(b_y),z=sin(a/2)cos(b_z)
其中cos(b_x),cos(b_y),cos(b_z)分別表示旋轉(zhuǎn)軸的x,y,z分量。
Unity中物體的前方向?yàn)榫植孔鴺?biāo)系z軸的正方向
可編程管線的核心就是Shader。
在Direct3D 9中,渲染管線主要有9個處理階段構(gòu)成。分別是:局部坐標(biāo)變換→世界坐標(biāo)變換→觀察坐標(biāo)變換→背面消隱→光照計(jì)算→裁剪→投影→視口計(jì)算→光柵化。對于可編程管線,頂點(diǎn)變換和光照可以通過編寫Vertex Shader來控制,光柵化則可以通過編寫Pixel Shader來控制。
chap13 Unity腳本開發(fā)基礎(chǔ)
在Unity中,游戲交互通過腳本編程來實(shí)現(xiàn)。
腳本可以理解為附加在游戲?qū)ο笊系挠糜诙x游戲?qū)ο笮袨榈闹噶畲a。通過腳本,開發(fā)者可以控制每一個游戲?qū)ο蟮膭?chuàng)建、銷毀以及對象在各種情況下的行為,進(jìn)而實(shí)現(xiàn)預(yù)期的交互效果。
Boo是Python語言在.NET上的實(shí)現(xiàn),使用者相對較少。
Unity的腳本語言基于Mono的.NET平臺上運(yùn)行,可以使用.NET庫,這也為XML、數(shù)據(jù)庫、正則表達(dá)式等問題提供了很好的解決方案。
Unity里的腳本都會經(jīng)過編譯。
Unity的3種腳本語言實(shí)際上在功能和運(yùn)行速度上是一樣的,區(qū)別主要體現(xiàn)在語言特性上。
Unity官方示例中的腳本基本都是用JavaScript寫的。有人將Unity使用的JavaScript稱為UnityScript。
大多數(shù)的Unity第三方插件都是用C#編寫的。
C#基本語法
在Unity中,C#變量聲明方式為:
變量前面可以添加訪問修飾符public、protected、private,其中public的變量可以在監(jiān)測視圖中查看和編輯,不添加訪問修飾符默認(rèn)為private(在JavaScript中默認(rèn)為public)。
JavaScript/C#中可用的變量類型:
數(shù)值類型
字符串
布爾值 在C#中只能使用內(nèi)建數(shù)組
雖然不能使用Array數(shù)組,但是可以使用ArrayList、List等容器來達(dá)到同樣的目的。
C#中的操作符與JavaScript操作符一致。
C#中的條件判斷語句、循環(huán)語句、switch語句的使用與JavaScript語句一致。
參數(shù)可以使用關(guān)鍵字ref聲明為傳引用參數(shù),在函數(shù)調(diào)用時的實(shí)參數(shù)前也需要添加ref。
另外,函數(shù)參數(shù)前可以使用關(guān)鍵字out實(shí)現(xiàn)返回多個數(shù)值。
在使用C#編寫腳本時還需要注意以下幾個規(guī)則:
1、凡是需要添加到游戲?qū)ο蟮腃#腳本類都需要直接或間接地從MonoBehaviour類繼承。
2、使用Start或者Awake函數(shù)來初始化,避免使用構(gòu)造函數(shù)。不使用構(gòu)造函數(shù)的原因是在Unity里無法確定構(gòu)造函數(shù)何時被調(diào)用。
3、類名要與腳本文件名相同。這里要求與文件名同名的類指的是從MonoBehaviour繼承的行為類,普通的C#類可以隨意命名。
4、協(xié)同函數(shù)(Coroutines)返回類型必須是IEnumerator,并且用yield return替代yield。
5、目前Unity里的C#不支持自定義命名空間。
在Unity中有兩種新建腳本文件的方法,操作方法分別為:
1、打開菜單欄中的Assert|Create|Javascript項(xiàng)或者是C# Script項(xiàng)
2、在項(xiàng)目視圖上方單擊Create按鈕,或者在視圖區(qū)域右擊,在快捷菜單中選擇Create|Javascript項(xiàng)或者是C# Script項(xiàng)來創(chuàng)建腳本
#pragma strict禁用了腳本的動態(tài)類型,強(qiáng)制使用靜態(tài)類型。
腳本必然事件(Certain Event):在滿足某些條件時由Unity自動調(diào)用。
Start、Update正是最常用的兩個。
層次視圖中的游戲?qū)ο?#xff1a;
Player1
監(jiān)測視圖的屬性
項(xiàng)目視圖中的腳本
Player1.cs
?
在Unity中,開發(fā)者編寫的每一個腳本都被視為一個自定義的組件,游戲?qū)ο罂梢岳斫鉃槟苋菁{各種組件的容器。游戲?qū)ο蟮乃薪M件一起決定了這個對象的行為和游戲中的表現(xiàn)。作為一個組件,腳本本身是無法脫離游戲?qū)ο螵?dú)立運(yùn)行的,它必須添加到游戲?qū)ο笊喜艜А?MonoBehaviour是Unity中一個非常重要的類,它定義了基本的腳本行為,腳本必然事件就是從MonoBehaviour繼承而來。除了必然事件,MonoBehaviour定義了對各種特定事件的響應(yīng)函數(shù),這些函數(shù)名稱均以O(shè)n作為開頭。
表13-7常用的事件響應(yīng)函數(shù)
OnBecameVisible對于任意一個相機(jī)可見時調(diào)用
OnBecameInvisible對于任意一個相機(jī)不可見時調(diào)用
13.6.4訪問組件
一個游戲?qū)ο罂赡苡扇舾山M件構(gòu)成。
Transform用于定義對象在場景中的位置、角度、縮放參數(shù);
Mesh Filter用來從資源文件中讀取模型;
Mesh Renderer用來在場景中渲染Player1模型; 常用的組件及其對應(yīng)的變量
Transform,transform
Rigidbody,rigidbody
Renderer,renderer
Light,light
Camera,camera
Collider,collider
Animation,animation
Audio,audio
如果游戲?qū)ο笊喜淮嬖谀辰M件,則該組件對應(yīng)變量的值將為空值null。
組件引用函數(shù)
GetComponet
GetComponets
GetComponetInChildren
GetComponetsInChildren
這幾個函數(shù)比較耗時,因此應(yīng)盡量避免在Update中調(diào)用這些獲取組件的函數(shù),而是應(yīng)該在初始化時把組件的引用保存在變量中。 在Unity中,用戶可以通過如下幾種方式來訪問游戲?qū)ο?#xff1a;
1、通過名稱來查找:使用函數(shù)GameObject.Find
2、通過標(biāo)簽來查找:GameObject.FindWithTag
也是比較耗時的函數(shù)調(diào)用,因此不建議在Update中調(diào)用它們。
13.7.5 Coroutine協(xié)同程序
Coroutine也稱為協(xié)同程序或者協(xié)程,協(xié)同程序可以和主程序并行運(yùn)行,和多線程有些類似,但是在任一指定時刻只會有一個協(xié)同程序在運(yùn)行,別失的協(xié)同程序則會掛起。
Unity里和協(xié)同程序有關(guān)的函數(shù)有:
StartCoroutine:啟動一個協(xié)同程序
StopCoroutine:終止一個協(xié)同程序
StopAllCoroutines:終止所有協(xié)同程序
WaitForSeconds:等待若干秒
WaitForFixedUpdate:等待直到下一次FixedUpdate調(diào)用
在C#中,協(xié)同函數(shù)的返回類型必須為IEnumerator,yield要用yield return來替代,并且啟動協(xié)同程序用StartCoroutine函數(shù)。
【??
用Coroutine定期執(zhí)行函數(shù)并且獨(dú)立于幀率
如果我們可以每5秒才檢測某些數(shù)據(jù),然后把邏輯移出Update就可以節(jié)省性能消耗。
coroutine是一個可以掛起其執(zhí)行直到y(tǒng)ield操作完成的函數(shù)。
實(shí)現(xiàn)在幀率外定期執(zhí)行函數(shù):
public class TimedMethod: MonoBehaviour{
??void Start()
??{
???StartCoroutine(Tick());
??}
?IEnumerator Tick()
?{
??????????????? float delaySeconds=5.0F;
??????????????? while(true){
??????????????????? print("tick "+Time.time);
??????????????????? yield return new WaitForSeconds(delaySeconds);
??????????????? }
?}
}
】
chap14輸入與控制
處理用戶的輸入是游戲交互的基礎(chǔ)。Unity提供了一個非常易用和強(qiáng)大的用于處理輸入信息的類:Input,它可以處理鼠標(biāo)、鍵盤、搖桿/方向盤/手柄等游戲外設(shè),也可以處理iOS/Android等移動設(shè)備的觸摸輸入信息。程序員通過編寫腳本接收輸入信息,完成與用戶的交互。
在編寫處理輸入的腳本時,需要注意Unity所有輸入信息的更新是在Update方法中完成的,因此和輸入處理相關(guān)的腳本都應(yīng)該放在Update方法中。
在Input類中,Key與物理按鍵對應(yīng),例如鍵盤、鼠標(biāo)、搖桿上的按鍵,其映射關(guān)系無法改變,可以通過按鍵名稱或者按鍵編碼KeyCode來獲得其輸入狀態(tài)。例如,GetKeyDown(KeyCode.A)會在按A鍵時返回true。
Button是輸入管理器Input Manager中定義的虛擬按鍵,通過名稱來訪問。
輸入軸Axis用來模擬平滑變化的輸入,如搖桿的變化、方向盤的轉(zhuǎn)動等,需要在輸入管理器中配置。它包含正負(fù)兩個虛擬按鍵。
在Unity中,鼠標(biāo)位置用屏幕的像素坐標(biāo)表示,屏幕左下角為坐標(biāo)原點(diǎn)(0, 0),右上角為(Screen.width,Screen.height),其中Screen.width為屏幕分辨率的寬度,Screen.height 為屏幕分辨率的高度。
mousePosition的變量類型為Vector3。
GetMouseButtonDown、GetMouseButtonUp、GetMouseButton這3個方法需要傳入?yún)?shù)來指定判斷哪個鼠標(biāo)按鍵,0對應(yīng)左鍵,1對應(yīng)右鍵,2對應(yīng)中鍵。
Unity可以處理搖桿、游戲手柄、方向盤等標(biāo)準(zhǔn)游戲外設(shè)的輸入。
虛擬按鍵需要在輸入管理器中配置,把外設(shè)的輸入消息映射給虛擬按鍵或輸入軸以后,就可以在腳本中使用了。
Unity默認(rèn)為用戶創(chuàng)建了若干映射了搖桿按鈕的虛擬按鍵,包括Fire1、Fire2、Fire3、Jump以及虛擬軸Horizontal和Vertical,可以在腳本里直接使用它們。
在iOS和Android系統(tǒng)中,操作都是通過觸摸來完成的。
通過GetTouch或者touches可以訪問移動設(shè)備的觸摸數(shù)據(jù),數(shù)據(jù)保存在Touch的結(jié)構(gòu)體中。
使用虛擬按鍵的好處是可以讓游戲玩家自由定義按鍵,滿足個性化的操作習(xí)慣。
虛擬按鍵屬于輸入軸的一種特殊情況,在輸入管理器中,都統(tǒng)一視為輸入軸。
Unity中編寫Shader的語言叫做ShaderLab,而ShaderLab說白了就是裹著一層皮的CG著色器語言而已。Cg,即C forgraphics,即用于圖形的C語言,是微軟和英偉達(dá)相互協(xié)作在標(biāo)準(zhǔn)硬件光照語言的語法和語義上達(dá)成的一種一致性協(xié)議。
HLSL和CG其實(shí)是同一種語言。
在Unity中寫Shader約等于給DirectX寫Shader。 chap16 Shader開發(fā)
簡單來說,Shader是為渲染管線中的特定處理階段提供算法的一段代碼。Shader是伴隨著可編程渲染管線出現(xiàn)的,Shader的出現(xiàn)可看作是實(shí)時渲染技術(shù)的一次革命。
Unity中所有的渲染都需要通過Shader來完成,開發(fā)者可以自己編寫Shader,也可以使用Unity提供的內(nèi)建Shader來實(shí)現(xiàn)各種畫面效果。
本章將介紹Unity中的內(nèi)建Shader、ShaderLab語言,以及簡單的表面著色器(Surface Shader)和頂點(diǎn)片段著色器(Vertex & Fragment Shader)的編寫方法。
16.1內(nèi)建Shader介紹
Unity提供了數(shù)量超過60個的內(nèi)建Shader,包括從最簡單的頂點(diǎn)光照效果到高光、法線、反射等游戲中最常用的材質(zhì)效果。
?內(nèi)建Shader根據(jù)應(yīng)用對象可以分為如下幾大類:
普通(Normal Shader Family):用于不透明的對象
透明(Transparent Shader Family):用于透明對象
透明縷空效果(Transparent Cutout Shader Family):用于包含完全透明部分的半透明對象
自反光(Self-llluminated Shader Family):用于有發(fā)光效果的對象
反射(Reflective Shader Family):用于能反射環(huán)境立方體貼圖的不透明對象
游戲開發(fā)者需要在游戲畫面和游戲性能之間做出平衡。
16.2Unity里的三種自定義Shader
編寫Shader需要對OpenGL或者Direct3D的渲染狀態(tài)有基本的了解,以及一些關(guān)于固定功能管線、可編程管線、Cg/HLSL/GLSL編程 語言的知識。
在Unity中,開發(fā)者可以編寫3種類型的Shader:
表面著色器:可同時正常工作在前向渲染及延遲渲染模式下。以Cg/HLSL語言進(jìn)行編寫。
頂點(diǎn)和片段著色器:同樣是用Cg/HLSL語言來編寫。
固定功能管線著色器:完全以ShaderLab語言編寫,類似于微軟的Effects或是英偉達(dá)的CgFX。
無論編寫哪種Shader,實(shí)際的Shader代碼(比如Cg/HLSL代碼)都需要嵌入在ShaderLab代碼中,Unity需要通過ShaderLab代碼來組織Shader結(jié)構(gòu)。
NewShader.shader的示例代碼:
Shader "Custom/NewShader" {//Shader的名稱
?Properties {
??_Color ("Color", Color) = (1,1,1,1)
??_MainTex ("Albedo (RGB)", 2D) = "white" {}
??_Glossiness ("Smoothness", Range(0,1)) = 0.5
??_Metallic ("Metallic", Range(0,1)) = 0.0
//在這里定義Shader中使用的屬性,例如顏色,向量,紋理
?}
?SubShader {
//在這里編寫Shader的實(shí)現(xiàn)代碼
//包括表面著色器、頂點(diǎn)和片段著色器的Cg/HLSL代碼
//或者是固定功能著色器的ShaderLab代碼
??Tags { "RenderType"="Opaque" }
??LOD 200
??
??CGPROGRAM
??// Physically based Standard lighting model, and enable shadows on all light types
??#pragma surface surf Standard fullforwardshadows // Use shader model 3.0 target, to get nicer looking lighting
??#pragma target 3.0 sampler2D _MainTex; struct Input {
???float2 uv_MainTex;
??}; half _Glossiness;
??half _Metallic;
??fixed4 _Color; void surf (Input IN, inout SurfaceOutputStandard o) {
???// Albedo comes from a texture tinted by color
???fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
???o.Albedo = c.rgb;
???// Metallic and smoothness come from slider variables
???o.Metallic = _Metallic;
???o.Smoothness = _Glossiness;
???o.Alpha = c.a;
??}
??ENDCG
?}
?FallBack "Diffuse"
}
chap18工作流程
在很多類型游戲的制作過程中,開發(fā)者都會考慮一個非常重要的問題,即如何在游戲運(yùn)行過程中對資源進(jìn)行動態(tài)的下載和加載。為此,Unity引擎引入了AssetBundle這一技術(shù)來滿足開發(fā)者的上述需求。
AssetBundle是Unity引擎提供的一種用于存儲資源的文件格式,它可以存儲任意一種Unity引擎能夠識別的資源,例如模型、紋理、音頻、動畫片段甚至整個場景等。同時,AssetBundle也可以包含開發(fā)者自定義的二進(jìn)制文件,只需將二進(jìn)制文件的擴(kuò)展名改成.byte,Unity引擎即可將其識別為TextAsset,進(jìn)而可以被打包到AssetBundle文件中。
一般情況下,AssetBundle的工作流程大致如下:
1、開發(fā)過程中,開發(fā)者創(chuàng)建好AssetBundle文件并上傳至服務(wù)器上。
創(chuàng)建AssetBundle:開發(fā)者可以在Unity編輯器中通過腳本來創(chuàng)建滿足要求的AssetBundle文件。
上傳至服務(wù)器:開發(fā)者創(chuàng)建好AssetBundle文件后,即可通過上傳工具(比如FTP等)將其上傳至服務(wù)器中,從而使游戲通過訪問服務(wù)器來獲取所需的資源。
2、游戲運(yùn)行時,客戶端會根據(jù)實(shí)際需求從服務(wù)器上將適當(dāng)?shù)腁ssetBundle下載到本地機(jī)器,再通過加載模塊將其資源加載到游戲中。
下載AssetBundle:Unity提供了一套完整的API供開發(fā)者使用,從而完成從服務(wù)器端下載AssetBundle文件。
加載AssetBundle中的Assets:AssetBundle文件一旦下載完成,開發(fā)者即可通過特定的API來加載其所包含的Assets,包括模型、紋理、動畫片段等。
18.1AssetBundle
用戶可以通過腳本在Unity編輯器中創(chuàng)建AssetBundle文件,Unity引擎提供了3種創(chuàng)建AssetBundle的API,分別如下:
BuildPipeline.BuildAssetBundle
通過該接口,開發(fā)者可以將編輯器中任意類型的Assets打包成AssetBundle文件。
BuildPipeline.BuildStreamedSceneAssetBundle
通過該接口,開發(fā)者可以直接將項(xiàng)目中的一個或若干個場景以流式加載的方式打包成AssetBundle文件。
BuildPipeline.BuildAssetBundleExplicitAssetNames
該接口功能與BuildPipeline.BuildAssetBundle接口相同,但創(chuàng)建時可以為每個Object指定一個自定義的名字
18.2如何下載AssetBundle
Unity引擎提供了兩種方式來從服務(wù)器上動態(tài)下載AssetBundle文件,分別是非緩存機(jī)制和緩存機(jī)制。
1、非緩存機(jī)制
通過創(chuàng)建一個WWW實(shí)例來對AssetBundle文件進(jìn)行下載。下載后的AssetBundle文件將不會進(jìn)入U(xiǎn)nity引擎特定的緩存區(qū)。
2、緩存機(jī)制
通過WWW.LoadfromCacheorDownload接口來下載AssetBundle文件。下載后的AssetBundle文件將自動被存放在Unity引擎特定的緩存區(qū)內(nèi),該方法是Unity推薦的AssetBundle文件下載方式。
18.3AssetBundle的加載與卸載
18.3.1如何加載AssetBundle
當(dāng)把AssetBundle文件從服務(wù)器端下載到本地之后,需要將其加載到內(nèi)存中并創(chuàng)建AssetBundle文件內(nèi)存對象。Unity提供了3種方式來加載AssetBundle文件:
1、WWW.assetbundle屬性
可以通過WWW.assetbundle屬性來創(chuàng)建一個AssetBundle文件的內(nèi)存對象。
2、AssetBundle.CreateFromFile
通過該接口可以從磁盤文件創(chuàng)建一個AssetBundle文件的內(nèi)存對象。需要注意的是,該方法僅支持非壓縮格式的AssetBundle,即在創(chuàng)建AssetBundle時必須使用UncompressedAssetBundle選項(xiàng)。
3、AssetBundle.CreateFromMemory
通過該接口可以從內(nèi)存數(shù)據(jù)流創(chuàng)建AssetBundle內(nèi)存對象。例如,當(dāng)用戶對AssetBundle進(jìn)行加密時,可以先調(diào)用解密算法返回解密后的數(shù)據(jù)流,然后通過AssetBundle.CreateFromMemory從數(shù)據(jù)流創(chuàng)建AssetBundle對象。
需要特別注意的是,如果AssetBundle之間存在依賴,則必須嚴(yán)格按照依賴順序加載AssetBundle文件。
18.3.2如何從AssetBundle中加載Assets
當(dāng)AssetBundle文件加載完成后,就可以將它所包含的Assets加載到內(nèi)存中。Unity提供了3種加載API供開發(fā)者使用,它們分別是:
AssetBundle.Load
該接口可以通過名字來將AssetBundle文件中包含的對應(yīng)Asset加載到內(nèi)存中,也可以通過參數(shù)來指定加載Asset的類型。
AssetBundle.LoadAsync
該接口的作用與AssetBundle.Load相同,不同的是該接口是對Asset進(jìn)行異步加載,即加載時主線程可以繼續(xù)執(zhí)行,所以該方法適用于加載一個較大的Asset或者 同時加載多個Assets。
AssetBundle.LoadAll
該接口用來一次性加載AssetBundle文件中所有的Assets,同AssetBundle.Load一樣,可以通過指定加載Asset的類型來選擇性地加載Assets。
18.3.3如何從場景AssetBundle中加載Assets
18.3.2中介紹了如何從普通的AssetBundle文件中加載Assets。
Application.LoadLevel
Application.LoadLevelAsync
Application.LoadLevelAdditive
Application.LoadLevelAdditiveAsync
18.3.4如何卸載AssetBundle
Unity提供了AssetBundle.Unload接口來卸載AssetBundle文件。
chap19腳本調(diào)試與優(yōu)化
Unity自3.0版本之后,開始支持使用MonoDevelop編輯器對腳本進(jìn)行調(diào)試,具體的調(diào)試方法如下:
1、啟動Unity應(yīng)用程序,按Ctrl+N組合鍵,新建一個空場景。
2、在Unity中,依次打開菜單欄中的Edit|Preferences|External Tool項(xiàng),彈出Unity Preferences對話框,將ExternalScript Editor設(shè)置為MonoDevelop(builtin)。
3、設(shè)置完成后,打開MonoDevelop腳本編輯器。在該編輯器中,依次打開菜單欄中的Tools|Options|Unity|Debugger項(xiàng),彈出如圖所示的調(diào)試設(shè)置對話框。
4、在Editor Location中設(shè)置Unity.exe文件所在的路徑,勾選Launch Unity automatically與Build project inMonoDevelop,單擊右下角的OK按鈕完成配置。
5、腳本調(diào)試是調(diào)試代碼的過程,為了調(diào)試方便,在Unity的Project界面中新建Count.cs文件,把該代碼綁定至Main Camera對象上。右擊該代碼文件,在彈出的菜單中選擇Sync MonoDevelop Project項(xiàng)。
6、用MonoDevelop打開Count.cs文件,為sum+=i該行代碼設(shè)置斷點(diǎn)(設(shè)置斷點(diǎn)只需要在該代碼行的行號前單擊即可設(shè)置),并在下拉框中選擇Debug模式。
7、在開啟Debug模式之前需要關(guān)閉Unity編輯器。開啟Debug模式可以單擊Debug按鈕也可以按F5鍵,開啟后可以看到Unity編輯器重新啟動,這就是剛剛勾選Launch Unity automatically的原因,它能在開啟Debug模式之后自動重新啟動Unity界面。單擊Play按鈕進(jìn)行測試。
8、單擊Count按鈕,MonoDevelop的狀態(tài)如圖所示。
9、從左下角的Locals視圖中可以知道,Count類綁定在了Main Camera上,并且i變量的結(jié)果與sum變量的結(jié)果都為0。
10、在實(shí)際項(xiàng)目中如果由于調(diào)試原因需要關(guān)閉Unity,則顯得不太實(shí)際。下面介紹另一種腳本調(diào)試的方法。打開MonoDevelop中的Run|Attach to Process,彈出圖所示的對話框。
11、此時選擇Unity的進(jìn)程(3592 Unity Editor),單擊右下角Attach按鈕,此時Unity Editor與MonoDevelop腳本編輯器已經(jīng)連接。返回至Unity Editor中,單擊Play按鈕進(jìn)行測試,單擊Game視圖中Count按鈕,此時MonoDevelop腳本編輯器的狀態(tài)如圖所示。
3個按鈕(從左到右)分別代表:
Step Over:調(diào)試時按照一行一行調(diào)試,單擊該按鈕一次執(zhí)行一行。
Step Into:如果當(dāng)前箭頭所指的代碼有函數(shù)的調(diào)用,則用StepInto進(jìn)入該函數(shù)進(jìn)行單步執(zhí)行。
Step Out:如果當(dāng)前箭頭所指向的代碼是在某一函數(shù)內(nèi),用它使函數(shù)運(yùn)行至返回處。
chap20跨平臺發(fā)布
20.2發(fā)布到Android平臺
在發(fā)布Android項(xiàng)目之前,開發(fā)人員需先下載并安裝JavaSDK和AndroidSDK。本書中所用的Java SDK為7.0版本,Android SDK為21.1版本。
20.2.1 Java SDK的環(huán)境配置
1.在桌面“我的電腦/計(jì)算機(jī)”圖標(biāo)上右擊,依次打開屬性|高級系統(tǒng)設(shè)置|環(huán)境變量選項(xiàng),進(jìn)而彈出“環(huán)境變量”配置對話框。
2.檢查系統(tǒng)變量下是否有JAVA_HOME、path、classpath這3個環(huán)境變量,如果沒有則需要新建這3個環(huán)境變量。
含義:
JAVA_HOME環(huán)境變量:其設(shè)置值就是jdk所在的安裝路徑
path環(huán)境變量:其設(shè)置值為%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
classpath環(huán)境變量:其設(shè)置值為.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar?
3.為了驗(yàn)證配置是否成功,可以打開系統(tǒng)的命令提示符,在DOS命令行狀態(tài)下輸入javac命令。
20.2.2 Android SDK的安裝與項(xiàng)目發(fā)布
1.確認(rèn)已經(jīng)完成Android SDK的安裝后,需要對Android SDK進(jìn)行環(huán)境變量的配置。
新建環(huán)境變量ANDROID_SDK_HOME,變量值輸入Android SDK所在的安裝路徑。
找到path環(huán)境變量:在變量值里添加兩個路徑:%ANDROID_SDK_HOME%\platform-tools與%ANDROID_SDK_HOME%\tools。
配置完上述的參數(shù)后,進(jìn)入命令提示符狀態(tài),輸入adb。
20.3 iOS平臺的發(fā)布
20.3.1發(fā)布前的準(zhǔn)備工作
需要Mac蘋果計(jì)算機(jī)以及iOS測試機(jī)(例如iPhone、iPod touch或iPad),并且在Mac計(jì)算機(jī)上安裝了Xcode開發(fā)工具,另外還需要一個注冊好的Apple蘋果開發(fā)者賬號,并且配置好相關(guān)的證書。
20.3.2發(fā)布iOS平臺的設(shè)置
20.3.3項(xiàng)目工程輸出與發(fā)布
20160226添加: http://pan.baidu.com/s/1G703W?密碼: trjc
http://wenku.baidu.com/link? url=UoWAJzM80ZwTOjU7PWrf8vrkByZDhObdvytPNkDTDkqxLuOKbCz2FriEIPrE10vOrBAUdWDUAA1rc4nHFM6yJHupg-1g9lyifb2ABhWt4JS
臺灣大宇資訊集團(tuán)原創(chuàng)制作
1995年7月首款作品DOS版發(fā)行。
仙劍奇?zhèn)b傳
仙劍奇?zhèn)b傳二
仙劍奇?zhèn)b傳三、仙劍奇?zhèn)b傳三外傳·問情篇
仙劍奇?zhèn)b傳四
仙劍奇?zhèn)b傳五、仙劍奇?zhèn)b轉(zhuǎn)五前傳
2004年被改編成同名電影。
仙劍之父:姚壯憲(姚仙)
仙劍二,單機(jī)游戲,于2003年1月上市
仙劍三,3D畫面在仙劍系列中首度出現(xiàn),2003年8月出品
仙劍三外傳,2004年冬天出品
仙劍四,單機(jī)游戲,2007年8月1日發(fā)售
仙劍五,單機(jī)游戲,于2011年7月上市
仙劍五前傳,單機(jī)游戲,于2013年1月上市
江西泰豪動漫職業(yè)學(xué)院畢業(yè)設(shè)計(jì)(論文) 龍建:炸彈人游戲的制作(2015.5.15) http://www.docin.com/p-1163127361.html 開發(fā)游戲類型 5種: 1.1.1動作游戲ACT 包括射擊游戲STG和格斗游戲FTG 1.1.2冒險(xiǎn)游戲AVG 1.1.3模擬游戲SIM或SLG 1.1.4角色扮演游戲RPG 1.1.5策略游戲 1.1.6休閑游戲
【
1997年,美國暴雪公司發(fā)布《Diablo》(暗黑破壞神),屬于RPG角色扮演游戲中的ARPG動作角色扮演游戲。
http://wenku.baidu.com/link?url=IaIRE6Cikfmc7vVO9oM0L6sUeJn2P_7Hp2JEQj7_lZahC007TMEDcIY7AT3AGQO0iVhOPxSv- 6qvr6aA7H5lJkWylGxRHIzgnzSLl5b41tG
論民間文化元素在電腦游戲創(chuàng)作中的運(yùn)用——以網(wǎng)絡(luò)游戲《暗黑破壞神》為例
http://www.docin.com/p-365976240.html
14個游戲類型:
ACT動作游戲
AVG冒險(xiǎn)游戲
FPS第一人稱視點(diǎn)射擊游戲
FTG格斗游戲
MUG音樂游戲
PUZ益智類游戲
RAC賽車游戲
RPG角色扮演游戲
RTS即時戰(zhàn)略游戲
SLG模擬/戰(zhàn)旗式戰(zhàn)略游戲
SPG體育運(yùn)動游戲
STG射擊游戲
TAB桌面游戲
ETC其他類型游戲
周慶明:暗黑破壞神2游戲分析(2015.5.18)
http://www.docin.com/p-1479595671.html
游戲名稱:暗黑破壞神2
游戲類型:動作RPG
游戲平臺:PC/MAC
游戲操控設(shè)備:鍵盤,鼠標(biāo)
游戲圖像技術(shù):3D
游戲玩家視角:60度傾斜
游戲操作:
功能|熱鍵
屬性窗口|A
物品窗口|I
組隊(duì)窗口|P
聊天記錄|M
任務(wù)列表|Q
幫助窗口|H
技能樹|T
快捷技能鍵|S
技能1|F1
……
技能8|F8
選擇上一個技能|Mouse Wheel Up
選擇下一個技能|Mouse Wheel Down
顯示快捷物品欄|~
使用快捷物品欄1|1
……
使用快捷物品欄4|4
聊天|Enter
奔跑|Ctrl
切換 走/跑|R
停止|Shift
顯示物品|Alt
顯示肖像|Z
自動地圖|TAB
】? 1.4開發(fā)環(huán)境 32位Win7+Unity4.3.0+C#+VS2012 2.3添加美術(shù)資源 把用到的UI資源和場景背景以及敵機(jī)和主角戰(zhàn)機(jī)等等通過TexturePackerGUI工具打包成圖集,然后導(dǎo)入工程中。 把工程中圖集的參數(shù)改成和圖集一樣的分辨率,Format改成ARGB 16bit。 2.5添加音樂音效 游戲按鈕點(diǎn)擊音效的表現(xiàn),子彈發(fā)射的音效表現(xiàn),子彈和敵機(jī)爆炸的音效表現(xiàn)以及游戲音樂表現(xiàn)。
1、主角獲得道具 public class Daoju:MonoBehaviour{ //道具類型 public enum leixing { zhadan, HP, xiezi, weili, } public leixing myleixing; //如果主角進(jìn)入觸發(fā)器調(diào)用主角方法獲得道具 void OnTriggerEnter(Collider other){ if(other.collider.tag=="Player") { other.GetComponent<Player>().Daoju(myleixing); Destroy(gameObject); }
} }
相機(jī): public class MyCamera : MonoBehaviour ? {? //移動速度 public float sp=1;? //主角 public Transform play; //相機(jī)移動位置限制 public float maxX=19.5f,minX=3.5f,maxZ=21,minZ=2;? //相機(jī)離主角高度距離 float distance=5;
// Use this for initialization? void Start () ? {? ? transform.position=play.position+new Vector3(0,distance,0);? }? void LateUpdate() {?
}? void V() ? {?
}? }
UI功能: //狀態(tài),主要用來按暫停鍵的時候暫停游戲 public enum UIzhuangtai { kai, shezhi, zhangting, siwang, yunxing } public UIzhuangtai myUIzhuangtai{get;set;} //各種按鈕 public GameObject kaishi,shezi,tuichu,fanhui,shuxing,tuichu_1,zhangting; //開始,設(shè)置,屬性面板 GameObject kaishigame,shezigame,shuxinggame; //燈光 public Light light; //用來控制背景音樂音量 AudioSource audio; //屬性UI [HideInInspector] public UILabel HP,weili,zhadan,xiezi,defeng,guaiwu; //小地圖相機(jī) public Camera xiaoditecamera;? Transform move;
UICheckbox isditu,isyinxiao; public bool yinxiao { get; set; } UISlider dengguang,yingyin,beijing,xiangji; public UILabel guankalabel;
void Awake() { kaishigame= transform.Find("開始菜單").gameObject; shezigame= transform.Find("設(shè)置").gameObject; isditu=shezigame.transform.Find("小地圖").GetComponent<UICheckbox>(); isyinxiao=shezigame.transform.Find("音效").GetComponent<UICheckbox>(); dengguang=shezigame.transform.Find("燈光").GetComponent<UISlider>(); shuxing= transform.Find("屬性").gameObject; ? xiezi=shuxing.transform.Find("鞋子").GetComponent<UILabel>(); } 炸彈: //上下左右四個方向放置火焰 List<Transform> shang=new List<Transform>(); List<Transform> xia=new List<Transform>(); List<Transform> zuo=new List<Transform>(); List<Transform> you=new List<Transform>(); //自己的位置 public Transform ray; //爆炸音效 public AudioClip baozha; //火焰預(yù)制件 public GameObject h;
? 數(shù)據(jù)驅(qū)動式游戲開發(fā)管道
Unity編輯器及其工作流程:最好的~。
引擎功能
渲染系統(tǒng):多線程渲染,延遲渲染,全屏后處理,遮擋剔除,LOD
燈光系統(tǒng):延遲燈光處理,實(shí)時陰影,SSAO,體積光,光照貼圖,HDR,Light Probes
輸入控制:鍵盤、鼠標(biāo)、360手柄,手機(jī)觸摸輸入
地形系統(tǒng):刷地形,刷紋理,樹,草,石塊,水,河流,道路
物理系統(tǒng)(PhysX):剛體,鉸鏈,軟物體,玩偶,汽車物理模型,服裝(物理)模擬
粒子特效:煙、霧、火、爆炸、雨、雪、水、瀑布
音響系統(tǒng):FMOD,WAV,MP3
腳本系統(tǒng):JavaScript,C#,Boo
尋路系統(tǒng):NavMesh
網(wǎng)路支持:Real-time networking、Web connectivity、Web browser integration、Backend connectivity
性能分析系統(tǒng):CPU & GPU Profiler
編輯器功能
資源集成及其管理:Prefab,游戲物體組合
場景建模
資源管道
資源商店
資源管理服務(wù)器(Asset Server+Cache Server)
編輯器的拓展(plug-in)
性能分析
基于Unity新UI系統(tǒng)的游戲界面開發(fā)實(shí)現(xiàn) 2、Unity新UI 2014年11月,Unity4.6正式版推出了新的UI系統(tǒng)。 其主要特點(diǎn)包括: (1)不僅可以在屏幕空間中創(chuàng)建透視或非透視的UI,而且也可以在世界空間中輕松地創(chuàng)建交互。 (2)布局系統(tǒng)不僅支持與邊、角點(diǎn)的對齊,而且支持與父容器中自定義點(diǎn)的對齊。 (3)可以基于圖片、文字以及掩碼和效果等構(gòu)建自定義空間。所有的圖形組件都完全支持自定義的材質(zhì)和光線。? (4)內(nèi)置了很多為跨平臺發(fā)布而設(shè)計(jì)的控件,包括按鈕、滑動條、滾動視圖、輸入?yún)^(qū)域等。支持觸摸控制,以及鼠標(biāo)、鍵盤、搖桿等輸入設(shè)備。 (5)UI系統(tǒng)中集成了Unity的動畫系統(tǒng)。可以使用狀態(tài)機(jī)或者其他動畫特性來控制UI元素和面板。 (6)UI系統(tǒng)是可擴(kuò)展的。 (7)使用C#中的delegate委托機(jī)制,可以很容易地在監(jiān)視視圖中建立UI控件的事件回調(diào)函數(shù)。 3、UI控件 3.1Canvas畫布 畫布組件表示一個擺放和渲染所有UI元素的抽象平面區(qū)域,所有UI元素必須是一個擁有畫布組件的游戲?qū)ο蟮淖訉ο蟆?畫布有三種渲染模式: (1)屏幕空間覆蓋:在屏幕空間中將UI渲染在場景之上。調(diào)整屏幕大小或改變屏幕分辨率,則畫布會自動改變大小以進(jìn)行匹配。 (2)屏幕空間相機(jī):類似于屏幕空間覆蓋,但畫布由一個特定的相機(jī)渲染,相機(jī)的設(shè)置會影響UI。 (3)世界空間:使畫布像場景中的其他對象一樣被渲染。 3.2基本布局 本節(jié)介紹如何確定UI元素相對于畫布的位置以及UI元素之間的相對位置。 3.2.1 Rect Tool矩形工具 在Unity中,每一個UI元素都用一個矩形來表示,這樣可以方便地進(jìn)行布局。在場景視圖中可以使用工具欄中的矩形工具按鈕來操縱該矩形。 矩形工具不僅可以用于調(diào)整UI和Unity的2D對象,甚至還可以用來操作3D對象。 3.2.2Rect Transform矩形變換 矩形變換是為所有的UI元素而設(shè)計(jì)的一個新的transform組件。 矩形變換是除了具有普通transform組件的position、rotation和scale屬性之外,還增加了用來表示矩形大小的width和height。 3.2.2.1 Pivot中樞點(diǎn) UI元素的所有變換是圍繞中樞點(diǎn)來定義的,因此中樞點(diǎn)的位置會影響UI元素的旋轉(zhuǎn)、定位和縮放的結(jié)果。比如,當(dāng)設(shè)置UI元素的位置時,實(shí)際上設(shè)置的是中樞點(diǎn)的位置;對UI元素進(jìn)行旋轉(zhuǎn)時,圍繞的是中樞點(diǎn)。 3.2.2.2Anchors錨點(diǎn) 矩形變換組件包含一個稱為錨點(diǎn)的布局概念。 3.3可視控件 3.3.1Panel面板 主要的功能就是一個“容器”。 3.3.2Text文本 3.3.3Image圖片 在使用該控件時,要求圖片的紋理類型必須是Sprite(2D and UI)。 Sliced類型表示圖片需要在Sprite Editor中進(jìn)行“九宮格”切片后才可以應(yīng)用。 3.4交互控件 3.4.1Button按鈕 3.4.2Slider滑動條
?
1.3.2手機(jī)硬件的多樣性
Apple處理器A7是2013年9月11日發(fā)布的。
iPhone5s率先采用A7處理器。
A7處理器,采用的是64位構(gòu)架。
ARM架構(gòu)稱作進(jìn)階精簡指令集機(jī)器。
4.7建立“開始”按鈕 4.7.1建立按鈕本體 相對于自適應(yīng)分辨率的設(shè)置,錨點(diǎn)和支點(diǎn)的理解更為重要。 注意:在新的UI系統(tǒng)中可以輕松地控制UI元素的層,Unity默認(rèn)渲染Canvas內(nèi)的第一個項(xiàng)目,整個渲染從上至下,因此Canvas中的最后一個物體被最后渲染,最后渲染的物體就會顯示在整個視圖的最頂層,而之前被渲染的UI元素依照順序進(jìn)行相應(yīng)的分層。 4.7.2控制按鈕文字組件 4.7.3將按鈕設(shè)置為圖形 將StartGame圖形使用鼠標(biāo)左鍵拖曳至按鈕元素的Source Image通道中 4.9按鈕與觸發(fā)事件JavaScript語言腳本 按鈕按下時需要調(diào)用腳本中的函數(shù)來實(shí)現(xiàn)相應(yīng)的功能。 UiStart.js #pragma strict function OnClick(){ print('go'); } 將這個腳本掛在空物體GUI上,GUI拖曳給“On Click ()”一欄中的空置處,接著打開“On Click ()”一欄中的No Function選項(xiàng),在此選項(xiàng)中選擇腳本UiStart.js的OnClick函數(shù)。
4.10按鈕與觸發(fā)事件C#語言版本
注意:C#函數(shù)必須加入public,這樣UI才能夠識別。 chap5 使用Unity 3D建立次世代級別的烘焙環(huán)境
5.1在3D軟件中制作針對手游的場景模型
5.1.1手機(jī)游戲場景應(yīng)該怎樣建立
1、關(guān)卡類型的設(shè)置
殺戮性質(zhì)關(guān)卡、拯救類型關(guān)卡、防御類型關(guān)卡
2、戰(zhàn)斗角度的設(shè)置
3、場景中的特別效果
5.1.2從圖片建立一個建筑物
5.1.3讓多個建筑物之間形成關(guān)聯(lián)
5.1.4使用不同的元素構(gòu)架整體場景
5.1.5面數(shù)的分配與貼圖的大小
場景面數(shù)控制在3W四邊面左右就可以流暢運(yùn)行。
貼圖的大小與數(shù)量直接影響游戲運(yùn)行內(nèi)存的占用。手機(jī)游戲盡量不要使用2048以上的貼圖,控制貼圖大小為正方形,類似512*512;1024*1024這樣的尺寸。
單一游戲場景中512以上尺寸的貼圖盡量控制在10張左右,如果使用1024以上的貼圖盡量控制在6張左右,小型貼圖例如256、128尺寸的圖片可以配合大型貼圖使用10張左右。
5.2導(dǎo)入U(xiǎn)nity3D并設(shè)置
5.2.1如何將模型分類
游戲中大致的模型可以分為兩類:固定模型和動畫模型。
5.2.2合并動畫專用模型
chap9 利用Unity 3D構(gòu)建角色控制系統(tǒng) 9.1傳統(tǒng)第三人稱虛擬搖桿控制系統(tǒng) 9.1.1導(dǎo)入U(xiǎn)nity官方腳本包 在觸碰屏上建立角色操作系統(tǒng)與在傳統(tǒng)平臺上相比最大區(qū)別是: 需要虛擬搖桿的支持。首先在Unity中導(dǎo)入官方默認(rèn)的Standard Assert(Mobile),在Assets菜單中Import Package子菜單中單擊Standard Assert(Mobile)按鈕,導(dǎo)入后可以在項(xiàng)目視圖中看到。 9.2利用插件構(gòu)建角色分屏操作系統(tǒng) 9.2.1在Unity中導(dǎo)入分屏插件
Unity3d開發(fā)VR第一講---概述 http://www.docin.com/p-1444636517.html Unity對某些虛擬現(xiàn)實(shí)設(shè)備提供了內(nèi)置支持。 Unity從5.3版本開始專注于虛擬現(xiàn)實(shí)Oculus家族設(shè)備,特別是Oculus Rift Development Kit 2(DK2)和消費(fèi)版Gear VR。 Unity5.3版本不再支持note4。 Unity從5.3開始內(nèi)置了VR接口。 需要安裝Oculus runtime 0.8 installed。下載地址www.vrzhinan.com 配置Unity支持VR 打開Edit|Project Settings|Player|Other Settings|Rendering 在監(jiān)視面板中勾選Other Setting中的Virtual Reality Supported using UnityEngine; using UnityEngine.VR;//VR包 public class ToggleVR:MonoBehaviour { private void Update(){ //當(dāng)鍵盤按下V,則切換到VR狀態(tài) if(Input.GetKeyDown(KeyCode.V)){ VRSettings.enabled=|VRSettings.enabled; } } } 當(dāng)勾選了Virtual Reality Supported后,并且DK2已經(jīng)連接到電腦,在Unity中運(yùn)行程序的時候,程序就會在DK2中顯示啦。 自從Unity5.3版本不支持VR后,并不需要為了VR創(chuàng)建兩個攝像機(jī)了。并且Unity會自動為場景中資源進(jìn)行VR優(yōu)化。比如遮擋剔除、陰影渲染、紋理渲染等。 VR最先讓人頭痛的就是眩暈,所以設(shè)備的頻率一定要配置正確。 DK2必須配置成75fps。Gear VR必須是60fps。 屏幕分辨率也是一定要達(dá)到要求才行的。 對于DK2設(shè)備的分辨率為1920*1080大小的75fps。若是商用的Oculus Rift(CV1)則分辨率為2130*1200,大小90fps。 20160225添加: 星球項(xiàng)目換新的UI,選角色界面模型換回圖片
4個角色,每個角色有待機(jī)、響應(yīng)、選中3種狀態(tài)。
用Text代替TextMesh顯示龍幣、積分
用Image代替Sprite顯示龍幣積分底圖
第一個場景的層級管理:
1、層次視圖中選中TipInfoCamera
Layer選擇TipInfo
Culling Mask選中TipInfo,不要選中Default、UI、Role
在Camera Preview可以看到這個攝像機(jī)僅僅照射TipInfo。
Roles節(jié)點(diǎn)下有Role1、Role2、Role3、Role4四個節(jié)點(diǎn)
Role1下TipInfo節(jié)點(diǎn)的Layer選擇TipInfo
彈出一個框Change Layer
Do you want to set layer to TipInfo for all child objects as well?
【Yes change children】【No,this object only】【Cancel】
選擇第一個按鈕。
2、RolesCamera
Layer選擇Default
Culling Mask選中Default,不要選中TipInfo
在Camera Preview可以看到這個攝像機(jī)僅僅照射第2~4個角色模型。
3、Role1Camera
Layer選擇Role1
Culling Mask選中Role1,不要選中Default、UI、TipInfo
在Camera Preview可以看到這個攝像機(jī)僅僅照射第1個角色模型。
4、Role4Camera
Layer選擇Role4
Culling Mask選中Role4,不要選中Default、UI、TipInfo
在Camera Preview可以看到這個攝像機(jī)僅僅照射第4個角色攻擊狀態(tài)的模型。
坦克項(xiàng)目UGUI經(jīng)驗(yàn)總結(jié)2015-10-9 10:44
UGUI動畫變遷
第2、3版坦克選擇UI進(jìn)場離場動畫:
12個坦克節(jié)點(diǎn),每個節(jié)點(diǎn)掛1個Animation組件,Animations組件的Size屬性填2,第0、1個元素分別填進(jìn)場、離場動畫的anim文件,Play Automatically選擇打鉤;第一個坦克節(jié)點(diǎn)還掛1個坦克UI控制腳本,處理OnAnimEventTankUILeave事件;動畫事件在Animation視圖中編輯、添加、刪除。
坦克結(jié)算UI:
針對每個MVP節(jié)點(diǎn)在項(xiàng)目視圖存放anim文件的路徑下創(chuàng)建1個Animator Controller,命名為A1MVPAnim等等,每個MVP節(jié)點(diǎn)掛1個Animator組件, Controller填A(yù)1MVPAnim等等,在狀態(tài)機(jī)上拖進(jìn)場和離場的anim文件進(jìn)來,掛一個坦克結(jié)算UI控制腳本。
Unity 2D游戲開發(fā)快速入門第一章
http://www.docin.com/p-895914135.html
RangTanks(狂怒坦克)
Win7+Unity4.5.3
在2013年發(fā)布4.3版本時,就開始提供對制作2D游戲的支持了。
Texture Type:表示圖片的類型。對于2D游戲項(xiàng)目,系統(tǒng)默認(rèn)設(shè)置為Sprite(2D\uGUI);對于3D游戲項(xiàng)目,默認(rèn)設(shè)置 為Texture。
Filter:此屬性一共有3個選項(xiàng):Point、Bilinear、Trilinear。
Max Size:表示圖片的最大尺寸。圖片Platform實(shí)際尺寸是397*221,屬性中最接近397的是512。
Format:表示圖片的格式。
http://www.docin.com/p-895914134.html UGUI全面實(shí)踐教程
http://www.docin.com/p-1155996353.html
NGUI全面實(shí)踐教程
http://www.docin.com/p-1117662568.html
NGUI發(fā)布于2012年初,發(fā)布者從版本1.08開始持續(xù)不斷的將NGUI插件更新到現(xiàn)在的3.8.1版本(2015年3月23日的數(shù)據(jù))。
Win7+NGUI3.8.0+Unity4.5.5。
Unity3d UGUI 官方示例 包括UGUI各個控件的用法的示例
http://download.csdn.net/detail/xushuai20142014/8809107#comment
uGUI 2d面板顯示3D模型問題
用RawImage+RenderTexture可以做,參考官方Demo的RenderTexture例子。
UGUI全面實(shí)踐教程
http://www.docin.com/p-1155996353.html
chap7官方示例及其簡要說明
7.7實(shí)時紋理繪制示例——RenderTexture
Chap5控制動畫
——Unity開發(fā)實(shí)戰(zhàn)這一章可讀性很差,略過
Mecanim
Avatar
http://edu.51cto.com/lesson/id-46981.html
3個核心控件:Text、Image、Button
小雪花是Anchor(錨點(diǎn))
小圓點(diǎn)是Pivot(中心點(diǎn)、重心點(diǎn)),0~1表示沒有離開控件本身
中心點(diǎn)和錨點(diǎn)重合:偏移量PosX,PosY為初始值0,0
http://edu.51cto.com/lesson/id-46982.html
Text控件
Txt_UserName
InputField控件:1個母控件,2個子控件
20160116添加:
NGUI版本:
2012年初,NGUI 1.0.8發(fā)布
2.2.2
2.6.1
2.6.3
2013-08-06之前,2.6.4
2.7.0
3.0.0
3.0.9 f4
3.5.4
3.6.0
4手柄+NGUI3.7.8
3.8.0,Win7+Unity4.5.5及以上版本
2015年3月23日,3.8.1
4.0
NGUI將全部的源碼分成了5個部分:
Editor(與Unity編輯器相關(guān)的腳本)、
Interaction(與交互功能相關(guān)的腳本)、
Internal(間接發(fā)揮作用的腳本)、
Tweening(與補(bǔ)間動畫功能相關(guān)的腳本)、
UI(與UI功能相關(guān)的腳本)。
高雪峰:Unity 3D NGUI 實(shí)戰(zhàn)教程
http://wenku.baidu.com/view/ba880d8252d380eb63946d77.html?from=search
chap1初始NGUI
1.1游戲UI開發(fā)介紹
1.2什么是NGUI
chap2 NGUI基礎(chǔ)
2.1導(dǎo)入NGUI插件
2.1.1NGUI版本介紹
2.1.2NGUI的下載和購買
2.1.3導(dǎo)入NGUI插件應(yīng)用
2.1.4導(dǎo)入常見問題
2.2認(rèn)識基本的UI資源
2.2.1什么是UI精靈(Sprite)
2.2.2什么是UI圖集(Atlas)
2.2.3什么是UI貼圖(Texture)
2.2.4什么是UI標(biāo)簽(Label)
2.2.5什么是UI字體(Font)
2.3制作第一個UI圖集
2.3.1學(xué)會解剖UI的資源結(jié)構(gòu)
2.3.2學(xué)會導(dǎo)入切好的美術(shù)資源
2.3.3用Atlas Maker制作圖集
2.4制作第一個UI字體
2.4.1為什么要制作UI字體
2.4.2靜態(tài)字體和動態(tài)字體
2.4.3制作靜態(tài)字體介紹
2.4.4制作動態(tài)字體介紹
2.5創(chuàng)建第一個UI
2.5.1創(chuàng)建一個2D UI
2.5.2創(chuàng)建一個3D UI
2.5.3了解UIRoot、UIPanel和UICamera組件
2.6 2DUI和3DUI的工作原理
2.6.1 2DUI的工作原理
2.6.2 3DUI的工作原理
2.6.3 如何判斷該選擇哪一種UI
2.7深度(Depth)概念
2.7.1強(qiáng)化對深度的理解
2.7.2小心相機(jī)的深度
chap3核心組件
3.1什么是UI控件
3.2制作精靈(UISprite)
3.2.1怎樣判斷是否應(yīng)該使用精靈
3.2.2創(chuàng)建精靈
3.2.3Sprite組件的設(shè)置
3.3制作標(biāo)簽(Label)
3.3.1怎樣判斷是否應(yīng)該使用標(biāo)簽
3.3.2創(chuàng)建標(biāo)簽
3.3.3Label的文字設(shè)置
3.4制作UI紋理(UITexture)
3.4.1什么情況下使用UITexture
3.4.2創(chuàng)建紋理
3.4.3紋理的設(shè)置
3.5制作按鈕(Button)
3.6制作進(jìn)度條(UISlider)
3.7制作輸入框(Input)
3.8制作滾動視圖(ScrollView)
3.9制作復(fù)選框(Toggle)
3.10制作下拉菜單(PopupList)
chap4 UI動畫
4.1常見的兩種UI動畫介紹
4.1.1要區(qū)分UI動畫和UI特效兩個概念
4.1.2關(guān)于Tween動畫
4.1.3關(guān)于Animation動畫
4.2漸隱漸現(xiàn)動畫(透明度動畫)
4.3顏色變化動畫(變色動畫)
4.4位置變化動畫(位移動畫)
4.5旋轉(zhuǎn)變化動畫(旋轉(zhuǎn)動畫)
4.6大小變化動畫(放縮動畫)
4.7Tween動畫總結(jié)
4.8動畫控制組件UIPlayTween
4.8動畫控制組件UIPlayAnimation
chap5其他組件
chap6 NGUI實(shí)戰(zhàn)進(jìn)階
chap7用代碼深度控制UI
chap8實(shí)用案例演示
chap9常見疑難問題解答 圖集Atlas
將多張零散的圖片融合成為一張圖,低碳環(huán)保。
字體Font
動態(tài)字體
使用標(biāo)準(zhǔn)的字體文件.TTF。
圖集字體
將字體弄到圖集里,根據(jù)坐標(biāo)靜態(tài)調(diào)用。
好處可以使用各種效果,以及聊天表情。
面板Panel
用于組織界面元素。每一個面板,都會讓層從0開始。
NGUI
Panel常規(guī)面板
常規(guī)
靜態(tài)
切割
選項(xiàng)卡要玩家單獨(dú)實(shí)現(xiàn)。
文本欄Label
用于顯示文本信息
NGUI
顏色
圖片:需要自定義輸入內(nèi)容
陰影
輪廓
按鈕Buton
NGUI
舊版本采用消息機(jī)制,新版本使用了委托的方式
普通按鈕
圖片按鈕
Tween組件
在兩個值之間隨時間進(jìn)行漸變,用于實(shí)現(xiàn)一些伴隨時間的效果。
比如淡入、淡出、移動、旋轉(zhuǎn)、放大縮小等。
NGUI
iTween
NGUI:多個物體可以屬于一個層。層一定要弄好,不能混亂。對齊方式一定要設(shè)定好,否則大亂。
統(tǒng)一的層管理,我們約定:基礎(chǔ)背景0~1層,一級面板在2層,面板元素3~6層,二級面板7~10層,不能超過3級面板。 Unity最火十大插件20130130
1、2D Toolkit 1.90 Final
能夠讓開發(fā)者在Unity中進(jìn)行2D開發(fā)。
能夠完全支持Unity4,它對于2.5D場景的開發(fā)和建立也十分有效。
2、NGUI 2.3.1
3、Playmaker 1.4.5
4、EasyTouch 2.5.1 & EasyJoystick 1.0
5、UnIDE 1.0.5
UnIDE 1.0.5新增了對Mac OS X系統(tǒng)的支持,性能更加流暢。
6、Tile Based Map and Nav 2.8b
7、FX Maker 1.27
是一款制作特效的工具,它專為移動操作系統(tǒng)做了優(yōu)化。
包括300種Prefab特效,300種紋理結(jié)構(gòu)、100種網(wǎng)格、100種曲線效果。
由開發(fā)商IGSoft提供。
8、Toon shader 1.5
是一款卡通著色器,適用于iOS系統(tǒng)。
9、Top-Down Assets Mobile Final
是一個游戲視圖工具包。
10、83 Explosion Sound Effects 1.1
這是一個聲音特效工具包,包含83個WAV立體聲文件。這些聲響均是爆炸聲響。
所有的聲音文件均為16bit 44.1KHz立體聲WAV文件。
20160119添加:
密碼9900
http://www.manew.com/thread-1206-1-1.html
第59講
Mecanim讀作Mec+anim
動畫片段Animation Clip
身體遮罩Body Mask,以.mask保存
Avatar讀作Ava+tar,屬于子資源
Animator組件
Animator Controller,屬于資源
http://www.manew.com/thread-1207-1-1.html
第60講:
創(chuàng)建角色資源的三個主要步驟:
建模、骨骼設(shè)置、蒙皮
自動角色系統(tǒng)或角色產(chǎn)生軟件:
Poser,Makehuman or Mixamo
Unity中,標(biāo)準(zhǔn)立方體盒子是1米
正常角色的高度是2米
第62講
http://www.manew.com/thread-1209-1-1.html
單擊模型標(biāo)簽,改變縮放系數(shù),點(diǎn)擊實(shí)施按鈕
人類類型角色都有類似的骨骼結(jié)構(gòu):軀干、頭部、四肢
骨骼的創(chuàng)建和命名時要遵循一定規(guī)范
創(chuàng)建角色的Avatar
分析導(dǎo)入的角色資源的骨骼結(jié)構(gòu),其過程是與Mecanim中已有的簡化的標(biāo)準(zhǔn)人類骨骼進(jìn)行對比
Rig標(biāo)簽
動畫類型選擇Hunmanoid
Unity4.2.0打開Unity4.6.4創(chuàng)建的工程會出現(xiàn)以下提示:
Project incompatible,New version of Unity required
Your project was created with a newer version of Unity.
You should upgrade to the latest version of Unity.
You risk data loss if you continue!
【Quit】【Continue and risk data loss】
打開一個舊版本的工程會出現(xiàn)提示:
Upgrading project
Upgrading project
After upgrading the project,you can not open the project with older versions of Unity anymore.
【Continue】【Quit】
點(diǎn)擊【Continue】會出現(xiàn)提示:
Project reimport required
【Reimport Project】【Quit】
Unity3D光照貼圖烘焙知識
http://www.docin.com/p-1046168380.html
Unity在4.x版本里使用光照烘焙的方法,采用的是Autodesk的Beast,Beast只能烘焙靜態(tài)的光照貼圖,而不支持動態(tài)光照。
使用Beast的工作流程是:先建造一個場景,然后在場景中布置各種光源,進(jìn)而點(diǎn)擊Bake操作鍵,接下來整個烘焙過程可能需要幾小時。
Unity 5.0中會舍棄掉Beast,取而代之的是PowerVR Ray Tracing和Enlighten這兩種方案的結(jié)合。PowerVR Ray Tracing的特點(diǎn)是不需要烘焙過程,速度非常快,但是效果不是非常理想。Enlighten的特點(diǎn)是需要一定的烘焙過程,但是效果非常好。PowerVR Ray Tracing負(fù)責(zé)編輯器中的編輯模式,即所見即所得的模式;而Enlighten會負(fù)責(zé)游戲內(nèi)的實(shí)時渲染。
http://unity3d.com/cn/unity/whats-new/unity-3.5
Unity3.5新特性與改進(jìn):
1、忍者飛鏢粒子系統(tǒng)
2、內(nèi)置尋路
3、升級的遮擋剔除、新的LOD
4、Google Chrome Native Client deployment
5、線性空間照明和HDR
http://unity3d.com/cn/unity/whats-new/unity-3.5.5
Unity 3.5.5主要包含Unity 3.5的修復(fù)。
http://unity3d.com/cn/unity/whats-new/unity-4.0
Unity 4.0新的強(qiáng)大的特性:
1、Mecanim,驅(qū)動角色或物件的新的動畫系統(tǒng)
2、所有平臺的實(shí)時陰影
3、DX11渲染
4、忍者飛鏢粒子系統(tǒng)更新了世界碰撞功能
5、Adobe Flash和Linux兩個新平臺
6、跨平臺動態(tài)字體
http://unity3d.com/cn/unity/whats-new/unity-4.1
Unity 4.1帶來了如下新特性:
1、更強(qiáng)大的內(nèi)存分析器
2、AirPlay支持
3、Mecanim更新
4、Shader更新
5、移動平臺支持Allegorithmic Substances
http://unity3d.com/cn/unity/whats-new/unity-4.1.5
Unity 4.1.5帶來一些修正。
發(fā)行說明:
修正Windows上MonoDevelop的問題
已知問題:
Win8上MonoDevelop作為默認(rèn)編輯器啟動時不能自動打開腳本
http://unity3d.com/cn/unity/whats-new/unity-4.6.2
Unity 4.6.2帶來一些改進(jìn)和修正
發(fā)行說明:
特性:
使用il2cpp支持iOS 64位
變更:
不再支持Flash目標(biāo)編譯。
改進(jìn):
修復(fù):
iOS:修復(fù)Xcode6.2支持
http://unity3d.com/cn/unity/whats-new/unity-4.6.4
Unity 4.6.4帶來一些改進(jìn)和修正
發(fā)行說明:
特性:
Unity免費(fèi)版中支持Intel實(shí)感插件
改進(jìn):
iOS:支持Xcode6.3
變更:
應(yīng)蘋果要求,支持的最低iOS版本升為5.1
修復(fù):
http://unity3d.com/cn/unity/whats-new/unity-5.0
Unity 5.0包含強(qiáng)大的新特性:
1、基于物理的標(biāo)準(zhǔn)著色器
2、實(shí)時全局照明
3、混音器
4、HDR反射探頭增強(qiáng)視覺保真度
5、PhysX 3.3帶來了3D物理方面極大的性能提升
6、主要更新了動畫系統(tǒng)
7、WebGL預(yù)覽
http://unity3d.com/cn/unity/whats-new/unity-5.0.1
Unity 5.0.1帶來新特性、一些改進(jìn)、變更和許多修復(fù)。
發(fā)行說明:
改進(jìn):
Android:手柄輸入優(yōu)化,修復(fù)在一些較老設(shè)備上變慢的問題
變更:
修復(fù):
iOS:增加Xcode6.3兼容性
http://unity3d.com/cn/unity/whats-new/unity-5.0.2
Unity 5.0.2帶來新特性、一些改進(jìn)、少許變更和大量修復(fù)。
發(fā)行說明:
特性:
改進(jìn):
Editor:Minimum API Level列表增加Android 5.0 and 5.1
變更:
修復(fù):
iOS:增加Xcode6.3建立并運(yùn)行的支持
羅盛譽(yù):Unity 5.x游戲開發(fā)指南
http://vdisk.weibo.com/s/e41M8kW4cptg
chap4 3D基礎(chǔ)知識
4.1 Camera攝像機(jī)
4.1.1攝像機(jī)參數(shù)
攝像機(jī)參數(shù)
參數(shù)|說明
Clear Flags|清除標(biāo)記,決定屏幕的哪部分被清除。該項(xiàng)一般用于使用多臺攝像機(jī)來描繪不同游戲?qū)ο蟮那闆r。
Depth only:深度相機(jī),只渲染采集到的畫面。
Culling Mask|剔除遮罩。攝像機(jī)將看到勾選的層,忽略未被勾選的層。
Projection|投射方式。
Perspective:透視。攝像機(jī)以正交方式渲染畫面,拍攝區(qū)域是一個截錐體。
Orthographic:正交。攝像機(jī)以正交方式渲染畫面,拍攝區(qū)域是一個長方體。
Depth|該項(xiàng)用于控制多個攝像機(jī)的渲染優(yōu)先級。數(shù)值越大優(yōu)先級越高。優(yōu)先級高的攝像機(jī)拍攝的畫面將覆蓋在優(yōu)先級低的攝像機(jī)的畫面上。
Rendering Path|渲染路徑。該項(xiàng)用于指定攝像機(jī)的渲染方法。
Use Player Setting:攝像機(jī)將使用設(shè)置的渲染方法,即Project Settings下Player中的設(shè)置。
Target Texture|目標(biāo)紋理。將攝像機(jī)畫面輸出到一張貼圖而不是屏幕,可用于實(shí)現(xiàn)畫中畫或者畫面特效。
Occlusion Culling|是否剔除物體背向攝像機(jī)的部分。
HDR|高動態(tài)光照渲染
4.1.2攝像機(jī)投射
4.2 3D模型
4.2.1 Mesh網(wǎng)格模型
4.2.2 Texture貼圖
4.2.3 Material材質(zhì)
4.2.4對應(yīng)組件
4.2.5骨骼動畫
4.3小結(jié)
4.4習(xí)題
chap6 創(chuàng)建人物
6.1 Mecanim系統(tǒng)
Mecanim系統(tǒng)是Unity在4.0版本開始引入的新動畫系統(tǒng),它提供了以下幾種功能。
為人形角色提供了簡單的設(shè)置和制作流程,包括Avatar的創(chuàng)建和對Muscle definitions肌肉定義的調(diào)節(jié)。
動畫的復(fù)用性。主要通過動畫重定向?qū)崿F(xiàn),可以非常方便地把動畫從一個角色模型應(yīng)用到具有相同骨骼結(jié)構(gòu)的其他角色模型上。
通過可視化的工具可以方便地創(chuàng)建、預(yù)覽動畫或者管理不同狀態(tài)的切換。
身體邏輯,如下半身在執(zhí)行跑步動作的同時,上半身在執(zhí)行開槍動作。
一般來說,整個人物的創(chuàng)建分為以下3個階段。
資源準(zhǔn)備和導(dǎo)入階段。
狀態(tài)機(jī)階段。
腳本階段。
6.2 導(dǎo)入模型
6.2.1模型導(dǎo)入設(shè)置
6.2.2 Avatar的設(shè)置
6.3狀態(tài)機(jī)
6.3.1 Animator
6.3.2添加碰撞體
6.3.3添加攝像機(jī)
6.3.4動作混合與控制
6.4反向動力學(xué)
6.5人體動畫重定向
6.6小結(jié)
6.7習(xí)題
chap9用戶界面
Unity中的UI的發(fā)展從最早的OnGUI系統(tǒng),到之后EzGUI和NGUI兩個插件的階段。現(xiàn)在我們有了最新的官方的uGUI系統(tǒng),它借鑒了NGUI的很多設(shè)計(jì),例如NGUI中所有的UI元素都放在UIRoot根節(jié)點(diǎn)下,類似地,uGUI中的所有元素都放置在Canvas畫布下。 9.1Sprite精靈
精靈是UI以及Unity 2D的基本元素。在UI系統(tǒng)中,所有圖片的顯示都必須通過精靈。
如果建立工程時選擇的是2D工程,那么導(dǎo)入的所有圖片會自動設(shè)置為精靈;而如果是3D,那么需要對圖片的導(dǎo)入設(shè)置進(jìn)行更改。
9.1.1圖片設(shè)置為精靈
在監(jiān)視窗口中將紋理類型設(shè)置為Sprite(2D and UI),并點(diǎn)擊窗口右下角的Apply按鈕。
9.1.2圖片切割為多個精靈
當(dāng)精靈模式為Single時,表明整張圖片將作為一個精靈;當(dāng)精靈模式為Multiple時,表明整張圖片包含多個精靈。我們需要圖片進(jìn)行切割。
9.1.3設(shè)置Border邊界
9.1.4Pivot錨點(diǎn)
Pivot錨點(diǎn)在精靈編輯器界面以藍(lán)色空心圓鈕表示。
9.2Canvas畫布
Canvas實(shí)際上是一個游戲?qū)ο笊辖壎薈anvas組件。所有UI元素都必須是Canvas的子對象。
9.2.1創(chuàng)建畫布
9.2.2畫布參數(shù)
第一個參數(shù)渲染模式有3種:
1.屏幕空間-覆蓋模式的畫布會填滿整個屏幕空間,并將畫布下的所有UI元素置于屏幕的最上層,或者說畫布的畫面永遠(yuǎn)覆蓋其他普通3D畫面。如果屏幕尺寸被改變,畫布將自動改變尺寸來匹配屏幕。
Pixel Perfect:使UI元素像素對應(yīng),效果就是邊緣清晰不模糊。
Sort Layer:用以指明畫布的深度。
2.屏幕空間-攝像機(jī)模式和屏幕空間-覆蓋模式相似。不同的是,在該模式下,畫布會被放置在指定攝像機(jī)的前方。
Pixel Perfect:只有RenderMode為Screen類型時才有的選項(xiàng)。使UI元素像素對應(yīng),效果就是邊緣清晰不模糊。
屏幕空間-攝像機(jī)模式比屏幕空間-覆蓋模式多了下面幾個參數(shù)。
Render Camera:攝像機(jī)。
Plane Distance:畫布平面距離攝像機(jī)的距離。
Sorting Layer:用以指明畫布的深度。
Order in Layer:在相同Sorting Layer下的畫布顯示先后順序。數(shù)字越高,顯示的優(yōu)先級也就越高。
3.世界空間模式。在此渲染模式下,畫布被視作與場景中其他普通游戲?qū)ο笮再|(zhì)相同的類似一張面片的對象。畫布的尺寸可以通過Rect Transform設(shè)置,所有UI元素可能位于普通3D物體的前面或者后面顯示。當(dāng)UI為場景的一部分時,可使用這個模式。
9.3 Image圖片
點(diǎn)擊導(dǎo)航菜單欄|GameObject|UI|Image導(dǎo)航欄,創(chuàng)建一個Image元素。
Rect Transform:所有UI元素都是以矩形來表現(xiàn)的。
RectTransform是繼承自Transform的一個組件,是所有UI元素都具有也必須具有的組件。
一共有9種錨點(diǎn)(Anchor)。當(dāng)選定一種錨點(diǎn)后,該錨點(diǎn)為UI元素的坐標(biāo)原點(diǎn)。
縮放元素要用width和height,而不用scale,因?yàn)閟cale會產(chǎn)生很多影響,例如字體的大小等。
選擇“img01”的圖片,并點(diǎn)擊Texture Type欄的選擇條選擇Sprite。
Sprite精靈是所有UI和Unity 2D所使用的圖片導(dǎo)入格式。
Image的參數(shù)
參數(shù)|說明
Source Image|原圖,指定顯示的圖片
Color|顏色,設(shè)置圖片的疊加顏色,默認(rèn)設(shè)置為白色,顯示與原圖一致
Material|材質(zhì),可以指定自定義的材質(zhì),默認(rèn)留空即可
Image Type|顯示的類型,有簡單、切片、磚塊、填充4種類型
Preserve Aspect|簡單、填充類型特有參數(shù),是否保留精靈的原圖形,而不進(jìn)行自動剔除
Set Native Size|點(diǎn)擊該按鈕使顯示與原圖尺寸對應(yīng)
// 填充類型
public void SetRage(int Heroindex,float Rage)
{
Image img=m_ImageWeapon2[Heroindex].GetComponent<Image>();
img.fillAmount=Rage;
}
9.5 Text文本
直接在文本組件的Text參數(shù)中填文本即可。
所有UI元素都可以添加輪廓及陰影效果,這兩個效果也被Text元素所經(jīng)常使用。
9.5.2添加陰影
9.5.3添加輪廓
chap15導(dǎo)航系統(tǒng)
15.1實(shí)現(xiàn)導(dǎo)航系統(tǒng)
15.1.1建立場景
15.1.2設(shè)置NavMesh
15.1.3烘焙
15.1.4設(shè)置導(dǎo)航代理
15.2障礙物
15.3分離網(wǎng)格鏈接
15.4小結(jié)
15.5習(xí)題
chap15導(dǎo)航系統(tǒng)
導(dǎo)航系統(tǒng)(navigation system)可以讓人物在場景里智能地移動、繞過障礙等。
導(dǎo)航系統(tǒng)用NavMesh來解析環(huán)境。
15.1實(shí)現(xiàn)導(dǎo)航系統(tǒng)
本節(jié)首先創(chuàng)建場景并烘焙導(dǎo)航網(wǎng)絡(luò),接著創(chuàng)建導(dǎo)航代理,以實(shí)現(xiàn)讓角色繞過重重障礙到達(dá)終點(diǎn)的功能。
chap19 2D游戲基礎(chǔ)
19.1正交攝像機(jī)
19.2精靈
19.2.1精靈實(shí)現(xiàn)
19.2.2調(diào)整精靈尺寸
19.2.3精靈渲染器
19.2.4圖片導(dǎo)入設(shè)置
19.2.5精靈編輯
19.2.6精靈圖集
19.3 2D物理系統(tǒng)
19.3.1剛體
19.3.2碰撞體
19.3.3 Joint 2D
19.3.4 Constant Force 2D
19.3.5 Effector 2D
19.4小結(jié)
19.5習(xí)題
20150714添加:
Unity3d資源反編譯(DisUnity) v0.3.3 官方最新版
http://www.cr173.com/soft/97114.html
——經(jīng)測試,4.x的Unity資源可以反編譯出來,5.x的不行
disunity extract F:\hxhwin7\Unity4.6.4\disunity\TankExe\tank_Data\*.*
disunity extract U3d5.02XunLong0619testdemo\assets\bin\Data\*.*
disunity extract Unity4_20150608\assets\bin\Data\*.*
disunity extract 20150601\assets\bin\Data\*.*
爐石傳說:http://pan.baidu.com/s/1c0tU6J2 密碼:fu2q
使用Mono進(jìn)行平臺無關(guān)的.NET開發(fā)
http://wenku.baidu.com/link?url=DbNijkKcqJGeXvyJfaVUqcnYMDZOQovpNdqjrtIsrM3WPMOaegr9B779rtxrV6MowVodeAYFje1HSjW14kauWBpFOYmD_SRVXTpKwsJxXGG
CLI公共語言基礎(chǔ)結(jié)構(gòu)Infrastruction
.NET的平臺無關(guān)性
微軟公司自己不提供.NET在Mac、Linux等平臺下的安裝包。
這兩份規(guī)范是:
ECMA-334定義了C#編程語言的語法和語義;
ECMA-335定義了許多.NET平臺的細(xì)節(jié),統(tǒng)稱為CLI。
ECMA-335規(guī)范分為6個部分:
部分1:架構(gòu)
部分2:元數(shù)據(jù)
部分3:公共中間語言CIL
部分4:類庫
部分5:二進(jìn)制格式
部分6:附件
除了微軟的CLR、Microsoft Silverlight和Microsoft .NET Compact Framework之外,還有另外兩種主流的CLI實(shí)現(xiàn):
Mono、Portable .NET。
Mono是與C# 2.0/NET2.0相兼容的。
Mono是還沒有完全與C# 3.0或NET3.0/3.5相兼容的。
許多C# 3.0的語言特性已經(jīng)是Mono 1.2.5的一部分了,包括隱式類型、對象初始化語法和匿名類型。
C:\Program Files (x86)\Unity\Editor\Data\Mono\bin>mono --version
Mono JIT compiler version 2.0 (Visual Studio built mono)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
??????? TLS:?????????? normal
??????? GC:??????????? Included Boehm (with typed GC)
??????? SIGSEGV:?????? normal
??????? Notification:? Thread + polling
??????? Architecture:? x86
??????? Disabled:????? none
C:\Program Files\Unity\Editor\Data\Mono\bin>mono --version
Mono JIT compiler version 2.0 (Visual Studio built mono)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
??????? TLS:?????????? normal
??????? GC:??????????? Included Boehm (with typed GC)
??????? SIGSEGV:?????? normal
??????? Notification:? Thread + polling
??????? Architecture:? x86
??????? Disabled:????? none
與微軟的CLR發(fā)布相同,Mono也提供了多種托管的編譯器:
mcs/gmcs,C#編譯器
vbnc,Mono Visual Basic編譯器
booc,Boo語言編譯器
ilasm/ilasm2,Mono CIL編譯器
Mono項(xiàng)目的第一個C#編譯器是mcs,并且它完全兼容C# 1.1。
通用mono C#編譯器(gmcs)是mcs用于支持.NET 2.0特有的C#語言特性和引用基于.NET 2.0的基類庫的版本。C:\Program Files (x86)\Unity\Editor\Data \Mono\lib\mono\2.0>gmcs -?
Mono C# compiler, Copyright 2001 - 2008 Novell, Inc.
mcs [options] source-files
?? --about????????????? About the Mono C# compiler
?? -addmodule:M1[,Mn]?? Adds the module to the generated assembly
?? -checked[+|-]??????? Sets default aritmetic overflow context
?? -codepage:ID???????? Sets code page to the one in ID (number, utf8, reset)
?? -clscheck[+|-]?????? Disables CLS Compliance verifications
?? -define:S1[;S2]????? Defines one or more conditional symbols (short: -d)
?? -debug[+|-], -g????? Generate debugging information
?? -delaysign[+|-]????? Only insert the public key into the assembly (no signing
)
?? -doc:FILE??????????? Process documentation comments to XML file
?? -help??????????????? Lists all compiler options (short: -?)
?? -keycontainer:NAME?? The key pair container used to sign the output assembly
?? -keyfile:FILE??????? The key file used to strongname the ouput assembly
?? -langversion:TEXT??? Specifies language version: ISO-1, ISO-2, Default, or Fu
ture
?? -lib:PATH1[,PATHn]?? Specifies the location of referenced assemblies
?? -main:CLASS????????? Specifies the class with the Main method (short: -m)
?? -noconfig??????????? Disables implicitly referenced assemblies
?? -nostdlib[+|-]?????? Does not reference mscorlib.dll library
?? -nowarn:W1[,Wn]????? Suppress one or more compiler warnings
?? -optimize[+|-]?????? Enables advanced compiler optimizations (short: -o)
?? -out:FILE??????????? Specifies output assembly name
?? -pkg:P1[,Pn]???????? References packages P1..Pn
?? -platform:ARCH?????? Specifies the target platform of the output assembly
??????????????????????? ARCH can be one of: anycpu, x86, x64 or itanium
?? -recurse:SPEC??????? Recursively compiles files according to SPEC pattern
?? -reference:A1[,An]?? Imports metadata from the specified assembly (short: -r) -reference:ALIAS=A?? Imports metadata using specified extern alias (short: -r
)
?? -target:KIND???????? Specifies the format of the output assembly (short: -t)
??????????????????????? KIND can be one of: exe, winexe, library, module
?? -unsafe[+|-]???????? Allows to compile code which uses unsafe keyword
?? -warnaserror[+|-]??? Treats all warnings as errors
?? -warnaserror[+|-]:W1[,Wn] Treats one or more compiler warnings as errors
?? -warn:0-4??????????? Sets warning level, the default is 4 (short -w:)
?? -help2?????????????? Shows internal compiler options Resources:
?? -linkresource:FILE[,ID] Links FILE as a resource (short: -linkres)
?? -resource:FILE[,ID]???? Embed FILE as a resource (short: -res)
?? -win32res:FILE????????? Specifies Win32 resource file (.res)
?? -win32icon:FILE???????? Use this icon for the output
?? @file?????????????????? Read response file for more options Options can be of the form -option or /option
顯示特定程序集中C#指定類型的定義。
C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0>monop System.Object
[Serializable]
public class Object { public Object (); public static bool Equals (object objA, object objB);
??????? public static bool ReferenceEquals (object objA, object objB);
??????? public virtual bool Equals (object obj);
??????? protected override void Finalize ();
??????? public virtual int GetHashCode ();
??????? public Type GetType ();
??????? protected object MemberwiseClone ();
??????? public virtual string ToString ();
}
C#開發(fā)Android應(yīng)用實(shí)戰(zhàn) 使用Mono for Android和.NET C#
Mono for Android程序集
程序集,說明
Mono.Android.dll,該程序集包含了綁定到Android API的C#
Mono.CompilerServices.SymbolWriter.dll,該程序集主要是針對編譯器編寫者
Mono.Data.Sqlite.dll,針對SQLite的ADO.NET提供程序
Mono.Data.Tds.dll,對TDS協(xié)議的支持;主要用于為System.Data內(nèi)的 System.Data.SqlClient提供支持
Mono.Security.dll,加密API
mscorlib.dll,Silverlight
OpenTK.dll,OpenGL/OpenAL面向?qū)ο驛PI,可對其進(jìn)行擴(kuò)展以提供Android設(shè)備支持
System.dll,Silverlight,再加上來自下列命名空間中的類型: System.Collections.SpecializedSystem.ComponentModel.Design
System.DiagnosticsSystem.IO.CompressionSystem.Net
System.Net.CacheSystem.Net.Mail
System.Net.NetworkInformation
System.Net.Security
System.Net.Sockets
System.Security.Authentication
System.Security.Cryptography
System.Timer
System.Core.dll,Silverlight
System.Data.dll,刪除了部分功能的.NET 3.5
System.Json.dll,Silverlight
System.Runtime.Serialization.dll,Silverlight
System.ServiceModel.dll,Silverlight Alpha中所呈現(xiàn)的WCF堆棧
……
System.Xml.dll,.NET 3.5
System.Xml.Linq.dll,.NET 3.5
chap15 在Mono for Android、MonoTouch和Windows Phone7之間共享代碼 15.1三大平臺
針對iOS的MonoTouch、Windows Phone上的.NET以及Android設(shè)備上的Mono for Android。下面將深入研究這三個平臺。
15.1.1 Mono for Android 默認(rèn)情況下項(xiàng)目包括mscorlib、System、System.Core、System.Xml和System.Xml.Linq程序集。除這些程序集外,項(xiàng)目還包括了Mono.Android程序集,而該程序集則包含了Android API的所有綁定。
15.1.2 MonoTouch
MonoTouch于2009年發(fā)布,它是一組允許.NET開發(fā)人員針對iPhone和iPod Touch進(jìn)行開發(fā)的工具。
不同之處是MonoTouch包括一個MonoTouch.dll引用,Mono for Android則包括一個Mono.Android.dll引用。
MonoTouch.dll是針對iOS API的,而Mono.Android.dll則是針對Android API。
15.1.3 Windows Phone 7
還可以看到程序集Microsoft.Phone和Microsoft.Phone.Interop。這兩個程序集是特定于手機(jī)的API。應(yīng)用程序包括的另一個程序集是System.Windows,該程序集包括了大部分Silverlight API。
用Unity4.2.0打包APK到Android 2.2.3
打包時可能會出錯:
Error building Player: Win32Exception: ApplicationName='D:/android-sdk-windows\tools\zipalign.exe', CommandLine='4 "D:\u3d4.2.0\Temp/StagingArea/Package_unaligned.apk" "D: \u3d4.2.0\Temp/StagingArea/Package.apk"', CurrentDirectory='Temp/StagingArea' 解決方法:
將D:\android-sdk-windows\build-tools\19.1.0\zipalign.exe復(fù)制到D:\android-sdk-windows\tools即可
Unity5.1.1
iOS設(shè)置
Target iOS Version
6.0
7.0
7.1
8.0
8.1
Android設(shè)置
Mininum API Level
Android 2.3.1 'Gingerbread'(API level 9)
Android 2.3.3 'Gingerbread'(API level 10)
Android 3.0 'Honeycomb'(API level 11)
Android 3.1 'Honeycomb'(API level 12)
Android 3.2 'Honeycomb'(API level 13)
Android 4.0 'Ice Cream Sandwich'(API level 14)
Android 4.0.3 'Ice Cream Sandwich'(API level 15)
Android 4.1 'Jelly Bean'(API level 16)【小米2S:4.1.1 JRO03L,四核1.7GHz,2.00GB運(yùn)行內(nèi)存,16.00GB機(jī)身存儲(2.12GB可用),IMEI:860955022931665,MAC地址:ac:f7:f3:5b:13:02,序列號:207d0147,AndroidId:a31d834f770ba6e0(刷機(jī)后會改變)】
Android 4.2 'Jelly Bean'(API level 17)
Android 4.3 'Jelly Bean'(API level 18)
Android 4.4 'Kit Kat'(API level 19)【TV上Android版本4.4.2】
Android 5.0 'Lollipop'(API level 21)
Unity4.6.4f1
iOS設(shè)置
Target iOS Version
5.1.1
6.0
7.0
7.1
8.0
8.1
Android設(shè)置
Mininum API Level
Android 2.3.1 'Gingerbread'(API level 9)
Android 2.3.3 'Gingerbread'(API level 10)
Android 3.0 'Honeycomb'(API level 11)
Android 3.1 'Honeycomb'(API level 12)
Android 3.2 'Honeycomb'(API level 13)
Android 4.0 'Ice Cream Sandwich'(API level 14)
Android 4.0.3 'Ice Cream Sandwich'(API level 15)
Android 4.1 'Jelly Bean'(API level 16)
Android 4.2 'Jelly Bean'(API level 17)
Android 4.3 'Jelly Bean'(API level 18)
Android 4.4 'Kit Kat'(API level 19)
Unity4.5.4f1、Unity4.6.0f3
iOS設(shè)置
Target iOS Version
4.0
4.1
4.2
4.3
5.0
5.1
6.0
7.0
7.1
Android設(shè)置
Mininum API Level
Android 2.3.1 'Gingerbread'(API level 9)
Android 2.3.3 'Gingerbread'(API level 10)
Android 3.0 'Honeycomb'(API level 11)
Android 3.1 'Honeycomb'(API level 12)
Android 3.2 'Honeycomb'(API level 13)
Android 4.0 'Ice Cream Sandwich'(API level 14)
Android 4.0.3 'Ice Cream Sandwich'(API level 15)
Android 4.1 'Jelly Bean'(API level 16)
Android 4.2 'Jelly Bean'(API level 17)
Android 4.3 'Jelly Bean'(API level 18)
Android 4.4 'Kit Kat'(API level 19)
Unity4.3.0f4、Unity4.3.4f1
iOS設(shè)置
Target iOS Version
4.0
4.1
4.2
4.3
5.0
5.1
6.0
Android設(shè)置
Mininum API Level
Android 2.3.1 'Gingerbread'(API level 9)
Android 2.3.3 'Gingerbread'(API level 10)
Android 3.0 'Honeycomb'(API level 11)
Android 3.1 'Honeycomb'(API level 12)
Android 3.2 'Honeycomb'(API level 13)
Android 4.0 'Ice Cream Sandwich'(API level 14)
Android 4.0.3 'Ice Cream Sandwich'(API level 15)
Android 4.1 'Jelly Bean'(API level 16)
Android 4.2 'Jelly Bean'(API level 17)
Android 4.3 'Jelly Bean'(API level 18)
Unity4.0.0f7、Unity4.2.0f4
iOS設(shè)置
不支持在Windows上生成iOS程序
Android設(shè)置
Mininum API Level
Android 2.0.1 'Eclair'(API level 6)
Android 2.1 'Eclair'(API level 7)
Android 2.2 'Froyo'(API level 8)
Android 2.3.1 'Gingerbread'(API level 9)
Android 2.3.3 'Gingerbread'(API level 10)
Android 3.0 'Honeycomb'(API level 11)
Android 3.1 'Honeycomb'(API level 12)
Android 3.2 'Honeycomb'(API level 13)
Android 4.0 'Ice Cream Sandwich'(API level 14)
Android 4.0.3 'Ice Cream Sandwich'(API level 15)
Android 4.1 'Jelly Bean'(API level 16)
Android 4.2 'Jelly Bean'(API level 17)【Unity4.0.0f7無、Unity4.2.0f4有】
http://wenku.baidu.com/view/152ec4d0b9d528ea81c779bc.html
2004年,Unity Technology公司成立,總部在舊金山。
2005年,Unity1.0發(fā)布。
2007年,Unity2.0發(fā)布。新增了地形引擎、實(shí)時動態(tài)陰影,支持DirectX 9并具有內(nèi)置的網(wǎng)絡(luò)多人聯(lián)機(jī)功能。
2008年,iOS版本
2009年3月,Unity2.5發(fā)布。添加了對Windows Vista和XP系統(tǒng)的全面支持,所有的功能都可以與Mac OS X實(shí)現(xiàn)同步和互通。Unity在其中任何一個系統(tǒng)中都可以為另一個平臺制作游戲,實(shí)現(xiàn)了真正意義上的跨平臺。
2010年,Android版本
2010年9月,Unity3.0發(fā)布。添加了Android平臺的支持。整合了光照貼圖烘培引擎Beast。Unity3.0通過使用MonoDevelop在Windows和Mac系統(tǒng)上引入了腳本調(diào)試,可以中斷游戲、逐行單步執(zhí)行、設(shè)置斷點(diǎn)和檢查變量,還支持遮擋剔除和延遲渲染。
2011年,PS3版本和Xbox360版本
2012年2月,3.5正式版發(fā)布
2011年,3.5.5版本
2012年4月,Unity上海分公司成立,Unity正式進(jìn)軍中國市場。
2012年11月15日,Unity4.0發(fā)布。Unity4.0中加入了對DirectX 11的支持和Macanim動畫工具,而且還增添了Linux和Adobo Flash Player發(fā)布預(yù)覽功能。
2013年3月,4.1版本
新版本修復(fù)了先前版本的大量Bug并新增了內(nèi)存分析器(Memory Profiler),能實(shí)時、動態(tài)地顯示游戲中不同動畫、不同物體的內(nèi)存占用情況。在圖形的著色和渲染方面有了大幅度的提升。
2013年7月,4.2版本
添加對于Win8、WP8以及Blackberry 10的支持。
2013年11月,4.3.0版本
2014年8月,4.5.3版本
支持通用Windows應(yīng)用程序
2014年10月13日,Unity 4.5.5版本發(fā)布,這是4.5系列的最終版本
2014年11月,Unity 4.6
推出了新的UI系統(tǒng)ugui,添加了對Andorid-x86系統(tǒng)的支持,現(xiàn)在你可以選擇構(gòu)建目標(biāo)平臺為FAT、x86或ARMv7。
2015年1月,Unity4.6.2
這是Unity第一個支持64位iOS的正式版本,采用了最新的IL2CPP技術(shù)。
2015年,4.6.4版本
注0:Win8下安裝jdk1.7.0_11,不要安裝JDK6(1.6)
JDK安裝后設(shè)置環(huán)境變量步驟如下:
?我的電腦->屬性->高級->環(huán)境變量->系統(tǒng)變量中添加以下環(huán)境變量:
?變量名,變量值
JAVA_HOME,C:\Program Files\Java\jdk1.7.0_11
CLASSPATH,.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
PATH,C:\MinGW\bin;C:\Program Files (x86)\IDM Computer Solutions\UltraEdit\;C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
安裝完成之后,可以在檢查JDK是否安裝成功。打開cmd窗口,輸入java –version查看JDK的版本信息。出現(xiàn)類似下面的畫面表示安裝成功了:
C:\Users\DELL->java -version
java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
C:\Users\DELL->java -version
java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01, mixed mode)
注1:Unity4.6.4中使用F:\adt-bundle-windows-x86-20140624\sdk會提示
Android SDK is outdated
SDK Build Tools version 20.0.0<21
Android SDK is outdated
SDK Platform Tools version 20.0.0<21
Android SDK is missing required platform api
Minimum platform required is Android 5.0(API level 21)
注2:Unity4.6.4中使用F:\adt-bundle-windows-x86_64-20130729\sdk會提示
Android SDK is outdated
SDK Tools version 22.0.5<23
選擇Update
Updating Android SDK
注3:Unity4.6.4中使用C:\Program Files (x86)\Android\android-studio\sdk會提示
Android SDK is outdated
SDK Tools version 22.2.0<23
2015年3月,5.0版本
2015年6月,5.1版本
Win8下,路徑帶x86的是32位的Unity(C:\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\androidplayer\release\bin),不帶x86的是64位的Unity。
渲染平臺
Unity支持多種圖形API,目前支持的API包括:
d3d9
d3d11
opengl
gles
xbox360
ps3?
flash
unity4.x從入門到精通
序言
2012年Unity正式進(jìn)入中國市場。
藍(lán)港的《王者之劍》
完美世界的TOUCH駿夢的《新仙劍》
昆侖萬維的《絕代雙驕》
計(jì)算兩個位置之間的距離
讓游戲?qū)ο笱刂付ǚ较蛞苿?br /> 得到游戲?qū)ο螽?dāng)前旋轉(zhuǎn)的角-軸表示 向前方移動
繞自身坐標(biāo)軸Y軸旋轉(zhuǎn)
繞世界坐標(biāo)軸的Y軸旋轉(zhuǎn)
使相機(jī)觀察方向跟隨物體移動
用戶應(yīng)避免在Unity編輯器外部移動或重命名項(xiàng)目資源文件,如果需重新組織或移動某個資源,應(yīng)該在項(xiàng)目視圖中進(jìn)行,否則會破壞資源文件與Unity工程之間的關(guān)聯(lián),甚至?xí)p壞游戲工程。? chap6 Mecanim動畫系統(tǒng)
6.1 Mecanim概述
6.1.1Mecanim工作流
6.1.2舊版動畫系統(tǒng)
6.2資源的準(zhǔn)備和導(dǎo)入
6.2.1如何獲取人形網(wǎng)格模型
6.2.2如何導(dǎo)入動畫
6.2.3動畫分解
6.3使用人形角色動畫
6.3.1創(chuàng)建Avatar
6.3.2配置Avatar
6.3.3設(shè)置Muscle參數(shù)
6.3.4 Avatar Body Mask
6.3.5人形動畫的重定向
6.3.6逆向運(yùn)動學(xué)功能(Pro only)
6.3.7一般動畫
6.4在游戲中使用角色動畫
6.4.1循環(huán)動畫片段
6.4.2Animator組件
6.4.3Animator Controller
6.4.4動畫狀態(tài)機(jī)
6.4.5混合樹
6.4.6 1D混合
6.4.7 2D混合
6.5案例分析? chap1 Unity介紹
1.5軟件安裝
Unity編輯器可以運(yùn)行在Windows和Mac OS X平臺上,用戶可依據(jù)自身的喜好來選擇相應(yīng)的平臺工作。以下將介紹這2個平臺上Unity編輯器的安裝步驟,安裝示例所用的Unity版本號均為4.1.3。
chap2 Unity編輯器 Scene Gizmo工具
在Scene視圖的右上角是Scene工具,使用它可迅速將攝像機(jī)的視角切換到預(yù)設(shè)的視角上。
Top頂
Bottom底
Front前
Back后
Left左
Right右 2.8.2視圖控制
在場景視圖的上方是場景視圖控制欄。
繪圖模式默認(rèn)選項(xiàng)是Textured
紋理顯示模式
網(wǎng)格線框顯示模式
紋理加線框網(wǎng)格顯示模式
渲染路徑顯示模式
光照貼圖顯示模式 渲染模式默認(rèn)是RGB選項(xiàng)
三原色顯示
阿爾法通道顯示
以半透明的方式顯示物體
MIP映射圖顯示 用戶選擇繪圖模式或渲染模式并不會改變游戲最終的顯示方式,它只是改變場景物體在場景視圖中的顯示方式。
chap3資源導(dǎo)入流程
3.1 3D模型、材質(zhì)與動畫的導(dǎo)入
3.1.1主流三維軟件簡介
Autodesk Maya,Maya可在Windows、Mac OS等操作系統(tǒng)上運(yùn)行。
Autodesk 3D Studio Max
Modo
Cinema 4D
Cheetah3D
LightWave
Blender
3.1.2模型、材質(zhì)以及動畫導(dǎo)入前的設(shè)置、準(zhǔn)備工作
3.1.2.1 Unity與常見三維動畫軟件單位的比例關(guān)系
Unity的默認(rèn)系統(tǒng)單位為“米”,三維軟件的單位與Unity單位的比例關(guān)系非常重要。
8.最小化Unity窗口。下一步運(yùn)行3ds Max軟件,制作項(xiàng)目所需的模型素材。
13.在3ds Max中創(chuàng)建一個長寬高都為100cm的立方體,并將其位置移動到坐標(biāo)原點(diǎn)。
3ds Max默認(rèn)導(dǎo)出的FBX文件導(dǎo)入到Unity中的默認(rèn)縮放因子是0.01,建議讀者將3ds Max系統(tǒng)單位以及顯示單位都設(shè)置成“厘米”。
19.刷新完畢后,在Unity界面項(xiàng)目視圖中的Assets文件夾下會顯示出新增的資源文件,即剛才導(dǎo)入的Player.FBX文件,并自動新建了Materials文件夾。
20.單擊選擇該FBX資源,在監(jiān)測視圖中可以看到Model選項(xiàng)卡中Scale Factor文本框中的默認(rèn)數(shù)值為0.01。
21.鼠標(biāo)拖動此FBX文件(下文用資源名字Player來代替)到場景視圖或?qū)哟我晥D中,在層次視圖中雙擊Player游戲?qū)ο?#xff0c;可以在場景視圖中居中并最大化顯示該游戲?qū)ο蟆?br /> 23.Unity中添加Cube默認(rèn)的Scale值都為1.可以理解為該Cube的長寬高都為1m。
3.1.3將模型、材質(zhì)、動畫導(dǎo)入到Unity中
Unity支持的3ds Max材質(zhì)球類型包括:
Standard標(biāo)準(zhǔn)材質(zhì)
Multi/Sub-Object多維子材質(zhì),需要注意每個子材質(zhì)必須是標(biāo)準(zhǔn)材質(zhì)。
另外,材質(zhì)的名稱盡量與模型的名稱對應(yīng),建議都采用英文字符命名。
9.在Advanced Options卷展欄下展開Units項(xiàng),勾選Automatic復(fù)選框,接下來展開Axis Conversion項(xiàng),選擇Y-up(表明在Unity程序世界中世界坐標(biāo)是Y軸向上 13.單擊選中該FBX文件,在監(jiān)測視圖中可以看到該資源的相關(guān)屬性。下面通過監(jiān)測視圖來講解此類Prefab的相關(guān)參數(shù)。
(1)Model:模型的默認(rèn)設(shè)置面板
Meshs:網(wǎng)格
Scale Factor:縮放系數(shù)。采用不同的軟件、不同的單位(建議在三維軟件中采用公制單位)創(chuàng)建的模型可以通過該功能進(jìn)行校正。
Mesh Compression:網(wǎng)格壓縮。壓縮值越大則網(wǎng)格體文件越小。
Read/Write Enabled:讀/寫啟用。
Optimize Mesh:優(yōu)化網(wǎng)格。
Generate Colliders:生成碰撞體。
SwapUVs:交換UV。
Generate Lightmap:生成光照貼圖UV通道。
Normals & Tangents:法線和切線
Smoothing Angle:平滑角度。
Split Tangents:分割切線。
Materials:材質(zhì)。
Import Materials:導(dǎo)入材質(zhì)。
Material Naming:材質(zhì)命名。決定Unity材質(zhì)的命名方式。有3個選項(xiàng):
依照基礎(chǔ)貼圖名稱
來自模型的材質(zhì)名稱
模型名+模型材質(zhì)名
Material Search:材質(zhì)搜索。決定Unity如何根據(jù)Material Naming選項(xiàng),搜索定位相應(yīng)的材質(zhì)。有3個選項(xiàng):
Local Materials Folder:局部材質(zhì)文件夾
Recursive-Up:向上。Unity依次向上搜索Assets文件夾中所有的材質(zhì)子文件夾。
Project-Wide:項(xiàng)目范圍。Unity將在整個Assets文件夾中搜索材質(zhì)。
(2)Rig:操控命令面板。
Animation Type:動畫類型。該選項(xiàng)用來指定導(dǎo)入FBX資源的動畫類型。
None:無動畫。
Legacy:舊版的動畫系統(tǒng)。
Generic:通用Mecanim動畫系統(tǒng)。
Humanoid:人形Mecanim動畫系統(tǒng)。
Avatar Definition:替身定義。
Create from this model:從這個模型創(chuàng)建,替身將依據(jù)選擇的模型創(chuàng)建。
Copy from other Avatar:從其他替身復(fù)制。
Configure:配置Avatar替身。
Keep additional bones:保留附加的骨骼。
(3)Animations:動畫。Animations選項(xiàng)卡中的內(nèi)容會依據(jù)Rig選項(xiàng)卡中選擇的動畫類型而有所不同。
3.5 Unity Asset Store資源商店
也可以在Unity應(yīng)用程序中依次打開菜單欄中的Window|Asset Store來直接訪問,或直接按快捷鍵Ctrl+9。
3.5.1Asset Store簡介
在創(chuàng)建游戲時,通過Asset Store中的資源可以節(jié)省時間、提高效率。
3.5.2Asset Store的使用方法
7.用戶還可以在Asset Store視圖中通過單擊圖標(biāo)顯示Unity標(biāo)準(zhǔn)的資源包和用戶已下載的資源包,對于已下載的資源包可以通過單擊Import按鈕將其加載到當(dāng)前的項(xiàng)目中。
chap4創(chuàng)建基本游戲場景
在Unity中可直接建立的基本幾何體有5種:
正方體、球體、膠囊體、圓柱體、平面。
4.3.3組件類型介紹
在Unity中,組件(Component)共分為如下7類。
1、Mesh
網(wǎng)格,該類型的組件有3項(xiàng)
網(wǎng)格過濾器Mesh Filter
該組件用于在項(xiàng)目資源中獲取網(wǎng)格并將其傳遞到所屬的游戲?qū)ο笾小?br /> 文字渲染器Text Mesh
該組件用于生成三維的字符串(文字)。
網(wǎng)格渲染器Mesh Renderer
該組件用于從網(wǎng)格過濾器獲得網(wǎng)格模型,進(jìn)而根據(jù)游戲?qū)ο蟮腡ransform組件中定義的位置在Scene視圖中進(jìn)行渲染。 2、Effects
特效/效果,該類型的組件(包括舊版粒子系統(tǒng)在內(nèi))共有7項(xiàng)。
粒子系統(tǒng)Particle System
軌跡/拖尾渲染器Trail Renderer
線條渲染器Line Renderer
鏡頭光暈Lens Flare
光環(huán)/光暈Halo
幻燈片Projector
舊版粒子系統(tǒng)Legacy Particles
?
3、Physics
物理組件,該類型組件有17項(xiàng)。
Unity擁有內(nèi)置的NVIDIA PhysX物理引擎,可以模擬真實(shí)的物理行為。
4、Navigation
5、Audio
6、Rendering
7、Miscellaneous
4.5創(chuàng)建光源
光源是每一個場景的重要組成部分。光源決定了場景環(huán)境的明暗、色彩和氛圍。每個場景中可以使用一個以上的光源,合理地使用光源可以創(chuàng)造完美的視覺效果。
4.5.1 Unity的光源類型
Unity提供了4種類型的光源,在合理設(shè)置的基礎(chǔ)上可以模擬自然界中任何的光源。
1.Directional light:方向光源。
該類型光源可以被放置在無窮遠(yuǎn)處,額可以影響場景的一切游戲?qū)ο?#xff0c;類似于自然界中日光的照明效果。方向光源是最不耗費(fèi)圖形處理器資源的光源類型。
2、Point light:點(diǎn)光源。
點(diǎn)光源從一個位置向四面八方發(fā)出光線,影響其范圍內(nèi)的所有對象,類似燈泡的照明效果。點(diǎn)光源的陰影是較耗費(fèi)圖像處理器資源的光源類型。
3.Spotlight:聚光燈。
燈光從一點(diǎn)發(fā)出,在一個方向按照一個錐形的范圍照射,處于錐形區(qū)域內(nèi)的對象會受到光線照射,類似射燈的照明效果。聚光燈是較耗費(fèi)圖形處理器資源的光源類型。
4.Area Light:區(qū)域光/面光源。
該類型光源無法應(yīng)用于實(shí)時光照,僅使用于光照貼圖烘培。
4.5.2光源屬性講解
下面就所有類型光源的參數(shù)統(tǒng)一進(jìn)行介紹:
Type:類型
可以選擇光源的類型
Range:范圍
用于控制光線從光源對象的中心發(fā)射的距離,只有點(diǎn)光源和聚光燈有該參數(shù)。
Spot Angle:聚光燈角度。
該項(xiàng)用于控制光源的錐形范圍,只有聚光燈有該參數(shù)。
Color:顏色。
Intensity:強(qiáng)度。
Cookie:
Cookie Size:
Shadow Type:
Strength:強(qiáng)度。
Resolution:分辨率。
Bias:偏移。
Softness:柔化。
4.6.1攝像機(jī)類型
Unity中支持兩種類型的攝像機(jī),分別是Perspective(透視)以及Orthographic(正交)攝像機(jī)。通過改變攝像機(jī)的模式可以方便地指定攝像機(jī)的類型。
4.6.2攝影機(jī)參數(shù)
在Unity中創(chuàng)建攝像機(jī)對象時,默認(rèn)情況下除了Transform(幾何變換)組件外還會帶有Camera、Flare Layer、GUI Layer、Audio Listener等4個組件。下面就Camera(攝影機(jī))組件的參數(shù)來進(jìn)行講解:
Clear Flags:清除標(biāo)記。決定屏幕的哪部份將被清除。該項(xiàng)一般用于使用多臺攝像機(jī)來描繪不同游戲?qū)ο蟮那闆r,有3種模式可供選擇:
Skybox:天空盒。該模式為默認(rèn)設(shè)置。在屏幕中空白的部分將顯示當(dāng)前攝像機(jī)的天空盒。如果當(dāng)前攝像機(jī)沒有設(shè)置天空盒,它會默認(rèn)使用Background(背景)色。
Solid Color:純色。選擇該模式屏幕上的空白部分將顯示當(dāng)前攝像機(jī)的Background(背景)色。
Depth only:僅深度。該模式用于游戲?qū)ο蟛幌M徊眉舻那闆r。
Don't Clear:不清除。該模式不清除任何顏色或深度緩存。其結(jié)果是,每幀渲染的效果疊加在下一幀之上。一般與自定義的Shader(著色器)配合使用。
Background:背景。
該項(xiàng)用于設(shè)置背景顏色。在鏡頭中的所有元素渲染完成且沒有指定Shybox(天空盒)的情況下,將設(shè)置的顏色應(yīng)用到屏幕的空白處。
Culling Mask:剔除遮罩。
依據(jù)游戲?qū)ο笏付ǖ膶觼砜刂茢z像機(jī)所渲染的游戲?qū)ο蟆?br /> Projection:投射方式。
Perspective:透視。攝像機(jī)將用透視的方式來渲染游戲?qū)ο蟆?br /> Orthographic:正交。攝像機(jī)將用無透視感的方式均勻地渲染游戲?qū)ο蟆?br /> Field of view:視野范圍。(只針對透視模式)
該項(xiàng)用于控制攝像機(jī)的視角寬度,以及縱向的角度尺寸。
Size:大小。(只針對正交模式)。
該項(xiàng)用于控制正交模式攝像機(jī)的視口大小。
Clipping Planes:裁剪平面。攝像機(jī)開始渲染與停止渲染之間的距離。
Near:近點(diǎn)。攝像機(jī)開始渲染的最近的點(diǎn)。
Far:遠(yuǎn)點(diǎn)。攝像機(jī)開始渲染的最遠(yuǎn)的點(diǎn)。
Normalized View Port Rect:標(biāo)準(zhǔn)視圖矩形。用四個數(shù)值來控制該攝像機(jī)的視圖將繪制在屏幕的位置以及大小,該項(xiàng)使用屏幕坐標(biāo)系,數(shù)值在0~1之間。
X:攝像機(jī)視圖進(jìn)行繪制的水平位置起點(diǎn)。
Y:攝像機(jī)視圖進(jìn)行繪制的垂直位置起點(diǎn)。
W:寬度。攝像機(jī)輸出到屏幕上的寬度。
W:高度。攝像機(jī)輸出到屏幕上的高度。
Depth:深度。
該項(xiàng)用于控制攝像機(jī)的渲染順序,較大值的攝像機(jī)將被渲染在較小值得攝像機(jī)之上。
Rendering Path:渲染路徑。該項(xiàng)用于指定攝像機(jī)的渲染方法。
Target Texture:目標(biāo)紋理(該項(xiàng)只有Pro版才能支持)。
該項(xiàng)用于將攝像機(jī)視圖輸出并渲染到屏幕。一般用于制作導(dǎo)航圖或者畫中畫等效果。
HDR:高動態(tài)光照渲染。
該項(xiàng)用于啟用攝像機(jī)的高動態(tài)范圍渲染功能。因?yàn)槿搜蹖Φ头秶墓庹諒?qiáng)度更為敏感,所以使用高動態(tài)范圍渲染能夠讓場景更為真實(shí),光照的變換不會顯得太突兀。
5.5常用編輯器組件
常用編輯器組件可分為兩種,一是原有組件,二是拓展組件。
5.5.1攝像機(jī)
作為一個游戲?qū)ο?#xff0c;攝像機(jī)存在Scene視圖中。
攝像機(jī)組件的一些常用參數(shù)。
Clear Flags:背景顯示內(nèi)容,默認(rèn)是天空盒子,前提是必須在Render Settings中設(shè)置過天空盒子材質(zhì)。
Background:背景顯示顏色。如果沒有設(shè)置天空盒子,將顯示這個顏色。
Culling Mask:用于選擇是否顯示某些層,默認(rèn)為全部顯示。
Projection:攝像機(jī)的類型。
Field of View:攝像機(jī)的視野范圍。
Near:以攝像機(jī)為圓心,繪制最近點(diǎn)的距離。
Far:以攝像機(jī)為圓心,繪制最遠(yuǎn)點(diǎn)的距離。
Normalized View Port Rect:可理解為設(shè)定Game視圖的顯示區(qū)域參數(shù)。多臺攝像機(jī)可以通過設(shè)置各自顯示區(qū)域來分屏同時顯示。
Depth:攝像機(jī)的深度。若存在多個攝像機(jī),先渲染該值較小的攝像機(jī)。
Rendering Path:渲染路徑。
Target Texture:目標(biāo)紋理,設(shè)置后會擋住攝像機(jī)。
4.7地形編輯器
4.7.1地形編輯器概述
Unity中的地形編輯器支持LOD(Level of Detail)功能,能夠根據(jù)攝像機(jī)與地形的距離以及地形起伏程度調(diào)整地形塊(Patch)網(wǎng)格的疏密程度。遠(yuǎn)處或平坦的地形塊使用稀疏的網(wǎng)格,近處或陡峭的地形塊使用密集的網(wǎng)格。這將使游戲場景既真實(shí)、精細(xì),同時也不影響性能。
地形與其他的游戲?qū)ο笥行┎煌?#xff0c;需要注意的是,地形支持Transform(幾何變換)組件中的Position(位置)變換,但對于Rotation(旋轉(zhuǎn))以及Scale(縮放)操作是無效的。
4.7.2地形的創(chuàng)建方式以及相關(guān)參數(shù)設(shè)定
4.7.2.1地形的創(chuàng)建及基本設(shè)置
1、打開菜單欄中的Terrain|Create Terrain項(xiàng),便會創(chuàng)建一個地形
2、新建地形后,首先講解一下菜單欄中Terrain項(xiàng)下面的設(shè)置。
Create Terrain:創(chuàng)建地形
該項(xiàng)用于在項(xiàng)目工程中創(chuàng)建地形并將該地形資源放置到場景中。
Import Heightmap-Raw…:導(dǎo)入高度圖
Export Heightmap-Raw…:導(dǎo)出高度圖
Set Resolution…:設(shè)置分辨率
該項(xiàng)用于設(shè)置地形尺寸、高度圖分辨率、細(xì)節(jié)分辨率、紋理分辨率等相關(guān)參數(shù)
Terrain Width:地形寬度。用于設(shè)置地形的寬度。
Terrain Height:地形高度。用于設(shè)置地形的高度。
Terrain Length:地形長度。用于設(shè)置地形的長度。
4.7.2.2地形組件參數(shù)詳解
新建地形后,在監(jiān)視視圖可以看到地形對象所掛載的組件,除了Transform組件外,還有一個Terrain(Script)(地形腳本)組件以及一個Terrain Collider(地形碰撞)組件。
4.10天空盒
Unity中的天空盒實(shí)際上是一種使用了特殊類型Shader的材質(zhì),該種類型材質(zhì)可以籠罩在整個游戲場景之外,并根據(jù)材質(zhì)中指定的紋理模擬出類似遠(yuǎn)景、天空等的效果,使游戲場景看起來更完整。
4.10.1天空盒資源包的概述
1、啟動Unity應(yīng)用程序,依次單擊菜單欄中的Assets|ImportPackage|Skyboxes選項(xiàng),為項(xiàng)目工程導(dǎo)入Skyboxes.UnityPackage。
2、資源包被導(dǎo)入后,資源包中包含9個天空盒。
3、9種天空盒的效果如下:
DawnDusk Skybox
Eerie Skybox
MoonShine Skybox
Overcast1 Skybox
Overcast2 Skybox
StarryNight Skybox
Sunny1 Skybox
Sunny2 Skybox
Sunny3 Skybox
4.10.2天空盒的兩種應(yīng)用方式及其區(qū)別
一種是在Unity中Render Settings(渲染設(shè)置)里進(jìn)行指定,這種方法是針對游戲場景的,簡單地講,就是在同一個游戲場景中,無論使用哪個攝像機(jī)對象,天空盒都保持不變。并且該方式指定天空盒可以在場景視圖中直接顯示。
另一種方式是為攝像機(jī)對象添加天空盒組件,然后在天空盒組件中進(jìn)行指定,這種方法只針對攝像機(jī)本身,簡單地講,就是在同一個游戲場景中,如果切換攝像機(jī)對象,天空盒會隨之變換。需要注意的是,為攝像機(jī)指定的天空盒優(yōu)先級會高于在渲染設(shè)定中指定的天空盒。
4.10.3創(chuàng)建天空盒的方法
除了Skybox資源包中提供的天空盒外,Unity還支持用戶自制天空盒材質(zhì)。
chap6 Mecanim動畫系統(tǒng)
Mecanim是Unity提供的一個豐富而復(fù)雜的動畫系統(tǒng),它提供了:
針對人形角色的工作流和動畫創(chuàng)建能力。
Retargeting(運(yùn)動重定向)功能,即把動畫從一個角色模型應(yīng)用到另一個角色模型上的能力。
針對Animation Clips(動畫片段)的簡易工作流,即針對動畫片段以及他們之間的過渡和交互過程的預(yù)覽能力。
一個用于管理動畫間復(fù)雜交互作用的可視化編程工具。
通過不同邏輯來控制不同身體部位運(yùn)動的能力。 Mecanim工作流可以被分解為3個主要階段:
1、資源的準(zhǔn)備和導(dǎo)入
這一步驟與Mecanim系統(tǒng)無關(guān)。
2、角色的建立
主要有以下兩種方式:
人形角色的建立
一般角色的建立。動畫重定向功能對此并不適用。
3、角色的運(yùn)動
這里包括設(shè)定動畫片段及其相互間的交互作用,也包括建立狀態(tài)機(jī)和混合樹、調(diào)整動畫參數(shù)以及通過代碼控制動畫等。 舊版動畫系統(tǒng)是Unity引擎在4.0版本之前使用的老的動畫系統(tǒng)。Unity公司正計(jì)劃采用Mecanim動畫系統(tǒng)逐步徹底地替換舊版動畫系統(tǒng)。 在使用角色模型之前,首先需要將它導(dǎo)入到項(xiàng)目工程中來。Unity可以導(dǎo)入原生的Maya文件(.mb或者.ma)、Cinema4D文件(.c4d)以及一般的FBX文件。 Animation Clips(動畫片段):動畫角色具有的一系列的在不同情景下被觸發(fā)的基本動作,比如行走、奔跑、跳躍、投擲和死亡等,這些基本動作被稱為動畫片段。 最容易使用的動畫模型是含有預(yù)分解動畫片段的模型。
使用預(yù)分解動畫模型
使用未分解動畫模型 用戶可以為任意模型的動畫組件添加動畫片段
在非Mecanim模型(沒有肌肉定義)上加入動畫片段要將Muscle Definition屬性設(shè)置為None。 另一種導(dǎo)入動畫片段的方法是遵循Unity指定的動畫文件命名方案。
用戶可以創(chuàng)建獨(dú)立的模型文件并按照modelName@animationName.fbx的格式命名。
除了人形動畫,Mecanim系統(tǒng)也能夠支持非人形動畫,只不過在非人形動畫中無法使用Avatar系統(tǒng)和其他一些相關(guān)功能。在Mecanim系統(tǒng)中,非人形動畫被稱為一般動畫(Generic Animation)。
在人形動畫中,一般可以很容易知道人形模型的中心點(diǎn)和方位;但對于一般動畫,由于骨架可以是任意形狀,則需要為其指定一根參考骨骼,它在Mecanim系統(tǒng)中被稱為根節(jié)點(diǎn)(root node)。選中根節(jié)點(diǎn)后,即可建立多個動畫片段之間的對應(yīng)關(guān)系,且實(shí)現(xiàn)它們之間的正確混合。此外,根節(jié)點(diǎn)還對實(shí)現(xiàn)區(qū)分骨骼動畫和根節(jié)點(diǎn)的運(yùn)動具有重要意義(通過OnAnimatorMove進(jìn)行控制)。
動畫片段可以基于姿態(tài)、旋轉(zhuǎn)和位置進(jìn)行循環(huán)。
任何一個擁有Avatar的GameObject都同時需要有一個Animator組件,該組件是關(guān)聯(lián)角色及其行為的紐帶。
Animator組件中還引用了一個Animator Controller,它被用于為角色設(shè)置行為,這里所說的行為包括狀態(tài)機(jī)(State Machines)、混合樹(Blend Trees)以及通過腳本控制的事件(Events),具體包括:
Controller:關(guān)聯(lián)到該角色的animator控制器。
Avatar:該角色的Avatar。
Apply Root Motion:是使用動畫本身還是使用腳本來控制角色的位置。
Animate Physics:動畫是否與物理交互。
Culling Mode:動畫的裁剪模式。
Always animate:總是啟用動畫,不進(jìn)行裁剪。
Based on Renderers:當(dāng)看不見角色時只有根節(jié)點(diǎn)運(yùn)動,身體的其他部分保持靜止。 20150824補(bǔ)充: chap7物理引擎
7.1 Rigidbody:剛體
剛體組件可使游戲?qū)ο笤谖锢硐到y(tǒng)的控制下來運(yùn)動,剛體可接受外力與扭矩力用來保證游戲?qū)ο笙裨谡鎸?shí)世界中那樣進(jìn)行運(yùn)動。任何游戲?qū)ο笾挥刑砑恿藙傮w組件才能受到重力的影響。
在Unity中為游戲?qū)ο筇砑觿傮w組件的方法是:
1、選中該對象,然后依次打開菜單欄中Component->Physics->Rigidbody選項(xiàng),這樣就在該游戲?qū)ο笊咸砑恿藙傮w組件。
2、Rigidbody組件的屬性面板如圖所示。剛體組件的各參數(shù)介紹如下:
Mass:質(zhì)量。
該項(xiàng)用于設(shè)置游戲?qū)ο蟮馁|(zhì)量。
Drag:阻力。
當(dāng)對象受力運(yùn)動時受到的空氣阻力。0表示沒有空氣阻力,阻力極大時游戲?qū)ο髸⒓赐V惯\(yùn)動。
Angular Drag:角阻力。
當(dāng)對象受扭矩力旋轉(zhuǎn)時受到的空氣阻力。0表示沒有空氣阻力,阻力極大時游戲?qū)ο髸⒓赐V惯\(yùn)動。
Use Gravity:使用重力。
若開啟此項(xiàng),游戲?qū)ο髸艿街亓Φ挠绊憽?br /> Is Kinematic:是否開啟動力學(xué)。
若開啟此項(xiàng),游戲?qū)ο髮⒉辉偈芪锢硪娴挠绊憦亩荒芡ㄟ^Transform(幾何變換組件)屬性來對其操作。該方式適用于模擬平臺的移動或帶有鉸鏈關(guān)節(jié)鏈接剛體的動畫。
Interpolate:插值
該項(xiàng)用于控制剛體運(yùn)動的抖動情況,有3項(xiàng)可供選擇。
None:沒有插值。
Interpolate:內(nèi)插值。基于前一幀的Transform來平滑此次的Transform。
Extrapolate:外插值。基于下一幀的Transform來平滑此次的Transform。
Collision Detection:碰撞檢測。
該屬性用于控制避免高速運(yùn)動的游戲?qū)ο蟠┻^其他的對象而發(fā)生碰撞,有3項(xiàng)可供選擇。
Discrete:離散碰撞檢測。該模式與場景中其他的所有碰撞體進(jìn)行碰撞檢測。該項(xiàng)為默認(rèn)值。
Continuous:連續(xù)碰撞檢測。
Continuous Dynamic:連續(xù)動態(tài)碰撞檢測模式。
Constraints:約束。
該項(xiàng)用于控制對于剛體運(yùn)動的約束。
Freeze Position:凍結(jié)位置。剛體對象在世界坐標(biāo)系中的X、Y、Z軸方向上(勾選狀態(tài))的移動將無效。
Freeze Rotation:凍結(jié)旋轉(zhuǎn)。剛體對象在世界坐標(biāo)系中的X、Y、Z軸方向上(勾選狀態(tài))的旋轉(zhuǎn)將無效。
通常沒有必要在操作一個對象剛體的同時也操作其Transform,只需要二選其一即可。
7.2 Colliders:碰撞體
碰撞體是物理組件中的一類,它要與剛體一起添加游戲?qū)ο笊喜拍苡|發(fā)碰撞。
添加碰撞體的方法:首先選中一個游戲?qū)ο?#xff0c;然后依次打開菜單欄Component->Physics選項(xiàng),可選擇不同的碰撞體類型,這樣就在該對象上添加了碰撞體組件。
7.2.1碰撞體型介紹
1.Box Collider:盒碰撞體
是一個立方體外形的基本碰撞體。
Is Trigger:觸發(fā)器。
勾選該項(xiàng),則該碰撞體可用于觸發(fā)事件,并將被物理引擎所忽略。
Material:材質(zhì)。
采用不同的物理材質(zhì)類型決定了碰撞體與其他對象的交互形式。
Center:中心
碰撞體在對象局部坐標(biāo)中的位置。
Size:大小。
碰撞體在X、Y、Z方向上的大小。
2.Sphere Collider:球形碰撞體
3.Capsule Collider:膠囊碰撞體
4.Mesh Collider:網(wǎng)格碰撞體
5.Wheel Collider:車輪碰撞體
7.2.2碰撞體相關(guān)的知識點(diǎn)介紹
7.3 Character Controller:角色控制器
7.4布料
7.4.1交互布料
7.4.2蒙皮布料
7.4.3布料渲染器
7.5關(guān)節(jié)
7.5.1鉸鏈關(guān)節(jié)
7.5.2固定關(guān)節(jié)
7.5.3彈簧關(guān)節(jié)
7.5.4角色關(guān)節(jié)
7.5.5可配置關(guān)節(jié)
7.6力場
7.7物理引擎實(shí)例
chap9導(dǎo)航網(wǎng)格尋路
9.1概述
NavMesh(導(dǎo)航網(wǎng)格)是3D游戲世界中用于實(shí)現(xiàn)動態(tài)物體自動尋路的一種技術(shù),它將游戲場景中復(fù)雜的結(jié)構(gòu)組織關(guān)系簡化為帶有一定信息的網(wǎng)格,在這些網(wǎng)格的基礎(chǔ)上通過一系列相應(yīng)的計(jì)算來實(shí)現(xiàn)自動尋路。Unity從3.5開始集成了導(dǎo)航網(wǎng)格功能,并提供了方便地用戶界面。導(dǎo)航時,只需要給導(dǎo)航物體掛載導(dǎo)航組件,導(dǎo)航物體便會自行根據(jù)目標(biāo)點(diǎn)來尋找最直接的路線,并沿著該路線行進(jìn)到目標(biāo)點(diǎn)。
chap12游戲開發(fā)基礎(chǔ)知識
在游戲引擎中使用的矩陣通常為4*4矩陣,因?yàn)樗梢悦枋鱿蛄康钠揭啤⑿D(zhuǎn)、縮放等所有的線性變換。
如果引入齊次坐標(biāo),則可以使用(x,y,z,1)來表示坐標(biāo)點(diǎn),而使用(x,y,z,0)來表示向量。
四元數(shù)Q可記作:Q=[w,(x,y,z)]
在3D數(shù)學(xué)中使用單位四元數(shù)/歐拉角/矩陣來表示旋轉(zhuǎn),對于三維空間中旋轉(zhuǎn)軸為n,旋轉(zhuǎn)角度為a的旋轉(zhuǎn),如果用四元數(shù)表示,四個分量分別為:
w=cos(a/2),x=sin(a/2)cos(b_x),y=sin(a/2)cos(b_y),z=sin(a/2)cos(b_z)
其中cos(b_x),cos(b_y),cos(b_z)分別表示旋轉(zhuǎn)軸的x,y,z分量。
Unity中物體的前方向?yàn)榫植孔鴺?biāo)系z軸的正方向
可編程管線的核心就是Shader。
在Direct3D 9中,渲染管線主要有9個處理階段構(gòu)成。分別是:局部坐標(biāo)變換→世界坐標(biāo)變換→觀察坐標(biāo)變換→背面消隱→光照計(jì)算→裁剪→投影→視口計(jì)算→光柵化。對于可編程管線,頂點(diǎn)變換和光照可以通過編寫Vertex Shader來控制,光柵化則可以通過編寫Pixel Shader來控制。
chap13 Unity腳本開發(fā)基礎(chǔ)
在Unity中,游戲交互通過腳本編程來實(shí)現(xiàn)。
腳本可以理解為附加在游戲?qū)ο笊系挠糜诙x游戲?qū)ο笮袨榈闹噶畲a。通過腳本,開發(fā)者可以控制每一個游戲?qū)ο蟮膭?chuàng)建、銷毀以及對象在各種情況下的行為,進(jìn)而實(shí)現(xiàn)預(yù)期的交互效果。
Boo是Python語言在.NET上的實(shí)現(xiàn),使用者相對較少。
Unity的腳本語言基于Mono的.NET平臺上運(yùn)行,可以使用.NET庫,這也為XML、數(shù)據(jù)庫、正則表達(dá)式等問題提供了很好的解決方案。
Unity里的腳本都會經(jīng)過編譯。
Unity的3種腳本語言實(shí)際上在功能和運(yùn)行速度上是一樣的,區(qū)別主要體現(xiàn)在語言特性上。
Unity官方示例中的腳本基本都是用JavaScript寫的。有人將Unity使用的JavaScript稱為UnityScript。
大多數(shù)的Unity第三方插件都是用C#編寫的。
C#基本語法
在Unity中,C#變量聲明方式為:
變量前面可以添加訪問修飾符public、protected、private,其中public的變量可以在監(jiān)測視圖中查看和編輯,不添加訪問修飾符默認(rèn)為private(在JavaScript中默認(rèn)為public)。
JavaScript/C#中可用的變量類型:
數(shù)值類型
字符串
布爾值 在C#中只能使用內(nèi)建數(shù)組
雖然不能使用Array數(shù)組,但是可以使用ArrayList、List等容器來達(dá)到同樣的目的。
C#中的操作符與JavaScript操作符一致。
C#中的條件判斷語句、循環(huán)語句、switch語句的使用與JavaScript語句一致。
參數(shù)可以使用關(guān)鍵字ref聲明為傳引用參數(shù),在函數(shù)調(diào)用時的實(shí)參數(shù)前也需要添加ref。
另外,函數(shù)參數(shù)前可以使用關(guān)鍵字out實(shí)現(xiàn)返回多個數(shù)值。
在使用C#編寫腳本時還需要注意以下幾個規(guī)則:
1、凡是需要添加到游戲?qū)ο蟮腃#腳本類都需要直接或間接地從MonoBehaviour類繼承。
2、使用Start或者Awake函數(shù)來初始化,避免使用構(gòu)造函數(shù)。不使用構(gòu)造函數(shù)的原因是在Unity里無法確定構(gòu)造函數(shù)何時被調(diào)用。
3、類名要與腳本文件名相同。這里要求與文件名同名的類指的是從MonoBehaviour繼承的行為類,普通的C#類可以隨意命名。
4、協(xié)同函數(shù)(Coroutines)返回類型必須是IEnumerator,并且用yield return替代yield。
5、目前Unity里的C#不支持自定義命名空間。
在Unity中有兩種新建腳本文件的方法,操作方法分別為:
1、打開菜單欄中的Assert|Create|Javascript項(xiàng)或者是C# Script項(xiàng)
2、在項(xiàng)目視圖上方單擊Create按鈕,或者在視圖區(qū)域右擊,在快捷菜單中選擇Create|Javascript項(xiàng)或者是C# Script項(xiàng)來創(chuàng)建腳本
#pragma strict禁用了腳本的動態(tài)類型,強(qiáng)制使用靜態(tài)類型。
腳本必然事件(Certain Event):在滿足某些條件時由Unity自動調(diào)用。
Start、Update正是最常用的兩個。
層次視圖中的游戲?qū)ο?#xff1a;
Player1
監(jiān)測視圖的屬性
項(xiàng)目視圖中的腳本
Player1.cs
?
在Unity中,開發(fā)者編寫的每一個腳本都被視為一個自定義的組件,游戲?qū)ο罂梢岳斫鉃槟苋菁{各種組件的容器。游戲?qū)ο蟮乃薪M件一起決定了這個對象的行為和游戲中的表現(xiàn)。作為一個組件,腳本本身是無法脫離游戲?qū)ο螵?dú)立運(yùn)行的,它必須添加到游戲?qū)ο笊喜艜А?MonoBehaviour是Unity中一個非常重要的類,它定義了基本的腳本行為,腳本必然事件就是從MonoBehaviour繼承而來。除了必然事件,MonoBehaviour定義了對各種特定事件的響應(yīng)函數(shù),這些函數(shù)名稱均以O(shè)n作為開頭。
表13-7常用的事件響應(yīng)函數(shù)
OnBecameVisible對于任意一個相機(jī)可見時調(diào)用
OnBecameInvisible對于任意一個相機(jī)不可見時調(diào)用
13.6.4訪問組件
一個游戲?qū)ο罂赡苡扇舾山M件構(gòu)成。
Transform用于定義對象在場景中的位置、角度、縮放參數(shù);
Mesh Filter用來從資源文件中讀取模型;
Mesh Renderer用來在場景中渲染Player1模型; 常用的組件及其對應(yīng)的變量
Transform,transform
Rigidbody,rigidbody
Renderer,renderer
Light,light
Camera,camera
Collider,collider
Animation,animation
Audio,audio
如果游戲?qū)ο笊喜淮嬖谀辰M件,則該組件對應(yīng)變量的值將為空值null。
組件引用函數(shù)
GetComponet
GetComponets
GetComponetInChildren
GetComponetsInChildren
這幾個函數(shù)比較耗時,因此應(yīng)盡量避免在Update中調(diào)用這些獲取組件的函數(shù),而是應(yīng)該在初始化時把組件的引用保存在變量中。 在Unity中,用戶可以通過如下幾種方式來訪問游戲?qū)ο?#xff1a;
1、通過名稱來查找:使用函數(shù)GameObject.Find
2、通過標(biāo)簽來查找:GameObject.FindWithTag
也是比較耗時的函數(shù)調(diào)用,因此不建議在Update中調(diào)用它們。
13.7.5 Coroutine協(xié)同程序
Coroutine也稱為協(xié)同程序或者協(xié)程,協(xié)同程序可以和主程序并行運(yùn)行,和多線程有些類似,但是在任一指定時刻只會有一個協(xié)同程序在運(yùn)行,別失的協(xié)同程序則會掛起。
Unity里和協(xié)同程序有關(guān)的函數(shù)有:
StartCoroutine:啟動一個協(xié)同程序
StopCoroutine:終止一個協(xié)同程序
StopAllCoroutines:終止所有協(xié)同程序
WaitForSeconds:等待若干秒
WaitForFixedUpdate:等待直到下一次FixedUpdate調(diào)用
在C#中,協(xié)同函數(shù)的返回類型必須為IEnumerator,yield要用yield return來替代,并且啟動協(xié)同程序用StartCoroutine函數(shù)。
【??
用Coroutine定期執(zhí)行函數(shù)并且獨(dú)立于幀率
如果我們可以每5秒才檢測某些數(shù)據(jù),然后把邏輯移出Update就可以節(jié)省性能消耗。
coroutine是一個可以掛起其執(zhí)行直到y(tǒng)ield操作完成的函數(shù)。
實(shí)現(xiàn)在幀率外定期執(zhí)行函數(shù):
public class TimedMethod: MonoBehaviour{
??void Start()
??{
???StartCoroutine(Tick());
??}
?IEnumerator Tick()
?{
??????????????? float delaySeconds=5.0F;
??????????????? while(true){
??????????????????? print("tick "+Time.time);
??????????????????? yield return new WaitForSeconds(delaySeconds);
??????????????? }
?}
}
】
chap14輸入與控制
處理用戶的輸入是游戲交互的基礎(chǔ)。Unity提供了一個非常易用和強(qiáng)大的用于處理輸入信息的類:Input,它可以處理鼠標(biāo)、鍵盤、搖桿/方向盤/手柄等游戲外設(shè),也可以處理iOS/Android等移動設(shè)備的觸摸輸入信息。程序員通過編寫腳本接收輸入信息,完成與用戶的交互。
在編寫處理輸入的腳本時,需要注意Unity所有輸入信息的更新是在Update方法中完成的,因此和輸入處理相關(guān)的腳本都應(yīng)該放在Update方法中。
在Input類中,Key與物理按鍵對應(yīng),例如鍵盤、鼠標(biāo)、搖桿上的按鍵,其映射關(guān)系無法改變,可以通過按鍵名稱或者按鍵編碼KeyCode來獲得其輸入狀態(tài)。例如,GetKeyDown(KeyCode.A)會在按A鍵時返回true。
Button是輸入管理器Input Manager中定義的虛擬按鍵,通過名稱來訪問。
輸入軸Axis用來模擬平滑變化的輸入,如搖桿的變化、方向盤的轉(zhuǎn)動等,需要在輸入管理器中配置。它包含正負(fù)兩個虛擬按鍵。
在Unity中,鼠標(biāo)位置用屏幕的像素坐標(biāo)表示,屏幕左下角為坐標(biāo)原點(diǎn)(0, 0),右上角為(Screen.width,Screen.height),其中Screen.width為屏幕分辨率的寬度,Screen.height 為屏幕分辨率的高度。
mousePosition的變量類型為Vector3。
GetMouseButtonDown、GetMouseButtonUp、GetMouseButton這3個方法需要傳入?yún)?shù)來指定判斷哪個鼠標(biāo)按鍵,0對應(yīng)左鍵,1對應(yīng)右鍵,2對應(yīng)中鍵。
Unity可以處理搖桿、游戲手柄、方向盤等標(biāo)準(zhǔn)游戲外設(shè)的輸入。
虛擬按鍵需要在輸入管理器中配置,把外設(shè)的輸入消息映射給虛擬按鍵或輸入軸以后,就可以在腳本中使用了。
Unity默認(rèn)為用戶創(chuàng)建了若干映射了搖桿按鈕的虛擬按鍵,包括Fire1、Fire2、Fire3、Jump以及虛擬軸Horizontal和Vertical,可以在腳本里直接使用它們。
在iOS和Android系統(tǒng)中,操作都是通過觸摸來完成的。
通過GetTouch或者touches可以訪問移動設(shè)備的觸摸數(shù)據(jù),數(shù)據(jù)保存在Touch的結(jié)構(gòu)體中。
使用虛擬按鍵的好處是可以讓游戲玩家自由定義按鍵,滿足個性化的操作習(xí)慣。
虛擬按鍵屬于輸入軸的一種特殊情況,在輸入管理器中,都統(tǒng)一視為輸入軸。
Unity中編寫Shader的語言叫做ShaderLab,而ShaderLab說白了就是裹著一層皮的CG著色器語言而已。Cg,即C forgraphics,即用于圖形的C語言,是微軟和英偉達(dá)相互協(xié)作在標(biāo)準(zhǔn)硬件光照語言的語法和語義上達(dá)成的一種一致性協(xié)議。
HLSL和CG其實(shí)是同一種語言。
在Unity中寫Shader約等于給DirectX寫Shader。 chap16 Shader開發(fā)
簡單來說,Shader是為渲染管線中的特定處理階段提供算法的一段代碼。Shader是伴隨著可編程渲染管線出現(xiàn)的,Shader的出現(xiàn)可看作是實(shí)時渲染技術(shù)的一次革命。
Unity中所有的渲染都需要通過Shader來完成,開發(fā)者可以自己編寫Shader,也可以使用Unity提供的內(nèi)建Shader來實(shí)現(xiàn)各種畫面效果。
本章將介紹Unity中的內(nèi)建Shader、ShaderLab語言,以及簡單的表面著色器(Surface Shader)和頂點(diǎn)片段著色器(Vertex & Fragment Shader)的編寫方法。
16.1內(nèi)建Shader介紹
Unity提供了數(shù)量超過60個的內(nèi)建Shader,包括從最簡單的頂點(diǎn)光照效果到高光、法線、反射等游戲中最常用的材質(zhì)效果。
?內(nèi)建Shader根據(jù)應(yīng)用對象可以分為如下幾大類:
普通(Normal Shader Family):用于不透明的對象
透明(Transparent Shader Family):用于透明對象
透明縷空效果(Transparent Cutout Shader Family):用于包含完全透明部分的半透明對象
自反光(Self-llluminated Shader Family):用于有發(fā)光效果的對象
反射(Reflective Shader Family):用于能反射環(huán)境立方體貼圖的不透明對象
游戲開發(fā)者需要在游戲畫面和游戲性能之間做出平衡。
16.2Unity里的三種自定義Shader
編寫Shader需要對OpenGL或者Direct3D的渲染狀態(tài)有基本的了解,以及一些關(guān)于固定功能管線、可編程管線、Cg/HLSL/GLSL編程 語言的知識。
在Unity中,開發(fā)者可以編寫3種類型的Shader:
表面著色器:可同時正常工作在前向渲染及延遲渲染模式下。以Cg/HLSL語言進(jìn)行編寫。
頂點(diǎn)和片段著色器:同樣是用Cg/HLSL語言來編寫。
固定功能管線著色器:完全以ShaderLab語言編寫,類似于微軟的Effects或是英偉達(dá)的CgFX。
無論編寫哪種Shader,實(shí)際的Shader代碼(比如Cg/HLSL代碼)都需要嵌入在ShaderLab代碼中,Unity需要通過ShaderLab代碼來組織Shader結(jié)構(gòu)。
NewShader.shader的示例代碼:
Shader "Custom/NewShader" {//Shader的名稱
?Properties {
??_Color ("Color", Color) = (1,1,1,1)
??_MainTex ("Albedo (RGB)", 2D) = "white" {}
??_Glossiness ("Smoothness", Range(0,1)) = 0.5
??_Metallic ("Metallic", Range(0,1)) = 0.0
//在這里定義Shader中使用的屬性,例如顏色,向量,紋理
?}
?SubShader {
//在這里編寫Shader的實(shí)現(xiàn)代碼
//包括表面著色器、頂點(diǎn)和片段著色器的Cg/HLSL代碼
//或者是固定功能著色器的ShaderLab代碼
??Tags { "RenderType"="Opaque" }
??LOD 200
??
??CGPROGRAM
??// Physically based Standard lighting model, and enable shadows on all light types
??#pragma surface surf Standard fullforwardshadows // Use shader model 3.0 target, to get nicer looking lighting
??#pragma target 3.0 sampler2D _MainTex; struct Input {
???float2 uv_MainTex;
??}; half _Glossiness;
??half _Metallic;
??fixed4 _Color; void surf (Input IN, inout SurfaceOutputStandard o) {
???// Albedo comes from a texture tinted by color
???fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
???o.Albedo = c.rgb;
???// Metallic and smoothness come from slider variables
???o.Metallic = _Metallic;
???o.Smoothness = _Glossiness;
???o.Alpha = c.a;
??}
??ENDCG
?}
?FallBack "Diffuse"
}
chap18工作流程
在很多類型游戲的制作過程中,開發(fā)者都會考慮一個非常重要的問題,即如何在游戲運(yùn)行過程中對資源進(jìn)行動態(tài)的下載和加載。為此,Unity引擎引入了AssetBundle這一技術(shù)來滿足開發(fā)者的上述需求。
AssetBundle是Unity引擎提供的一種用于存儲資源的文件格式,它可以存儲任意一種Unity引擎能夠識別的資源,例如模型、紋理、音頻、動畫片段甚至整個場景等。同時,AssetBundle也可以包含開發(fā)者自定義的二進(jìn)制文件,只需將二進(jìn)制文件的擴(kuò)展名改成.byte,Unity引擎即可將其識別為TextAsset,進(jìn)而可以被打包到AssetBundle文件中。
一般情況下,AssetBundle的工作流程大致如下:
1、開發(fā)過程中,開發(fā)者創(chuàng)建好AssetBundle文件并上傳至服務(wù)器上。
創(chuàng)建AssetBundle:開發(fā)者可以在Unity編輯器中通過腳本來創(chuàng)建滿足要求的AssetBundle文件。
上傳至服務(wù)器:開發(fā)者創(chuàng)建好AssetBundle文件后,即可通過上傳工具(比如FTP等)將其上傳至服務(wù)器中,從而使游戲通過訪問服務(wù)器來獲取所需的資源。
2、游戲運(yùn)行時,客戶端會根據(jù)實(shí)際需求從服務(wù)器上將適當(dāng)?shù)腁ssetBundle下載到本地機(jī)器,再通過加載模塊將其資源加載到游戲中。
下載AssetBundle:Unity提供了一套完整的API供開發(fā)者使用,從而完成從服務(wù)器端下載AssetBundle文件。
加載AssetBundle中的Assets:AssetBundle文件一旦下載完成,開發(fā)者即可通過特定的API來加載其所包含的Assets,包括模型、紋理、動畫片段等。
18.1AssetBundle
用戶可以通過腳本在Unity編輯器中創(chuàng)建AssetBundle文件,Unity引擎提供了3種創(chuàng)建AssetBundle的API,分別如下:
BuildPipeline.BuildAssetBundle
通過該接口,開發(fā)者可以將編輯器中任意類型的Assets打包成AssetBundle文件。
BuildPipeline.BuildStreamedSceneAssetBundle
通過該接口,開發(fā)者可以直接將項(xiàng)目中的一個或若干個場景以流式加載的方式打包成AssetBundle文件。
BuildPipeline.BuildAssetBundleExplicitAssetNames
該接口功能與BuildPipeline.BuildAssetBundle接口相同,但創(chuàng)建時可以為每個Object指定一個自定義的名字
18.2如何下載AssetBundle
Unity引擎提供了兩種方式來從服務(wù)器上動態(tài)下載AssetBundle文件,分別是非緩存機(jī)制和緩存機(jī)制。
1、非緩存機(jī)制
通過創(chuàng)建一個WWW實(shí)例來對AssetBundle文件進(jìn)行下載。下載后的AssetBundle文件將不會進(jìn)入U(xiǎn)nity引擎特定的緩存區(qū)。
2、緩存機(jī)制
通過WWW.LoadfromCacheorDownload接口來下載AssetBundle文件。下載后的AssetBundle文件將自動被存放在Unity引擎特定的緩存區(qū)內(nèi),該方法是Unity推薦的AssetBundle文件下載方式。
18.3AssetBundle的加載與卸載
18.3.1如何加載AssetBundle
當(dāng)把AssetBundle文件從服務(wù)器端下載到本地之后,需要將其加載到內(nèi)存中并創(chuàng)建AssetBundle文件內(nèi)存對象。Unity提供了3種方式來加載AssetBundle文件:
1、WWW.assetbundle屬性
可以通過WWW.assetbundle屬性來創(chuàng)建一個AssetBundle文件的內(nèi)存對象。
2、AssetBundle.CreateFromFile
通過該接口可以從磁盤文件創(chuàng)建一個AssetBundle文件的內(nèi)存對象。需要注意的是,該方法僅支持非壓縮格式的AssetBundle,即在創(chuàng)建AssetBundle時必須使用UncompressedAssetBundle選項(xiàng)。
3、AssetBundle.CreateFromMemory
通過該接口可以從內(nèi)存數(shù)據(jù)流創(chuàng)建AssetBundle內(nèi)存對象。例如,當(dāng)用戶對AssetBundle進(jìn)行加密時,可以先調(diào)用解密算法返回解密后的數(shù)據(jù)流,然后通過AssetBundle.CreateFromMemory從數(shù)據(jù)流創(chuàng)建AssetBundle對象。
需要特別注意的是,如果AssetBundle之間存在依賴,則必須嚴(yán)格按照依賴順序加載AssetBundle文件。
18.3.2如何從AssetBundle中加載Assets
當(dāng)AssetBundle文件加載完成后,就可以將它所包含的Assets加載到內(nèi)存中。Unity提供了3種加載API供開發(fā)者使用,它們分別是:
AssetBundle.Load
該接口可以通過名字來將AssetBundle文件中包含的對應(yīng)Asset加載到內(nèi)存中,也可以通過參數(shù)來指定加載Asset的類型。
AssetBundle.LoadAsync
該接口的作用與AssetBundle.Load相同,不同的是該接口是對Asset進(jìn)行異步加載,即加載時主線程可以繼續(xù)執(zhí)行,所以該方法適用于加載一個較大的Asset或者 同時加載多個Assets。
AssetBundle.LoadAll
該接口用來一次性加載AssetBundle文件中所有的Assets,同AssetBundle.Load一樣,可以通過指定加載Asset的類型來選擇性地加載Assets。
18.3.3如何從場景AssetBundle中加載Assets
18.3.2中介紹了如何從普通的AssetBundle文件中加載Assets。
Application.LoadLevel
Application.LoadLevelAsync
Application.LoadLevelAdditive
Application.LoadLevelAdditiveAsync
18.3.4如何卸載AssetBundle
Unity提供了AssetBundle.Unload接口來卸載AssetBundle文件。
chap19腳本調(diào)試與優(yōu)化
Unity自3.0版本之后,開始支持使用MonoDevelop編輯器對腳本進(jìn)行調(diào)試,具體的調(diào)試方法如下:
1、啟動Unity應(yīng)用程序,按Ctrl+N組合鍵,新建一個空場景。
2、在Unity中,依次打開菜單欄中的Edit|Preferences|External Tool項(xiàng),彈出Unity Preferences對話框,將ExternalScript Editor設(shè)置為MonoDevelop(builtin)。
3、設(shè)置完成后,打開MonoDevelop腳本編輯器。在該編輯器中,依次打開菜單欄中的Tools|Options|Unity|Debugger項(xiàng),彈出如圖所示的調(diào)試設(shè)置對話框。
4、在Editor Location中設(shè)置Unity.exe文件所在的路徑,勾選Launch Unity automatically與Build project inMonoDevelop,單擊右下角的OK按鈕完成配置。
5、腳本調(diào)試是調(diào)試代碼的過程,為了調(diào)試方便,在Unity的Project界面中新建Count.cs文件,把該代碼綁定至Main Camera對象上。右擊該代碼文件,在彈出的菜單中選擇Sync MonoDevelop Project項(xiàng)。
6、用MonoDevelop打開Count.cs文件,為sum+=i該行代碼設(shè)置斷點(diǎn)(設(shè)置斷點(diǎn)只需要在該代碼行的行號前單擊即可設(shè)置),并在下拉框中選擇Debug模式。
7、在開啟Debug模式之前需要關(guān)閉Unity編輯器。開啟Debug模式可以單擊Debug按鈕也可以按F5鍵,開啟后可以看到Unity編輯器重新啟動,這就是剛剛勾選Launch Unity automatically的原因,它能在開啟Debug模式之后自動重新啟動Unity界面。單擊Play按鈕進(jìn)行測試。
8、單擊Count按鈕,MonoDevelop的狀態(tài)如圖所示。
9、從左下角的Locals視圖中可以知道,Count類綁定在了Main Camera上,并且i變量的結(jié)果與sum變量的結(jié)果都為0。
10、在實(shí)際項(xiàng)目中如果由于調(diào)試原因需要關(guān)閉Unity,則顯得不太實(shí)際。下面介紹另一種腳本調(diào)試的方法。打開MonoDevelop中的Run|Attach to Process,彈出圖所示的對話框。
11、此時選擇Unity的進(jìn)程(3592 Unity Editor),單擊右下角Attach按鈕,此時Unity Editor與MonoDevelop腳本編輯器已經(jīng)連接。返回至Unity Editor中,單擊Play按鈕進(jìn)行測試,單擊Game視圖中Count按鈕,此時MonoDevelop腳本編輯器的狀態(tài)如圖所示。
3個按鈕(從左到右)分別代表:
Step Over:調(diào)試時按照一行一行調(diào)試,單擊該按鈕一次執(zhí)行一行。
Step Into:如果當(dāng)前箭頭所指的代碼有函數(shù)的調(diào)用,則用StepInto進(jìn)入該函數(shù)進(jìn)行單步執(zhí)行。
Step Out:如果當(dāng)前箭頭所指向的代碼是在某一函數(shù)內(nèi),用它使函數(shù)運(yùn)行至返回處。
chap20跨平臺發(fā)布
20.2發(fā)布到Android平臺
在發(fā)布Android項(xiàng)目之前,開發(fā)人員需先下載并安裝JavaSDK和AndroidSDK。本書中所用的Java SDK為7.0版本,Android SDK為21.1版本。
20.2.1 Java SDK的環(huán)境配置
1.在桌面“我的電腦/計(jì)算機(jī)”圖標(biāo)上右擊,依次打開屬性|高級系統(tǒng)設(shè)置|環(huán)境變量選項(xiàng),進(jìn)而彈出“環(huán)境變量”配置對話框。
2.檢查系統(tǒng)變量下是否有JAVA_HOME、path、classpath這3個環(huán)境變量,如果沒有則需要新建這3個環(huán)境變量。
含義:
JAVA_HOME環(huán)境變量:其設(shè)置值就是jdk所在的安裝路徑
path環(huán)境變量:其設(shè)置值為%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
classpath環(huán)境變量:其設(shè)置值為.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar?
3.為了驗(yàn)證配置是否成功,可以打開系統(tǒng)的命令提示符,在DOS命令行狀態(tài)下輸入javac命令。
20.2.2 Android SDK的安裝與項(xiàng)目發(fā)布
1.確認(rèn)已經(jīng)完成Android SDK的安裝后,需要對Android SDK進(jìn)行環(huán)境變量的配置。
新建環(huán)境變量ANDROID_SDK_HOME,變量值輸入Android SDK所在的安裝路徑。
找到path環(huán)境變量:在變量值里添加兩個路徑:%ANDROID_SDK_HOME%\platform-tools與%ANDROID_SDK_HOME%\tools。
配置完上述的參數(shù)后,進(jìn)入命令提示符狀態(tài),輸入adb。
20.3 iOS平臺的發(fā)布
20.3.1發(fā)布前的準(zhǔn)備工作
需要Mac蘋果計(jì)算機(jī)以及iOS測試機(jī)(例如iPhone、iPod touch或iPad),并且在Mac計(jì)算機(jī)上安裝了Xcode開發(fā)工具,另外還需要一個注冊好的Apple蘋果開發(fā)者賬號,并且配置好相關(guān)的證書。
20.3.2發(fā)布iOS平臺的設(shè)置
20.3.3項(xiàng)目工程輸出與發(fā)布
20160226添加: http://pan.baidu.com/s/1G703W?密碼: trjc
http://wenku.baidu.com/link? url=UoWAJzM80ZwTOjU7PWrf8vrkByZDhObdvytPNkDTDkqxLuOKbCz2FriEIPrE10vOrBAUdWDUAA1rc4nHFM6yJHupg-1g9lyifb2ABhWt4JS
臺灣大宇資訊集團(tuán)原創(chuàng)制作
1995年7月首款作品DOS版發(fā)行。
仙劍奇?zhèn)b傳
仙劍奇?zhèn)b傳二
仙劍奇?zhèn)b傳三、仙劍奇?zhèn)b傳三外傳·問情篇
仙劍奇?zhèn)b傳四
仙劍奇?zhèn)b傳五、仙劍奇?zhèn)b轉(zhuǎn)五前傳
2004年被改編成同名電影。
仙劍之父:姚壯憲(姚仙)
仙劍二,單機(jī)游戲,于2003年1月上市
仙劍三,3D畫面在仙劍系列中首度出現(xiàn),2003年8月出品
仙劍三外傳,2004年冬天出品
仙劍四,單機(jī)游戲,2007年8月1日發(fā)售
仙劍五,單機(jī)游戲,于2011年7月上市
仙劍五前傳,單機(jī)游戲,于2013年1月上市
江西泰豪動漫職業(yè)學(xué)院畢業(yè)設(shè)計(jì)(論文) 龍建:炸彈人游戲的制作(2015.5.15) http://www.docin.com/p-1163127361.html 開發(fā)游戲類型 5種: 1.1.1動作游戲ACT 包括射擊游戲STG和格斗游戲FTG 1.1.2冒險(xiǎn)游戲AVG 1.1.3模擬游戲SIM或SLG 1.1.4角色扮演游戲RPG 1.1.5策略游戲 1.1.6休閑游戲
【
1997年,美國暴雪公司發(fā)布《Diablo》(暗黑破壞神),屬于RPG角色扮演游戲中的ARPG動作角色扮演游戲。
http://wenku.baidu.com/link?url=IaIRE6Cikfmc7vVO9oM0L6sUeJn2P_7Hp2JEQj7_lZahC007TMEDcIY7AT3AGQO0iVhOPxSv- 6qvr6aA7H5lJkWylGxRHIzgnzSLl5b41tG
論民間文化元素在電腦游戲創(chuàng)作中的運(yùn)用——以網(wǎng)絡(luò)游戲《暗黑破壞神》為例
http://www.docin.com/p-365976240.html
14個游戲類型:
ACT動作游戲
AVG冒險(xiǎn)游戲
FPS第一人稱視點(diǎn)射擊游戲
FTG格斗游戲
MUG音樂游戲
PUZ益智類游戲
RAC賽車游戲
RPG角色扮演游戲
RTS即時戰(zhàn)略游戲
SLG模擬/戰(zhàn)旗式戰(zhàn)略游戲
SPG體育運(yùn)動游戲
STG射擊游戲
TAB桌面游戲
ETC其他類型游戲
周慶明:暗黑破壞神2游戲分析(2015.5.18)
http://www.docin.com/p-1479595671.html
游戲名稱:暗黑破壞神2
游戲類型:動作RPG
游戲平臺:PC/MAC
游戲操控設(shè)備:鍵盤,鼠標(biāo)
游戲圖像技術(shù):3D
游戲玩家視角:60度傾斜
游戲操作:
功能|熱鍵
屬性窗口|A
物品窗口|I
組隊(duì)窗口|P
聊天記錄|M
任務(wù)列表|Q
幫助窗口|H
技能樹|T
快捷技能鍵|S
技能1|F1
……
技能8|F8
選擇上一個技能|Mouse Wheel Up
選擇下一個技能|Mouse Wheel Down
顯示快捷物品欄|~
使用快捷物品欄1|1
……
使用快捷物品欄4|4
聊天|Enter
奔跑|Ctrl
切換 走/跑|R
停止|Shift
顯示物品|Alt
顯示肖像|Z
自動地圖|TAB
】? 1.4開發(fā)環(huán)境 32位Win7+Unity4.3.0+C#+VS2012 2.3添加美術(shù)資源 把用到的UI資源和場景背景以及敵機(jī)和主角戰(zhàn)機(jī)等等通過TexturePackerGUI工具打包成圖集,然后導(dǎo)入工程中。 把工程中圖集的參數(shù)改成和圖集一樣的分辨率,Format改成ARGB 16bit。 2.5添加音樂音效 游戲按鈕點(diǎn)擊音效的表現(xiàn),子彈發(fā)射的音效表現(xiàn),子彈和敵機(jī)爆炸的音效表現(xiàn)以及游戲音樂表現(xiàn)。
1、主角獲得道具 public class Daoju:MonoBehaviour{ //道具類型 public enum leixing { zhadan, HP, xiezi, weili, } public leixing myleixing; //如果主角進(jìn)入觸發(fā)器調(diào)用主角方法獲得道具 void OnTriggerEnter(Collider other){ if(other.collider.tag=="Player") { other.GetComponent<Player>().Daoju(myleixing); Destroy(gameObject); }
} }
相機(jī): public class MyCamera : MonoBehaviour ? {? //移動速度 public float sp=1;? //主角 public Transform play; //相機(jī)移動位置限制 public float maxX=19.5f,minX=3.5f,maxZ=21,minZ=2;? //相機(jī)離主角高度距離 float distance=5;
// Use this for initialization? void Start () ? {? ? transform.position=play.position+new Vector3(0,distance,0);? }? void LateUpdate() {?
}? void V() ? {?
}? }
UI功能: //狀態(tài),主要用來按暫停鍵的時候暫停游戲 public enum UIzhuangtai { kai, shezhi, zhangting, siwang, yunxing } public UIzhuangtai myUIzhuangtai{get;set;} //各種按鈕 public GameObject kaishi,shezi,tuichu,fanhui,shuxing,tuichu_1,zhangting; //開始,設(shè)置,屬性面板 GameObject kaishigame,shezigame,shuxinggame; //燈光 public Light light; //用來控制背景音樂音量 AudioSource audio; //屬性UI [HideInInspector] public UILabel HP,weili,zhadan,xiezi,defeng,guaiwu; //小地圖相機(jī) public Camera xiaoditecamera;? Transform move;
UICheckbox isditu,isyinxiao; public bool yinxiao { get; set; } UISlider dengguang,yingyin,beijing,xiangji; public UILabel guankalabel;
void Awake() { kaishigame= transform.Find("開始菜單").gameObject; shezigame= transform.Find("設(shè)置").gameObject; isditu=shezigame.transform.Find("小地圖").GetComponent<UICheckbox>(); isyinxiao=shezigame.transform.Find("音效").GetComponent<UICheckbox>(); dengguang=shezigame.transform.Find("燈光").GetComponent<UISlider>(); shuxing= transform.Find("屬性").gameObject; ? xiezi=shuxing.transform.Find("鞋子").GetComponent<UILabel>(); } 炸彈: //上下左右四個方向放置火焰 List<Transform> shang=new List<Transform>(); List<Transform> xia=new List<Transform>(); List<Transform> zuo=new List<Transform>(); List<Transform> you=new List<Transform>(); //自己的位置 public Transform ray; //爆炸音效 public AudioClip baozha; //火焰預(yù)制件 public GameObject h;
? 數(shù)據(jù)驅(qū)動式游戲開發(fā)管道
Unity編輯器及其工作流程:最好的~。
引擎功能
渲染系統(tǒng):多線程渲染,延遲渲染,全屏后處理,遮擋剔除,LOD
燈光系統(tǒng):延遲燈光處理,實(shí)時陰影,SSAO,體積光,光照貼圖,HDR,Light Probes
輸入控制:鍵盤、鼠標(biāo)、360手柄,手機(jī)觸摸輸入
地形系統(tǒng):刷地形,刷紋理,樹,草,石塊,水,河流,道路
物理系統(tǒng)(PhysX):剛體,鉸鏈,軟物體,玩偶,汽車物理模型,服裝(物理)模擬
粒子特效:煙、霧、火、爆炸、雨、雪、水、瀑布
音響系統(tǒng):FMOD,WAV,MP3
腳本系統(tǒng):JavaScript,C#,Boo
尋路系統(tǒng):NavMesh
網(wǎng)路支持:Real-time networking、Web connectivity、Web browser integration、Backend connectivity
性能分析系統(tǒng):CPU & GPU Profiler
編輯器功能
資源集成及其管理:Prefab,游戲物體組合
場景建模
資源管道
資源商店
資源管理服務(wù)器(Asset Server+Cache Server)
編輯器的拓展(plug-in)
性能分析
基于Unity新UI系統(tǒng)的游戲界面開發(fā)實(shí)現(xiàn) 2、Unity新UI 2014年11月,Unity4.6正式版推出了新的UI系統(tǒng)。 其主要特點(diǎn)包括: (1)不僅可以在屏幕空間中創(chuàng)建透視或非透視的UI,而且也可以在世界空間中輕松地創(chuàng)建交互。 (2)布局系統(tǒng)不僅支持與邊、角點(diǎn)的對齊,而且支持與父容器中自定義點(diǎn)的對齊。 (3)可以基于圖片、文字以及掩碼和效果等構(gòu)建自定義空間。所有的圖形組件都完全支持自定義的材質(zhì)和光線。? (4)內(nèi)置了很多為跨平臺發(fā)布而設(shè)計(jì)的控件,包括按鈕、滑動條、滾動視圖、輸入?yún)^(qū)域等。支持觸摸控制,以及鼠標(biāo)、鍵盤、搖桿等輸入設(shè)備。 (5)UI系統(tǒng)中集成了Unity的動畫系統(tǒng)。可以使用狀態(tài)機(jī)或者其他動畫特性來控制UI元素和面板。 (6)UI系統(tǒng)是可擴(kuò)展的。 (7)使用C#中的delegate委托機(jī)制,可以很容易地在監(jiān)視視圖中建立UI控件的事件回調(diào)函數(shù)。 3、UI控件 3.1Canvas畫布 畫布組件表示一個擺放和渲染所有UI元素的抽象平面區(qū)域,所有UI元素必須是一個擁有畫布組件的游戲?qū)ο蟮淖訉ο蟆?畫布有三種渲染模式: (1)屏幕空間覆蓋:在屏幕空間中將UI渲染在場景之上。調(diào)整屏幕大小或改變屏幕分辨率,則畫布會自動改變大小以進(jìn)行匹配。 (2)屏幕空間相機(jī):類似于屏幕空間覆蓋,但畫布由一個特定的相機(jī)渲染,相機(jī)的設(shè)置會影響UI。 (3)世界空間:使畫布像場景中的其他對象一樣被渲染。 3.2基本布局 本節(jié)介紹如何確定UI元素相對于畫布的位置以及UI元素之間的相對位置。 3.2.1 Rect Tool矩形工具 在Unity中,每一個UI元素都用一個矩形來表示,這樣可以方便地進(jìn)行布局。在場景視圖中可以使用工具欄中的矩形工具按鈕來操縱該矩形。 矩形工具不僅可以用于調(diào)整UI和Unity的2D對象,甚至還可以用來操作3D對象。 3.2.2Rect Transform矩形變換 矩形變換是為所有的UI元素而設(shè)計(jì)的一個新的transform組件。 矩形變換是除了具有普通transform組件的position、rotation和scale屬性之外,還增加了用來表示矩形大小的width和height。 3.2.2.1 Pivot中樞點(diǎn) UI元素的所有變換是圍繞中樞點(diǎn)來定義的,因此中樞點(diǎn)的位置會影響UI元素的旋轉(zhuǎn)、定位和縮放的結(jié)果。比如,當(dāng)設(shè)置UI元素的位置時,實(shí)際上設(shè)置的是中樞點(diǎn)的位置;對UI元素進(jìn)行旋轉(zhuǎn)時,圍繞的是中樞點(diǎn)。 3.2.2.2Anchors錨點(diǎn) 矩形變換組件包含一個稱為錨點(diǎn)的布局概念。 3.3可視控件 3.3.1Panel面板 主要的功能就是一個“容器”。 3.3.2Text文本 3.3.3Image圖片 在使用該控件時,要求圖片的紋理類型必須是Sprite(2D and UI)。 Sliced類型表示圖片需要在Sprite Editor中進(jìn)行“九宮格”切片后才可以應(yīng)用。 3.4交互控件 3.4.1Button按鈕 3.4.2Slider滑動條
?
1.3.2手機(jī)硬件的多樣性
Apple處理器A7是2013年9月11日發(fā)布的。
iPhone5s率先采用A7處理器。
A7處理器,采用的是64位構(gòu)架。
ARM架構(gòu)稱作進(jìn)階精簡指令集機(jī)器。
4.7建立“開始”按鈕 4.7.1建立按鈕本體 相對于自適應(yīng)分辨率的設(shè)置,錨點(diǎn)和支點(diǎn)的理解更為重要。 注意:在新的UI系統(tǒng)中可以輕松地控制UI元素的層,Unity默認(rèn)渲染Canvas內(nèi)的第一個項(xiàng)目,整個渲染從上至下,因此Canvas中的最后一個物體被最后渲染,最后渲染的物體就會顯示在整個視圖的最頂層,而之前被渲染的UI元素依照順序進(jìn)行相應(yīng)的分層。 4.7.2控制按鈕文字組件 4.7.3將按鈕設(shè)置為圖形 將StartGame圖形使用鼠標(biāo)左鍵拖曳至按鈕元素的Source Image通道中 4.9按鈕與觸發(fā)事件JavaScript語言腳本 按鈕按下時需要調(diào)用腳本中的函數(shù)來實(shí)現(xiàn)相應(yīng)的功能。 UiStart.js #pragma strict function OnClick(){ print('go'); } 將這個腳本掛在空物體GUI上,GUI拖曳給“On Click ()”一欄中的空置處,接著打開“On Click ()”一欄中的No Function選項(xiàng),在此選項(xiàng)中選擇腳本UiStart.js的OnClick函數(shù)。
4.10按鈕與觸發(fā)事件C#語言版本
注意:C#函數(shù)必須加入public,這樣UI才能夠識別。 chap5 使用Unity 3D建立次世代級別的烘焙環(huán)境
5.1在3D軟件中制作針對手游的場景模型
5.1.1手機(jī)游戲場景應(yīng)該怎樣建立
1、關(guān)卡類型的設(shè)置
殺戮性質(zhì)關(guān)卡、拯救類型關(guān)卡、防御類型關(guān)卡
2、戰(zhàn)斗角度的設(shè)置
3、場景中的特別效果
5.1.2從圖片建立一個建筑物
5.1.3讓多個建筑物之間形成關(guān)聯(lián)
5.1.4使用不同的元素構(gòu)架整體場景
5.1.5面數(shù)的分配與貼圖的大小
場景面數(shù)控制在3W四邊面左右就可以流暢運(yùn)行。
貼圖的大小與數(shù)量直接影響游戲運(yùn)行內(nèi)存的占用。手機(jī)游戲盡量不要使用2048以上的貼圖,控制貼圖大小為正方形,類似512*512;1024*1024這樣的尺寸。
單一游戲場景中512以上尺寸的貼圖盡量控制在10張左右,如果使用1024以上的貼圖盡量控制在6張左右,小型貼圖例如256、128尺寸的圖片可以配合大型貼圖使用10張左右。
5.2導(dǎo)入U(xiǎn)nity3D并設(shè)置
5.2.1如何將模型分類
游戲中大致的模型可以分為兩類:固定模型和動畫模型。
5.2.2合并動畫專用模型
chap9 利用Unity 3D構(gòu)建角色控制系統(tǒng) 9.1傳統(tǒng)第三人稱虛擬搖桿控制系統(tǒng) 9.1.1導(dǎo)入U(xiǎn)nity官方腳本包 在觸碰屏上建立角色操作系統(tǒng)與在傳統(tǒng)平臺上相比最大區(qū)別是: 需要虛擬搖桿的支持。首先在Unity中導(dǎo)入官方默認(rèn)的Standard Assert(Mobile),在Assets菜單中Import Package子菜單中單擊Standard Assert(Mobile)按鈕,導(dǎo)入后可以在項(xiàng)目視圖中看到。 9.2利用插件構(gòu)建角色分屏操作系統(tǒng) 9.2.1在Unity中導(dǎo)入分屏插件
總結(jié)
以上是生活随笔為你收集整理的unity4.x从入门到精通、Unity 5.x游戏开发指南读书摘要(2015-4-21 12:10、2015-12-28 22:12)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hapi和typescript构建项目(
- 下一篇: superagent返回结果乱码