日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

unity4.x从入门到精通、Unity 5.x游戏开发指南读书摘要(2015-4-21 12:10、2015-12-28 22:12)

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unity4.x从入门到精通、Unity 5.x游戏开发指南读书摘要(2015-4-21 12:10、2015-12-28 22:12) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
 20160330添加:
Unity3d開發VR第一講---概述 http://www.docin.com/p-1444636517.html Unity對某些虛擬現實設備提供了內置支持。 Unity從5.3版本開始專注于虛擬現實Oculus家族設備,特別是Oculus Rift Development Kit 2(DK2)和消費版Gear VR。 Unity5.3版本不再支持note4。 Unity從5.3開始內置了VR接口。 需要安裝Oculus runtime 0.8 installed。下載地址www.vrzhinan.com 配置Unity支持VR 打開Edit|Project Settings|Player|Other Settings|Rendering 在監視面板中勾選Other Setting中的Virtual Reality Supported using UnityEngine; using UnityEngine.VR;//VR包 public class ToggleVR:MonoBehaviour { private void Update(){ //當鍵盤按下V,則切換到VR狀態 if(Input.GetKeyDown(KeyCode.V)){ VRSettings.enabled=|VRSettings.enabled; } } } 當勾選了Virtual Reality Supported后,并且DK2已經連接到電腦,在Unity中運行程序的時候,程序就會在DK2中顯示啦。 自從Unity5.3版本不支持VR后,并不需要為了VR創建兩個攝像機了。并且Unity會自動為場景中資源進行VR優化。比如遮擋剔除、陰影渲染、紋理渲染等。 VR最先讓人頭痛的就是眩暈,所以設備的頻率一定要配置正確。 DK2必須配置成75fps。Gear VR必須是60fps。 屏幕分辨率也是一定要達到要求才行的。 對于DK2設備的分辨率為1920*1080大小的75fps。若是商用的Oculus Rift(CV1)則分辨率為2130*1200,大小90fps。 20160225添加: 星球項目換新的UI,選角色界面模型換回圖片
4個角色,每個角色有待機、響應、選中3種狀態。
用Text代替TextMesh顯示龍幣、積分
用Image代替Sprite顯示龍幣積分底圖
第一個場景的層級管理:
1、層次視圖中選中TipInfoCamera
Layer選擇TipInfo
Culling Mask選中TipInfo,不要選中Default、UI、Role
在Camera Preview可以看到這個攝像機僅僅照射TipInfo。
Roles節點下有Role1、Role2、Role3、Role4四個節點
Role1下TipInfo節點的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可以看到這個攝像機僅僅照射第2~4個角色模型。
3、Role1Camera
Layer選擇Role1
Culling Mask選中Role1,不要選中Default、UI、TipInfo
在Camera Preview可以看到這個攝像機僅僅照射第1個角色模型。
4、Role4Camera
Layer選擇Role4
Culling Mask選中Role4,不要選中Default、UI、TipInfo
在Camera Preview可以看到這個攝像機僅僅照射第4個角色攻擊狀態的模型。
坦克項目UGUI經驗總結2015-10-9 10:44
UGUI動畫變遷
第2、3版坦克選擇UI進場離場動畫:
12個坦克節點,每個節點掛1個Animation組件,Animations組件的Size屬性填2,第0、1個元素分別填進場、離場動畫的anim文件,Play Automatically選擇打鉤;第一個坦克節點還掛1個坦克UI控制腳本,處理OnAnimEventTankUILeave事件;動畫事件在Animation視圖中編輯、添加、刪除。
坦克結算UI:
針對每個MVP節點在項目視圖存放anim文件的路徑下創建1個Animator Controller,命名為A1MVPAnim等等,每個MVP節點掛1個Animator組件, Controller填A1MVPAnim等等,在狀態機上拖進場和離場的anim文件進來,掛一個坦克結算UI控制腳本。
Unity 2D游戲開發快速入門第一章
http://www.docin.com/p-895914135.html
RangTanks(狂怒坦克)
Win7+Unity4.5.3
在2013年發布4.3版本時,就開始提供對制作2D游戲的支持了。
Texture Type:表示圖片的類型。對于2D游戲項目,系統默認設置為Sprite(2D\uGUI);對于3D游戲項目,默認設置 為Texture。
Filter:此屬性一共有3個選項:Point、Bilinear、Trilinear。
Max Size:表示圖片的最大尺寸。圖片Platform實際尺寸是397*221,屬性中最接近397的是512。
Format:表示圖片的格式。
http://www.docin.com/p-895914134.html UGUI全面實踐教程
http://www.docin.com/p-1155996353.html
NGUI全面實踐教程
http://www.docin.com/p-1117662568.html
NGUI發布于2012年初,發布者從版本1.08開始持續不斷的將NGUI插件更新到現在的3.8.1版本(2015年3月23日的數據)。
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全面實踐教程
http://www.docin.com/p-1155996353.html
chap7官方示例及其簡要說明
7.7實時紋理繪制示例——RenderTexture
Chap5控制動畫
——Unity開發實戰這一章可讀性很差,略過
Mecanim
Avatar
http://edu.51cto.com/lesson/id-46981.html
3個核心控件:Text、Image、Button
小雪花是Anchor(錨點)
小圓點是Pivot(中心點、重心點),0~1表示沒有離開控件本身
中心點和錨點重合:偏移量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發布
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編輯器相關的腳本)、
Interaction(與交互功能相關的腳本)、
Internal(間接發揮作用的腳本)、
Tweening(與補間動畫功能相關的腳本)、
UI(與UI功能相關的腳本)。
高雪峰:Unity 3D NGUI 實戰教程
http://wenku.baidu.com/view/ba880d8252d380eb63946d77.html?from=search
chap1初始NGUI
1.1游戲UI開發介紹
1.2什么是NGUI
chap2 NGUI基礎
2.1導入NGUI插件
2.1.1NGUI版本介紹
2.1.2NGUI的下載和購買
2.1.3導入NGUI插件應用
2.1.4導入常見問題
2.2認識基本的UI資源
2.2.1什么是UI精靈(Sprite)
2.2.2什么是UI圖集(Atlas)
2.2.3什么是UI貼圖(Texture)
2.2.4什么是UI標簽(Label)
2.2.5什么是UI字體(Font)
2.3制作第一個UI圖集
2.3.1學會解剖UI的資源結構
2.3.2學會導入切好的美術資源
2.3.3用Atlas Maker制作圖集
2.4制作第一個UI字體
2.4.1為什么要制作UI字體
2.4.2靜態字體和動態字體
2.4.3制作靜態字體介紹
2.4.4制作動態字體介紹
2.5創建第一個UI
2.5.1創建一個2D UI
2.5.2創建一個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強化對深度的理解
2.7.2小心相機的深度
chap3核心組件
3.1什么是UI控件
3.2制作精靈(UISprite)
3.2.1怎樣判斷是否應該使用精靈
3.2.2創建精靈
3.2.3Sprite組件的設置
3.3制作標簽(Label)
3.3.1怎樣判斷是否應該使用標簽
3.3.2創建標簽
3.3.3Label的文字設置
3.4制作UI紋理(UITexture)
3.4.1什么情況下使用UITexture
3.4.2創建紋理
3.4.3紋理的設置
3.5制作按鈕(Button)
3.6制作進度條(UISlider)
3.7制作輸入框(Input)
3.8制作滾動視圖(ScrollView)
3.9制作復選框(Toggle)
3.10制作下拉菜單(PopupList)
chap4 UI動畫
4.1常見的兩種UI動畫介紹
4.1.1要區分UI動畫和UI特效兩個概念
4.1.2關于Tween動畫
4.1.3關于Animation動畫
4.2漸隱漸現動畫(透明度動畫)
4.3顏色變化動畫(變色動畫)
4.4位置變化動畫(位移動畫)
4.5旋轉變化動畫(旋轉動畫)
4.6大小變化動畫(放縮動畫)
4.7Tween動畫總結
4.8動畫控制組件UIPlayTween
4.8動畫控制組件UIPlayAnimation
chap5其他組件
chap6 NGUI實戰進階
chap7用代碼深度控制UI
chap8實用案例演示
chap9常見疑難問題解答 圖集Atlas
將多張零散的圖片融合成為一張圖,低碳環保。
字體Font
動態字體
使用標準的字體文件.TTF。
圖集字體
將字體弄到圖集里,根據坐標靜態調用。
好處可以使用各種效果,以及聊天表情。
面板Panel
用于組織界面元素。每一個面板,都會讓層從0開始。
NGUI
Panel常規面板
常規
靜態
切割
選項卡要玩家單獨實現。
文本欄Label
用于顯示文本信息
NGUI
顏色
圖片:需要自定義輸入內容
陰影
輪廓
按鈕Buton
NGUI
舊版本采用消息機制,新版本使用了委托的方式
普通按鈕
圖片按鈕
Tween組件
在兩個值之間隨時間進行漸變,用于實現一些伴隨時間的效果。
比如淡入、淡出、移動、旋轉、放大縮小等。
NGUI
iTween
NGUI:多個物體可以屬于一個層。層一定要弄好,不能混亂。對齊方式一定要設定好,否則大亂。
統一的層管理,我們約定:基礎背景0~1層,一級面板在2層,面板元素3~6層,二級面板7~10層,不能超過3級面板。 Unity最火十大插件20130130
1、2D Toolkit 1.90 Final
能夠讓開發者在Unity中進行2D開發。
能夠完全支持Unity4,它對于2.5D場景的開發和建立也十分有效。
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系統的支持,性能更加流暢。
6、Tile Based Map and Nav 2.8b
7、FX Maker 1.27
是一款制作特效的工具,它專為移動操作系統做了優化。
包括300種Prefab特效,300種紋理結構、100種網格、100種曲線效果。
由開發商IGSoft提供。
8、Toon shader 1.5
是一款卡通著色器,適用于iOS系統。
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講:
創建角色資源的三個主要步驟:
建模、骨骼設置、蒙皮
自動角色系統或角色產生軟件:
Poser,Makehuman or Mixamo
Unity中,標準立方體盒子是1米
正常角色的高度是2米
第62講
http://www.manew.com/thread-1209-1-1.html
單擊模型標簽,改變縮放系數,點擊實施按鈕
人類類型角色都有類似的骨骼結構:軀干、頭部、四肢
骨骼的創建和命名時要遵循一定規范
創建角色的Avatar
分析導入的角色資源的骨骼結構,其過程是與Mecanim中已有的簡化的標準人類骨骼進行對比
Rig標簽
動畫類型選擇Hunmanoid


Unity4.2.0打開Unity4.6.4創建的工程會出現以下提示:
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】


打開一個舊版本的工程會出現提示:
Upgrading project
Upgrading project
After upgrading the project,you can not open the project with older versions of Unity anymore.
【Continue】【Quit】
點擊【Continue】會出現提示:
Project reimport required
【Reimport Project】【Quit】


Unity3D光照貼圖烘焙知識
http://www.docin.com/p-1046168380.html
Unity在4.x版本里使用光照烘焙的方法,采用的是Autodesk的Beast,Beast只能烘焙靜態的光照貼圖,而不支持動態光照。
使用Beast的工作流程是:先建造一個場景,然后在場景中布置各種光源,進而點擊Bake操作鍵,接下來整個烘焙過程可能需要幾小時。
Unity 5.0中會舍棄掉Beast,取而代之的是PowerVR Ray Tracing和Enlighten這兩種方案的結合。PowerVR Ray Tracing的特點是不需要烘焙過程,速度非常快,但是效果不是非常理想。Enlighten的特點是需要一定的烘焙過程,但是效果非常好。PowerVR Ray Tracing負責編輯器中的編輯模式,即所見即所得的模式;而Enlighten會負責游戲內的實時渲染。


http://unity3d.com/cn/unity/whats-new/unity-3.5
Unity3.5新特性與改進:
1、忍者飛鏢粒子系統
2、內置尋路
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的修復。
http://unity3d.com/cn/unity/whats-new/unity-4.0
Unity 4.0新的強大的特性:
1、Mecanim,驅動角色或物件的新的動畫系統
2、所有平臺的實時陰影
3、DX11渲染
4、忍者飛鏢粒子系統更新了世界碰撞功能
5、Adobe Flash和Linux兩個新平臺
6、跨平臺動態字體
http://unity3d.com/cn/unity/whats-new/unity-4.1
Unity 4.1帶來了如下新特性:
1、更強大的內存分析器
2、AirPlay支持
3、Mecanim更新
4、Shader更新
5、移動平臺支持Allegorithmic Substances
http://unity3d.com/cn/unity/whats-new/unity-4.1.5
Unity 4.1.5帶來一些修正。
發行說明:
修正Windows上MonoDevelop的問題
已知問題:
Win8上MonoDevelop作為默認編輯器啟動時不能自動打開腳本
http://unity3d.com/cn/unity/whats-new/unity-4.6.2
Unity 4.6.2帶來一些改進和修正
發行說明:
特性:
使用il2cpp支持iOS 64位
變更:
不再支持Flash目標編譯。
改進:
修復:
iOS:修復Xcode6.2支持
http://unity3d.com/cn/unity/whats-new/unity-4.6.4
Unity 4.6.4帶來一些改進和修正
發行說明:
特性:
Unity免費版中支持Intel實感插件
改進:
iOS:支持Xcode6.3
變更:
應蘋果要求,支持的最低iOS版本升為5.1
修復:
http://unity3d.com/cn/unity/whats-new/unity-5.0
Unity 5.0包含強大的新特性:
1、基于物理的標準著色器
2、實時全局照明
3、混音器
4、HDR反射探頭增強視覺保真度
5、PhysX 3.3帶來了3D物理方面極大的性能提升
6、主要更新了動畫系統
7、WebGL預覽
http://unity3d.com/cn/unity/whats-new/unity-5.0.1
Unity 5.0.1帶來新特性、一些改進、變更和許多修復。
發行說明:
改進:
Android:手柄輸入優化,修復在一些較老設備上變慢的問題
變更:
修復:
iOS:增加Xcode6.3兼容性
http://unity3d.com/cn/unity/whats-new/unity-5.0.2
Unity 5.0.2帶來新特性、一些改進、少許變更和大量修復。
發行說明:
特性:
改進:
Editor:Minimum API Level列表增加Android 5.0 and 5.1
變更:
修復:
iOS:增加Xcode6.3建立并運行的支持

羅盛譽:Unity 5.x游戲開發指南
http://vdisk.weibo.com/s/e41M8kW4cptg
chap4 3D基礎知識
4.1 Camera攝像機
4.1.1攝像機參數
攝像機參數
參數|說明
Clear Flags|清除標記,決定屏幕的哪部分被清除。該項一般用于使用多臺攝像機來描繪不同游戲對象的情況。
Depth only:深度相機,只渲染采集到的畫面。
Culling Mask|剔除遮罩。攝像機將看到勾選的層,忽略未被勾選的層。
Projection|投射方式。
Perspective:透視。攝像機以正交方式渲染畫面,拍攝區域是一個截錐體。
Orthographic:正交。攝像機以正交方式渲染畫面,拍攝區域是一個長方體。
Depth|該項用于控制多個攝像機的渲染優先級。數值越大優先級越高。優先級高的攝像機拍攝的畫面將覆蓋在優先級低的攝像機的畫面上。
Rendering Path|渲染路徑。該項用于指定攝像機的渲染方法。
Use Player Setting:攝像機將使用設置的渲染方法,即Project Settings下Player中的設置。
Target Texture|目標紋理。將攝像機畫面輸出到一張貼圖而不是屏幕,可用于實現畫中畫或者畫面特效。
Occlusion Culling|是否剔除物體背向攝像機的部分。
HDR|高動態光照渲染
4.1.2攝像機投射
4.2 3D模型
4.2.1 Mesh網格模型
4.2.2 Texture貼圖
4.2.3 Material材質
4.2.4對應組件
4.2.5骨骼動畫
4.3小結
4.4習題
chap6 創建人物
6.1 Mecanim系統
Mecanim系統是Unity在4.0版本開始引入的新動畫系統,它提供了以下幾種功能。
為人形角色提供了簡單的設置和制作流程,包括Avatar的創建和對Muscle definitions肌肉定義的調節。
動畫的復用性。主要通過動畫重定向實現,可以非常方便地把動畫從一個角色模型應用到具有相同骨骼結構的其他角色模型上。
通過可視化的工具可以方便地創建、預覽動畫或者管理不同狀態的切換。
身體邏輯,如下半身在執行跑步動作的同時,上半身在執行開槍動作。
一般來說,整個人物的創建分為以下3個階段。
資源準備和導入階段。
狀態機階段。
腳本階段。
6.2 導入模型
6.2.1模型導入設置
6.2.2 Avatar的設置
6.3狀態機
6.3.1 Animator
6.3.2添加碰撞體
6.3.3添加攝像機
6.3.4動作混合與控制
6.4反向動力學
6.5人體動畫重定向
6.6小結
6.7習題
chap9用戶界面
Unity中的UI的發展從最早的OnGUI系統,到之后EzGUI和NGUI兩個插件的階段。現在我們有了最新的官方的uGUI系統,它借鑒了NGUI的很多設計,例如NGUI中所有的UI元素都放在UIRoot根節點下,類似地,uGUI中的所有元素都放置在Canvas畫布下。 9.1Sprite精靈
精靈是UI以及Unity 2D的基本元素。在UI系統中,所有圖片的顯示都必須通過精靈。
如果建立工程時選擇的是2D工程,那么導入的所有圖片會自動設置為精靈;而如果是3D,那么需要對圖片的導入設置進行更改。
9.1.1圖片設置為精靈
在監視窗口中將紋理類型設置為Sprite(2D and UI),并點擊窗口右下角的Apply按鈕。
9.1.2圖片切割為多個精靈
當精靈模式為Single時,表明整張圖片將作為一個精靈;當精靈模式為Multiple時,表明整張圖片包含多個精靈。我們需要圖片進行切割。
9.1.3設置Border邊界
9.1.4Pivot錨點
Pivot錨點在精靈編輯器界面以藍色空心圓鈕表示。
9.2Canvas畫布
Canvas實際上是一個游戲對象上綁定了Canvas組件。所有UI元素都必須是Canvas的子對象。
9.2.1創建畫布
9.2.2畫布參數
第一個參數渲染模式有3種:
1.屏幕空間-覆蓋模式的畫布會填滿整個屏幕空間,并將畫布下的所有UI元素置于屏幕的最上層,或者說畫布的畫面永遠覆蓋其他普通3D畫面。如果屏幕尺寸被改變,畫布將自動改變尺寸來匹配屏幕。
Pixel Perfect:使UI元素像素對應,效果就是邊緣清晰不模糊。
Sort Layer:用以指明畫布的深度。
2.屏幕空間-攝像機模式和屏幕空間-覆蓋模式相似。不同的是,在該模式下,畫布會被放置在指定攝像機的前方。
Pixel Perfect:只有RenderMode為Screen類型時才有的選項。使UI元素像素對應,效果就是邊緣清晰不模糊。
屏幕空間-攝像機模式比屏幕空間-覆蓋模式多了下面幾個參數。
Render Camera:攝像機。
Plane Distance:畫布平面距離攝像機的距離。
Sorting Layer:用以指明畫布的深度。
Order in Layer:在相同Sorting Layer下的畫布顯示先后順序。數字越高,顯示的優先級也就越高。
3.世界空間模式。在此渲染模式下,畫布被視作與場景中其他普通游戲對象性質相同的類似一張面片的對象。畫布的尺寸可以通過Rect Transform設置,所有UI元素可能位于普通3D物體的前面或者后面顯示。當UI為場景的一部分時,可使用這個模式。
9.3 Image圖片
點擊導航菜單欄|GameObject|UI|Image導航欄,創建一個Image元素。
Rect Transform:所有UI元素都是以矩形來表現的。
RectTransform是繼承自Transform的一個組件,是所有UI元素都具有也必須具有的組件。
一共有9種錨點(Anchor)。當選定一種錨點后,該錨點為UI元素的坐標原點。
縮放元素要用width和height,而不用scale,因為scale會產生很多影響,例如字體的大小等。
選擇“img01”的圖片,并點擊Texture Type欄的選擇條選擇Sprite。
Sprite精靈是所有UI和Unity 2D所使用的圖片導入格式。
Image的參數
參數|說明
Source Image|原圖,指定顯示的圖片
Color|顏色,設置圖片的疊加顏色,默認設置為白色,顯示與原圖一致
Material|材質,可以指定自定義的材質,默認留空即可
Image Type|顯示的類型,有簡單、切片、磚塊、填充4種類型
Preserve Aspect|簡單、填充類型特有參數,是否保留精靈的原圖形,而不進行自動剔除
Set Native Size|點擊該按鈕使顯示與原圖尺寸對應
// 填充類型
public void SetRage(int Heroindex,float Rage)
{
Image img=m_ImageWeapon2[Heroindex].GetComponent<Image>();
img.fillAmount=Rage;
}
9.5 Text文本
直接在文本組件的Text參數中填文本即可。
所有UI元素都可以添加輪廓及陰影效果,這兩個效果也被Text元素所經常使用。
9.5.2添加陰影
9.5.3添加輪廓
chap15導航系統
15.1實現導航系統
15.1.1建立場景
15.1.2設置NavMesh
15.1.3烘焙
15.1.4設置導航代理
15.2障礙物
15.3分離網格鏈接
15.4小結
15.5習題
chap15導航系統
導航系統(navigation system)可以讓人物在場景里智能地移動、繞過障礙等。
導航系統用NavMesh來解析環境。
15.1實現導航系統
本節首先創建場景并烘焙導航網絡,接著創建導航代理,以實現讓角色繞過重重障礙到達終點的功能。
chap19 2D游戲基礎
19.1正交攝像機
19.2精靈
19.2.1精靈實現
19.2.2調整精靈尺寸
19.2.3精靈渲染器
19.2.4圖片導入設置
19.2.5精靈編輯
19.2.6精靈圖集
19.3 2D物理系統
19.3.1剛體
19.3.2碰撞體
19.3.3 Joint 2D
19.3.4 Constant Force 2D
19.3.5 Effector 2D
19.4小結
19.5習題
20150714添加:
Unity3d資源反編譯(DisUnity) v0.3.3 官方最新版
http://www.cr173.com/soft/97114.html
——經測試,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進行平臺無關的.NET開發
http://wenku.baidu.com/link?url=DbNijkKcqJGeXvyJfaVUqcnYMDZOQovpNdqjrtIsrM3WPMOaegr9B779rtxrV6MowVodeAYFje1HSjW14kauWBpFOYmD_SRVXTpKwsJxXGG
CLI公共語言基礎結構Infrastruction
.NET的平臺無關性
微軟公司自己不提供.NET在Mac、Linux等平臺下的安裝包。
這兩份規范是:
ECMA-334定義了C#編程語言的語法和語義;
ECMA-335定義了許多.NET平臺的細節,統稱為CLI。
ECMA-335規范分為6個部分:
部分1:架構
部分2:元數據
部分3:公共中間語言CIL
部分4:類庫
部分5:二進制格式
部分6:附件
除了微軟的CLR、Microsoft Silverlight和Microsoft .NET Compact Framework之外,還有另外兩種主流的CLI實現:
Mono、Portable .NET。
Mono是與C# 2.0/NET2.0相兼容的。
Mono是還沒有完全與C# 3.0或NET3.0/3.5相兼容的。
許多C# 3.0的語言特性已經是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發布相同,Mono也提供了多種托管的編譯器:
mcs/gmcs,C#編譯器
vbnc,Mono Visual Basic編譯器
booc,Boo語言編譯器
ilasm/ilasm2,Mono CIL編譯器
Mono項目的第一個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#開發Android應用實戰 使用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協議的支持;主要用于為System.Data內的 System.Data.SqlClient提供支持
Mono.Security.dll,加密API
mscorlib.dll,Silverlight
OpenTK.dll,OpenGL/OpenAL面向對象API,可對其進行擴展以提供Android設備支持
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中所呈現的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設備上的Mono for Android。下面將深入研究這三個平臺。
15.1.1 Mono for Android 默認情況下項目包括mscorlib、System、System.Core、System.Xml和System.Xml.Linq程序集。除這些程序集外,項目還包括了Mono.Android程序集,而該程序集則包含了Android API的所有綁定。
15.1.2 MonoTouch
MonoTouch于2009年發布,它是一組允許.NET開發人員針對iPhone和iPod Touch進行開發的工具。
不同之處是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。這兩個程序集是特定于手機的API。應用程序包括的另一個程序集是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復制到D:\android-sdk-windows\tools即可

Unity5.1.1
iOS設置
Target iOS Version
6.0
7.0
7.1
8.0
8.1
Android設置
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運行內存,16.00GB機身存儲(2.12GB可用),IMEI:860955022931665,MAC地址:ac:f7:f3:5b:13:02,序列號:207d0147,AndroidId:a31d834f770ba6e0(刷機后會改變)】
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設置
Target iOS Version
5.1.1
6.0
7.0
7.1
8.0
8.1
Android設置
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設置
Target iOS Version
4.0
4.1
4.2
4.3
5.0
5.1
6.0
7.0
7.1
Android設置
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設置
Target iOS Version
4.0
4.1
4.2
4.3
5.0
5.1
6.0
Android設置
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設置
不支持在Windows上生成iOS程序
Android設置
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發布。
2007年,Unity2.0發布。新增了地形引擎、實時動態陰影,支持DirectX 9并具有內置的網絡多人聯機功能。
2008年,iOS版本
2009年3月,Unity2.5發布。添加了對Windows Vista和XP系統的全面支持,所有的功能都可以與Mac OS X實現同步和互通。Unity在其中任何一個系統中都可以為另一個平臺制作游戲,實現了真正意義上的跨平臺。
2010年,Android版本
2010年9月,Unity3.0發布。添加了Android平臺的支持。整合了光照貼圖烘培引擎Beast。Unity3.0通過使用MonoDevelop在Windows和Mac系統上引入了腳本調試,可以中斷游戲、逐行單步執行、設置斷點和檢查變量,還支持遮擋剔除和延遲渲染。
2011年,PS3版本和Xbox360版本
2012年2月,3.5正式版發布
2011年,3.5.5版本
2012年4月,Unity上海分公司成立,Unity正式進軍中國市場。
2012年11月15日,Unity4.0發布。Unity4.0中加入了對DirectX 11的支持和Macanim動畫工具,而且還增添了Linux和Adobo Flash Player發布預覽功能。
2013年3月,4.1版本
新版本修復了先前版本的大量Bug并新增了內存分析器(Memory Profiler),能實時、動態地顯示游戲中不同動畫、不同物體的內存占用情況。在圖形的著色和渲染方面有了大幅度的提升。
2013年7月,4.2版本
添加對于Win8、WP8以及Blackberry 10的支持。
2013年11月,4.3.0版本
2014年8月,4.5.3版本
支持通用Windows應用程序
2014年10月13日,Unity 4.5.5版本發布,這是4.5系列的最終版本
2014年11月,Unity 4.6
推出了新的UI系統ugui,添加了對Andorid-x86系統的支持,現在你可以選擇構建目標平臺為FAT、x86或ARMv7。
2015年1月,Unity4.6.2
這是Unity第一個支持64位iOS的正式版本,采用了最新的IL2CPP技術。
2015年,4.6.4版本
注0:Win8下安裝jdk1.7.0_11,不要安裝JDK6(1.6)
JDK安裝后設置環境變量步驟如下:
?我的電腦->屬性->高級->環境變量->系統變量中添加以下環境變量:
?變量名,變量值
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的版本信息。出現類似下面的畫面表示安裝成功了:
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正式進入中國市場。
藍港的《王者之劍》
完美世界的TOUCH駿夢的《新仙劍》
昆侖萬維的《絕代雙驕》
計算兩個位置之間的距離
讓游戲對象沿著指定方向移動
得到游戲對象當前旋轉的角-軸表示 向前方移動
繞自身坐標軸Y軸旋轉
繞世界坐標軸的Y軸旋轉
使相機觀察方向跟隨物體移動
用戶應避免在Unity編輯器外部移動或重命名項目資源文件,如果需重新組織或移動某個資源,應該在項目視圖中進行,否則會破壞資源文件與Unity工程之間的關聯,甚至會損壞游戲工程。? chap6 Mecanim動畫系統
6.1 Mecanim概述
6.1.1Mecanim工作流
6.1.2舊版動畫系統
6.2資源的準備和導入
6.2.1如何獲取人形網格模型
6.2.2如何導入動畫
6.2.3動畫分解
6.3使用人形角色動畫
6.3.1創建Avatar
6.3.2配置Avatar
6.3.3設置Muscle參數
6.3.4 Avatar Body Mask
6.3.5人形動畫的重定向
6.3.6逆向運動學功能(Pro only)
6.3.7一般動畫
6.4在游戲中使用角色動畫
6.4.1循環動畫片段
6.4.2Animator組件
6.4.3Animator Controller
6.4.4動畫狀態機
6.4.5混合樹
6.4.6 1D混合
6.4.7 2D混合
6.5案例分析? chap1 Unity介紹
1.5軟件安裝
Unity編輯器可以運行在Windows和Mac OS X平臺上,用戶可依據自身的喜好來選擇相應的平臺工作。以下將介紹這2個平臺上Unity編輯器的安裝步驟,安裝示例所用的Unity版本號均為4.1.3。
chap2 Unity編輯器 Scene Gizmo工具
在Scene視圖的右上角是Scene工具,使用它可迅速將攝像機的視角切換到預設的視角上。
Top頂
Bottom底
Front前
Back后
Left左
Right右 2.8.2視圖控制
在場景視圖的上方是場景視圖控制欄。
繪圖模式默認選項是Textured
紋理顯示模式
網格線框顯示模式
紋理加線框網格顯示模式
渲染路徑顯示模式
光照貼圖顯示模式 渲染模式默認是RGB選項
三原色顯示
阿爾法通道顯示
以半透明的方式顯示物體
MIP映射圖顯示 用戶選擇繪圖模式或渲染模式并不會改變游戲最終的顯示方式,它只是改變場景物體在場景視圖中的顯示方式。
chap3資源導入流程
3.1 3D模型、材質與動畫的導入
3.1.1主流三維軟件簡介
Autodesk Maya,Maya可在Windows、Mac OS等操作系統上運行。
Autodesk 3D Studio Max
Modo
Cinema 4D
Cheetah3D
LightWave
Blender
3.1.2模型、材質以及動畫導入前的設置、準備工作
3.1.2.1 Unity與常見三維動畫軟件單位的比例關系
Unity的默認系統單位為“米”,三維軟件的單位與Unity單位的比例關系非常重要。
8.最小化Unity窗口。下一步運行3ds Max軟件,制作項目所需的模型素材。
13.在3ds Max中創建一個長寬高都為100cm的立方體,并將其位置移動到坐標原點。
3ds Max默認導出的FBX文件導入到Unity中的默認縮放因子是0.01,建議讀者將3ds Max系統單位以及顯示單位都設置成“厘米”。
19.刷新完畢后,在Unity界面項目視圖中的Assets文件夾下會顯示出新增的資源文件,即剛才導入的Player.FBX文件,并自動新建了Materials文件夾。
20.單擊選擇該FBX資源,在監測視圖中可以看到Model選項卡中Scale Factor文本框中的默認數值為0.01。
21.鼠標拖動此FBX文件(下文用資源名字Player來代替)到場景視圖或層次視圖中,在層次視圖中雙擊Player游戲對象,可以在場景視圖中居中并最大化顯示該游戲對象。
23.Unity中添加Cube默認的Scale值都為1.可以理解為該Cube的長寬高都為1m。
3.1.3將模型、材質、動畫導入到Unity中
Unity支持的3ds Max材質球類型包括:
Standard標準材質
Multi/Sub-Object多維子材質,需要注意每個子材質必須是標準材質。
另外,材質的名稱盡量與模型的名稱對應,建議都采用英文字符命名。
9.在Advanced Options卷展欄下展開Units項,勾選Automatic復選框,接下來展開Axis Conversion項,選擇Y-up(表明在Unity程序世界中世界坐標是Y軸向上 13.單擊選中該FBX文件,在監測視圖中可以看到該資源的相關屬性。下面通過監測視圖來講解此類Prefab的相關參數。
(1)Model:模型的默認設置面板
Meshs:網格
Scale Factor:縮放系數。采用不同的軟件、不同的單位(建議在三維軟件中采用公制單位)創建的模型可以通過該功能進行校正。
Mesh Compression:網格壓縮。壓縮值越大則網格體文件越小。
Read/Write Enabled:讀/寫啟用。
Optimize Mesh:優化網格。
Generate Colliders:生成碰撞體。
SwapUVs:交換UV。
Generate Lightmap:生成光照貼圖UV通道。
Normals & Tangents:法線和切線
Smoothing Angle:平滑角度。
Split Tangents:分割切線。
Materials:材質。
Import Materials:導入材質。
Material Naming:材質命名。決定Unity材質的命名方式。有3個選項:
依照基礎貼圖名稱
來自模型的材質名稱
模型名+模型材質名
Material Search:材質搜索。決定Unity如何根據Material Naming選項,搜索定位相應的材質。有3個選項:
Local Materials Folder:局部材質文件夾
Recursive-Up:向上。Unity依次向上搜索Assets文件夾中所有的材質子文件夾。
Project-Wide:項目范圍。Unity將在整個Assets文件夾中搜索材質。
(2)Rig:操控命令面板。
Animation Type:動畫類型。該選項用來指定導入FBX資源的動畫類型。
None:無動畫。
Legacy:舊版的動畫系統。
Generic:通用Mecanim動畫系統。
Humanoid:人形Mecanim動畫系統。
Avatar Definition:替身定義。
Create from this model:從這個模型創建,替身將依據選擇的模型創建。
Copy from other Avatar:從其他替身復制。
Configure:配置Avatar替身。
Keep additional bones:保留附加的骨骼。
(3)Animations:動畫。Animations選項卡中的內容會依據Rig選項卡中選擇的動畫類型而有所不同。
3.5 Unity Asset Store資源商店
也可以在Unity應用程序中依次打開菜單欄中的Window|Asset Store來直接訪問,或直接按快捷鍵Ctrl+9。
3.5.1Asset Store簡介
在創建游戲時,通過Asset Store中的資源可以節省時間、提高效率。
3.5.2Asset Store的使用方法
7.用戶還可以在Asset Store視圖中通過單擊圖標顯示Unity標準的資源包和用戶已下載的資源包,對于已下載的資源包可以通過單擊Import按鈕將其加載到當前的項目中。
chap4創建基本游戲場景
在Unity中可直接建立的基本幾何體有5種:
正方體、球體、膠囊體、圓柱體、平面。
4.3.3組件類型介紹
在Unity中,組件(Component)共分為如下7類。
1、Mesh
網格,該類型的組件有3項
網格過濾器Mesh Filter
該組件用于在項目資源中獲取網格并將其傳遞到所屬的游戲對象中。
文字渲染器Text Mesh
該組件用于生成三維的字符串(文字)。
網格渲染器Mesh Renderer
該組件用于從網格過濾器獲得網格模型,進而根據游戲對象的Transform組件中定義的位置在Scene視圖中進行渲染。 2、Effects
特效/效果,該類型的組件(包括舊版粒子系統在內)共有7項。
粒子系統Particle System
軌跡/拖尾渲染器Trail Renderer
線條渲染器Line Renderer
鏡頭光暈Lens Flare
光環/光暈Halo
幻燈片Projector
舊版粒子系統Legacy Particles
?
3、Physics
物理組件,該類型組件有17項。
Unity擁有內置的NVIDIA PhysX物理引擎,可以模擬真實的物理行為。
4、Navigation
5、Audio
6、Rendering
7、Miscellaneous
4.5創建光源
光源是每一個場景的重要組成部分。光源決定了場景環境的明暗、色彩和氛圍。每個場景中可以使用一個以上的光源,合理地使用光源可以創造完美的視覺效果。
4.5.1 Unity的光源類型
Unity提供了4種類型的光源,在合理設置的基礎上可以模擬自然界中任何的光源。
1.Directional light:方向光源。
該類型光源可以被放置在無窮遠處,額可以影響場景的一切游戲對象,類似于自然界中日光的照明效果。方向光源是最不耗費圖形處理器資源的光源類型。
2、Point light:點光源。
點光源從一個位置向四面八方發出光線,影響其范圍內的所有對象,類似燈泡的照明效果。點光源的陰影是較耗費圖像處理器資源的光源類型。
3.Spotlight:聚光燈。
燈光從一點發出,在一個方向按照一個錐形的范圍照射,處于錐形區域內的對象會受到光線照射,類似射燈的照明效果。聚光燈是較耗費圖形處理器資源的光源類型。
4.Area Light:區域光/面光源。
該類型光源無法應用于實時光照,僅使用于光照貼圖烘培。
4.5.2光源屬性講解
下面就所有類型光源的參數統一進行介紹:
Type:類型
可以選擇光源的類型
Range:范圍
用于控制光線從光源對象的中心發射的距離,只有點光源和聚光燈有該參數。
Spot Angle:聚光燈角度。
該項用于控制光源的錐形范圍,只有聚光燈有該參數。
Color:顏色。
Intensity:強度。
Cookie:
Cookie Size:
Shadow Type:
Strength:強度。
Resolution:分辨率。
Bias:偏移。
Softness:柔化。
4.6.1攝像機類型
Unity中支持兩種類型的攝像機,分別是Perspective(透視)以及Orthographic(正交)攝像機。通過改變攝像機的模式可以方便地指定攝像機的類型。
4.6.2攝影機參數
在Unity中創建攝像機對象時,默認情況下除了Transform(幾何變換)組件外還會帶有Camera、Flare Layer、GUI Layer、Audio Listener等4個組件。下面就Camera(攝影機)組件的參數來進行講解:
Clear Flags:清除標記。決定屏幕的哪部份將被清除。該項一般用于使用多臺攝像機來描繪不同游戲對象的情況,有3種模式可供選擇:
Skybox:天空盒。該模式為默認設置。在屏幕中空白的部分將顯示當前攝像機的天空盒。如果當前攝像機沒有設置天空盒,它會默認使用Background(背景)色。
Solid Color:純色。選擇該模式屏幕上的空白部分將顯示當前攝像機的Background(背景)色。
Depth only:僅深度。該模式用于游戲對象不希望被裁剪的情況。
Don't Clear:不清除。該模式不清除任何顏色或深度緩存。其結果是,每幀渲染的效果疊加在下一幀之上。一般與自定義的Shader(著色器)配合使用。
Background:背景。
該項用于設置背景顏色。在鏡頭中的所有元素渲染完成且沒有指定Shybox(天空盒)的情況下,將設置的顏色應用到屏幕的空白處。
Culling Mask:剔除遮罩。
依據游戲對象所指定的層來控制攝像機所渲染的游戲對象。
Projection:投射方式。
Perspective:透視。攝像機將用透視的方式來渲染游戲對象。
Orthographic:正交。攝像機將用無透視感的方式均勻地渲染游戲對象。
Field of view:視野范圍。(只針對透視模式)
該項用于控制攝像機的視角寬度,以及縱向的角度尺寸。
Size:大小。(只針對正交模式)。
該項用于控制正交模式攝像機的視口大小。
Clipping Planes:裁剪平面。攝像機開始渲染與停止渲染之間的距離。
Near:近點。攝像機開始渲染的最近的點。
Far:遠點。攝像機開始渲染的最遠的點。
Normalized View Port Rect:標準視圖矩形。用四個數值來控制該攝像機的視圖將繪制在屏幕的位置以及大小,該項使用屏幕坐標系,數值在0~1之間。
X:攝像機視圖進行繪制的水平位置起點。
Y:攝像機視圖進行繪制的垂直位置起點。
W:寬度。攝像機輸出到屏幕上的寬度。
W:高度。攝像機輸出到屏幕上的高度。
Depth:深度。
該項用于控制攝像機的渲染順序,較大值的攝像機將被渲染在較小值得攝像機之上。
Rendering Path:渲染路徑。該項用于指定攝像機的渲染方法。
Target Texture:目標紋理(該項只有Pro版才能支持)。
該項用于將攝像機視圖輸出并渲染到屏幕。一般用于制作導航圖或者畫中畫等效果。
HDR:高動態光照渲染。
該項用于啟用攝像機的高動態范圍渲染功能。因為人眼對低范圍的光照強度更為敏感,所以使用高動態范圍渲染能夠讓場景更為真實,光照的變換不會顯得太突兀。

5.5常用編輯器組件
常用編輯器組件可分為兩種,一是原有組件,二是拓展組件。
5.5.1攝像機
作為一個游戲對象,攝像機存在Scene視圖中。
攝像機組件的一些常用參數。
Clear Flags:背景顯示內容,默認是天空盒子,前提是必須在Render Settings中設置過天空盒子材質。
Background:背景顯示顏色。如果沒有設置天空盒子,將顯示這個顏色。
Culling Mask:用于選擇是否顯示某些層,默認為全部顯示。
Projection:攝像機的類型。
Field of View:攝像機的視野范圍。
Near:以攝像機為圓心,繪制最近點的距離。
Far:以攝像機為圓心,繪制最遠點的距離。
Normalized View Port Rect:可理解為設定Game視圖的顯示區域參數。多臺攝像機可以通過設置各自顯示區域來分屏同時顯示。
Depth:攝像機的深度。若存在多個攝像機,先渲染該值較小的攝像機。
Rendering Path:渲染路徑。
Target Texture:目標紋理,設置后會擋住攝像機。
4.7地形編輯器
4.7.1地形編輯器概述
Unity中的地形編輯器支持LOD(Level of Detail)功能,能夠根據攝像機與地形的距離以及地形起伏程度調整地形塊(Patch)網格的疏密程度。遠處或平坦的地形塊使用稀疏的網格,近處或陡峭的地形塊使用密集的網格。這將使游戲場景既真實、精細,同時也不影響性能。
地形與其他的游戲對象有些不同,需要注意的是,地形支持Transform(幾何變換)組件中的Position(位置)變換,但對于Rotation(旋轉)以及Scale(縮放)操作是無效的。
4.7.2地形的創建方式以及相關參數設定
4.7.2.1地形的創建及基本設置
1、打開菜單欄中的Terrain|Create Terrain項,便會創建一個地形
2、新建地形后,首先講解一下菜單欄中Terrain項下面的設置。
Create Terrain:創建地形
該項用于在項目工程中創建地形并將該地形資源放置到場景中。
Import Heightmap-Raw…:導入高度圖
Export Heightmap-Raw…:導出高度圖
Set Resolution…:設置分辨率
該項用于設置地形尺寸、高度圖分辨率、細節分辨率、紋理分辨率等相關參數
Terrain Width:地形寬度。用于設置地形的寬度。
Terrain Height:地形高度。用于設置地形的高度。
Terrain Length:地形長度。用于設置地形的長度。
4.7.2.2地形組件參數詳解
新建地形后,在監視視圖可以看到地形對象所掛載的組件,除了Transform組件外,還有一個Terrain(Script)(地形腳本)組件以及一個Terrain Collider(地形碰撞)組件。
4.10天空盒
Unity中的天空盒實際上是一種使用了特殊類型Shader的材質,該種類型材質可以籠罩在整個游戲場景之外,并根據材質中指定的紋理模擬出類似遠景、天空等的效果,使游戲場景看起來更完整。
4.10.1天空盒資源包的概述
1、啟動Unity應用程序,依次單擊菜單欄中的Assets|ImportPackage|Skyboxes選項,為項目工程導入Skyboxes.UnityPackage。
2、資源包被導入后,資源包中包含9個天空盒。
3、9種天空盒的效果如下:
DawnDusk Skybox
Eerie Skybox
MoonShine Skybox
Overcast1 Skybox
Overcast2 Skybox
StarryNight Skybox
Sunny1 Skybox
Sunny2 Skybox
Sunny3 Skybox
4.10.2天空盒的兩種應用方式及其區別
一種是在Unity中Render Settings(渲染設置)里進行指定,這種方法是針對游戲場景的,簡單地講,就是在同一個游戲場景中,無論使用哪個攝像機對象,天空盒都保持不變。并且該方式指定天空盒可以在場景視圖中直接顯示。
另一種方式是為攝像機對象添加天空盒組件,然后在天空盒組件中進行指定,這種方法只針對攝像機本身,簡單地講,就是在同一個游戲場景中,如果切換攝像機對象,天空盒會隨之變換。需要注意的是,為攝像機指定的天空盒優先級會高于在渲染設定中指定的天空盒。
4.10.3創建天空盒的方法
除了Skybox資源包中提供的天空盒外,Unity還支持用戶自制天空盒材質。

chap6 Mecanim動畫系統
Mecanim是Unity提供的一個豐富而復雜的動畫系統,它提供了:
針對人形角色的工作流和動畫創建能力。
Retargeting(運動重定向)功能,即把動畫從一個角色模型應用到另一個角色模型上的能力。
針對Animation Clips(動畫片段)的簡易工作流,即針對動畫片段以及他們之間的過渡和交互過程的預覽能力。
一個用于管理動畫間復雜交互作用的可視化編程工具。
通過不同邏輯來控制不同身體部位運動的能力。 Mecanim工作流可以被分解為3個主要階段:
1、資源的準備和導入
這一步驟與Mecanim系統無關。
2、角色的建立
主要有以下兩種方式:
人形角色的建立
一般角色的建立。動畫重定向功能對此并不適用。
3、角色的運動
這里包括設定動畫片段及其相互間的交互作用,也包括建立狀態機和混合樹、調整動畫參數以及通過代碼控制動畫等。 舊版動畫系統是Unity引擎在4.0版本之前使用的老的動畫系統。Unity公司正計劃采用Mecanim動畫系統逐步徹底地替換舊版動畫系統。 在使用角色模型之前,首先需要將它導入到項目工程中來。Unity可以導入原生的Maya文件(.mb或者.ma)、Cinema4D文件(.c4d)以及一般的FBX文件。 Animation Clips(動畫片段):動畫角色具有的一系列的在不同情景下被觸發的基本動作,比如行走、奔跑、跳躍、投擲和死亡等,這些基本動作被稱為動畫片段。 最容易使用的動畫模型是含有預分解動畫片段的模型。
使用預分解動畫模型
使用未分解動畫模型 用戶可以為任意模型的動畫組件添加動畫片段
在非Mecanim模型(沒有肌肉定義)上加入動畫片段要將Muscle Definition屬性設置為None。 另一種導入動畫片段的方法是遵循Unity指定的動畫文件命名方案。
用戶可以創建獨立的模型文件并按照modelName@animationName.fbx的格式命名。
除了人形動畫,Mecanim系統也能夠支持非人形動畫,只不過在非人形動畫中無法使用Avatar系統和其他一些相關功能。在Mecanim系統中,非人形動畫被稱為一般動畫(Generic Animation)。
在人形動畫中,一般可以很容易知道人形模型的中心點和方位;但對于一般動畫,由于骨架可以是任意形狀,則需要為其指定一根參考骨骼,它在Mecanim系統中被稱為根節點(root node)。選中根節點后,即可建立多個動畫片段之間的對應關系,且實現它們之間的正確混合。此外,根節點還對實現區分骨骼動畫和根節點的運動具有重要意義(通過OnAnimatorMove進行控制)。
動畫片段可以基于姿態、旋轉和位置進行循環。
任何一個擁有Avatar的GameObject都同時需要有一個Animator組件,該組件是關聯角色及其行為的紐帶。
Animator組件中還引用了一個Animator Controller,它被用于為角色設置行為,這里所說的行為包括狀態機(State Machines)、混合樹(Blend Trees)以及通過腳本控制的事件(Events),具體包括:
Controller:關聯到該角色的animator控制器。
Avatar:該角色的Avatar。
Apply Root Motion:是使用動畫本身還是使用腳本來控制角色的位置。
Animate Physics:動畫是否與物理交互。
Culling Mode:動畫的裁剪模式。
Always animate:總是啟用動畫,不進行裁剪。
Based on Renderers:當看不見角色時只有根節點運動,身體的其他部分保持靜止。 20150824補充: chap7物理引擎
7.1 Rigidbody:剛體
剛體組件可使游戲對象在物理系統的控制下來運動,剛體可接受外力與扭矩力用來保證游戲對象像在真實世界中那樣進行運動。任何游戲對象只有添加了剛體組件才能受到重力的影響。
在Unity中為游戲對象添加剛體組件的方法是:
1、選中該對象,然后依次打開菜單欄中Component->Physics->Rigidbody選項,這樣就在該游戲對象上添加了剛體組件。
2、Rigidbody組件的屬性面板如圖所示。剛體組件的各參數介紹如下:
Mass:質量。
該項用于設置游戲對象的質量。
Drag:阻力。
當對象受力運動時受到的空氣阻力。0表示沒有空氣阻力,阻力極大時游戲對象會立即停止運動。
Angular Drag:角阻力。
當對象受扭矩力旋轉時受到的空氣阻力。0表示沒有空氣阻力,阻力極大時游戲對象會立即停止運動。
Use Gravity:使用重力。
若開啟此項,游戲對象會受到重力的影響。
Is Kinematic:是否開啟動力學。
若開啟此項,游戲對象將不再受物理引擎的影響從而只能通過Transform(幾何變換組件)屬性來對其操作。該方式適用于模擬平臺的移動或帶有鉸鏈關節鏈接剛體的動畫。
Interpolate:插值
該項用于控制剛體運動的抖動情況,有3項可供選擇。
None:沒有插值。
Interpolate:內插值。基于前一幀的Transform來平滑此次的Transform。
Extrapolate:外插值。基于下一幀的Transform來平滑此次的Transform。
Collision Detection:碰撞檢測。
該屬性用于控制避免高速運動的游戲對象穿過其他的對象而發生碰撞,有3項可供選擇。
Discrete:離散碰撞檢測。該模式與場景中其他的所有碰撞體進行碰撞檢測。該項為默認值。
Continuous:連續碰撞檢測。
Continuous Dynamic:連續動態碰撞檢測模式。
Constraints:約束。
該項用于控制對于剛體運動的約束。
Freeze Position:凍結位置。剛體對象在世界坐標系中的X、Y、Z軸方向上(勾選狀態)的移動將無效。
Freeze Rotation:凍結旋轉。剛體對象在世界坐標系中的X、Y、Z軸方向上(勾選狀態)的旋轉將無效。
通常沒有必要在操作一個對象剛體的同時也操作其Transform,只需要二選其一即可。
7.2 Colliders:碰撞體
碰撞體是物理組件中的一類,它要與剛體一起添加游戲對象上才能觸發碰撞。
添加碰撞體的方法:首先選中一個游戲對象,然后依次打開菜單欄Component->Physics選項,可選擇不同的碰撞體類型,這樣就在該對象上添加了碰撞體組件。
7.2.1碰撞體型介紹
1.Box Collider:盒碰撞體
是一個立方體外形的基本碰撞體。
Is Trigger:觸發器。
勾選該項,則該碰撞體可用于觸發事件,并將被物理引擎所忽略。
Material:材質。
采用不同的物理材質類型決定了碰撞體與其他對象的交互形式。
Center:中心
碰撞體在對象局部坐標中的位置。
Size:大小。
碰撞體在X、Y、Z方向上的大小。
2.Sphere Collider:球形碰撞體
3.Capsule Collider:膠囊碰撞體
4.Mesh Collider:網格碰撞體
5.Wheel Collider:車輪碰撞體
7.2.2碰撞體相關的知識點介紹
7.3 Character Controller:角色控制器
7.4布料
7.4.1交互布料
7.4.2蒙皮布料
7.4.3布料渲染器
7.5關節
7.5.1鉸鏈關節
7.5.2固定關節
7.5.3彈簧關節
7.5.4角色關節
7.5.5可配置關節
7.6力場
7.7物理引擎實例
chap9導航網格尋路
9.1概述
NavMesh(導航網格)是3D游戲世界中用于實現動態物體自動尋路的一種技術,它將游戲場景中復雜的結構組織關系簡化為帶有一定信息的網格,在這些網格的基礎上通過一系列相應的計算來實現自動尋路。Unity從3.5開始集成了導航網格功能,并提供了方便地用戶界面。導航時,只需要給導航物體掛載導航組件,導航物體便會自行根據目標點來尋找最直接的路線,并沿著該路線行進到目標點。
chap12游戲開發基礎知識
在游戲引擎中使用的矩陣通常為4*4矩陣,因為它可以描述向量的平移、旋轉、縮放等所有的線性變換。
如果引入齊次坐標,則可以使用(x,y,z,1)來表示坐標點,而使用(x,y,z,0)來表示向量。
四元數Q可記作:Q=[w,(x,y,z)]
在3D數學中使用單位四元數/歐拉角/矩陣來表示旋轉,對于三維空間中旋轉軸為n,旋轉角度為a的旋轉,如果用四元數表示,四個分量分別為:
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)分別表示旋轉軸的x,y,z分量。
Unity中物體的前方向為局部坐標系z軸的正方向
可編程管線的核心就是Shader。
在Direct3D 9中,渲染管線主要有9個處理階段構成。分別是:局部坐標變換→世界坐標變換→觀察坐標變換→背面消隱→光照計算→裁剪→投影→視口計算→光柵化。對于可編程管線,頂點變換和光照可以通過編寫Vertex Shader來控制,光柵化則可以通過編寫Pixel Shader來控制。
chap13 Unity腳本開發基礎
在Unity中,游戲交互通過腳本編程來實現。
腳本可以理解為附加在游戲對象上的用于定義游戲對象行為的指令代碼。通過腳本,開發者可以控制每一個游戲對象的創建、銷毀以及對象在各種情況下的行為,進而實現預期的交互效果。
Boo是Python語言在.NET上的實現,使用者相對較少。
Unity的腳本語言基于Mono的.NET平臺上運行,可以使用.NET庫,這也為XML、數據庫、正則表達式等問題提供了很好的解決方案。
Unity里的腳本都會經過編譯。
Unity的3種腳本語言實際上在功能和運行速度上是一樣的,區別主要體現在語言特性上。
Unity官方示例中的腳本基本都是用JavaScript寫的。有人將Unity使用的JavaScript稱為UnityScript。
大多數的Unity第三方插件都是用C#編寫的。
C#基本語法
在Unity中,C#變量聲明方式為:
變量前面可以添加訪問修飾符public、protected、private,其中public的變量可以在監測視圖中查看和編輯,不添加訪問修飾符默認為private(在JavaScript中默認為public)。
JavaScript/C#中可用的變量類型:
數值類型
字符串
布爾值 在C#中只能使用內建數組
雖然不能使用Array數組,但是可以使用ArrayList、List等容器來達到同樣的目的。
C#中的操作符與JavaScript操作符一致。
C#中的條件判斷語句、循環語句、switch語句的使用與JavaScript語句一致。
參數可以使用關鍵字ref聲明為傳引用參數,在函數調用時的實參數前也需要添加ref。
另外,函數參數前可以使用關鍵字out實現返回多個數值。
在使用C#編寫腳本時還需要注意以下幾個規則:
1、凡是需要添加到游戲對象的C#腳本類都需要直接或間接地從MonoBehaviour類繼承。
2、使用Start或者Awake函數來初始化,避免使用構造函數。不使用構造函數的原因是在Unity里無法確定構造函數何時被調用。
3、類名要與腳本文件名相同。這里要求與文件名同名的類指的是從MonoBehaviour繼承的行為類,普通的C#類可以隨意命名。
4、協同函數(Coroutines)返回類型必須是IEnumerator,并且用yield return替代yield。
5、目前Unity里的C#不支持自定義命名空間。
在Unity中有兩種新建腳本文件的方法,操作方法分別為:
1、打開菜單欄中的Assert|Create|Javascript項或者是C# Script項
2、在項目視圖上方單擊Create按鈕,或者在視圖區域右擊,在快捷菜單中選擇Create|Javascript項或者是C# Script項來創建腳本
#pragma strict禁用了腳本的動態類型,強制使用靜態類型。
腳本必然事件(Certain Event):在滿足某些條件時由Unity自動調用。
Start、Update正是最常用的兩個。
層次視圖中的游戲對象:
Player1
監測視圖的屬性
項目視圖中的腳本
Player1.cs
?
在Unity中,開發者編寫的每一個腳本都被視為一個自定義的組件,游戲對象可以理解為能容納各種組件的容器。游戲對象的所有組件一起決定了這個對象的行為和游戲中的表現。作為一個組件,腳本本身是無法脫離游戲對象獨立運行的,它必須添加到游戲對象上才會生效。 MonoBehaviour是Unity中一個非常重要的類,它定義了基本的腳本行為,腳本必然事件就是從MonoBehaviour繼承而來。除了必然事件,MonoBehaviour定義了對各種特定事件的響應函數,這些函數名稱均以On作為開頭。
表13-7常用的事件響應函數
OnBecameVisible對于任意一個相機可見時調用
OnBecameInvisible對于任意一個相機不可見時調用
13.6.4訪問組件
一個游戲對象可能由若干組件構成。
Transform用于定義對象在場景中的位置、角度、縮放參數;
Mesh Filter用來從資源文件中讀取模型;
Mesh Renderer用來在場景中渲染Player1模型; 常用的組件及其對應的變量
Transform,transform
Rigidbody,rigidbody
Renderer,renderer
Light,light
Camera,camera
Collider,collider
Animation,animation
Audio,audio
如果游戲對象上不存在某組件,則該組件對應變量的值將為空值null。
組件引用函數
GetComponet
GetComponets
GetComponetInChildren
GetComponetsInChildren
這幾個函數比較耗時,因此應盡量避免在Update中調用這些獲取組件的函數,而是應該在初始化時把組件的引用保存在變量中。 在Unity中,用戶可以通過如下幾種方式來訪問游戲對象:
1、通過名稱來查找:使用函數GameObject.Find
2、通過標簽來查找:GameObject.FindWithTag
也是比較耗時的函數調用,因此不建議在Update中調用它們。
13.7.5 Coroutine協同程序
Coroutine也稱為協同程序或者協程,協同程序可以和主程序并行運行,和多線程有些類似,但是在任一指定時刻只會有一個協同程序在運行,別失的協同程序則會掛起。
Unity里和協同程序有關的函數有:
StartCoroutine:啟動一個協同程序
StopCoroutine:終止一個協同程序
StopAllCoroutines:終止所有協同程序
WaitForSeconds:等待若干秒
WaitForFixedUpdate:等待直到下一次FixedUpdate調用
在C#中,協同函數的返回類型必須為IEnumerator,yield要用yield return來替代,并且啟動協同程序用StartCoroutine函數。
【??
用Coroutine定期執行函數并且獨立于幀率
如果我們可以每5秒才檢測某些數據,然后把邏輯移出Update就可以節省性能消耗。
coroutine是一個可以掛起其執行直到yield操作完成的函數。
實現在幀率外定期執行函數:
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輸入與控制
處理用戶的輸入是游戲交互的基礎。Unity提供了一個非常易用和強大的用于處理輸入信息的類:Input,它可以處理鼠標、鍵盤、搖桿/方向盤/手柄等游戲外設,也可以處理iOS/Android等移動設備的觸摸輸入信息。程序員通過編寫腳本接收輸入信息,完成與用戶的交互。
在編寫處理輸入的腳本時,需要注意Unity所有輸入信息的更新是在Update方法中完成的,因此和輸入處理相關的腳本都應該放在Update方法中。
在Input類中,Key與物理按鍵對應,例如鍵盤、鼠標、搖桿上的按鍵,其映射關系無法改變,可以通過按鍵名稱或者按鍵編碼KeyCode來獲得其輸入狀態。例如,GetKeyDown(KeyCode.A)會在按A鍵時返回true。
Button是輸入管理器Input Manager中定義的虛擬按鍵,通過名稱來訪問。
輸入軸Axis用來模擬平滑變化的輸入,如搖桿的變化、方向盤的轉動等,需要在輸入管理器中配置。它包含正負兩個虛擬按鍵。
在Unity中,鼠標位置用屏幕的像素坐標表示,屏幕左下角為坐標原點(0, 0),右上角為(Screen.width,Screen.height),其中Screen.width為屏幕分辨率的寬度,Screen.height 為屏幕分辨率的高度。
mousePosition的變量類型為Vector3。
GetMouseButtonDown、GetMouseButtonUp、GetMouseButton這3個方法需要傳入參數來指定判斷哪個鼠標按鍵,0對應左鍵,1對應右鍵,2對應中鍵。
Unity可以處理搖桿、游戲手柄、方向盤等標準游戲外設的輸入。
虛擬按鍵需要在輸入管理器中配置,把外設的輸入消息映射給虛擬按鍵或輸入軸以后,就可以在腳本中使用了。
Unity默認為用戶創建了若干映射了搖桿按鈕的虛擬按鍵,包括Fire1、Fire2、Fire3、Jump以及虛擬軸Horizontal和Vertical,可以在腳本里直接使用它們。
在iOS和Android系統中,操作都是通過觸摸來完成的。
通過GetTouch或者touches可以訪問移動設備的觸摸數據,數據保存在Touch的結構體中。
使用虛擬按鍵的好處是可以讓游戲玩家自由定義按鍵,滿足個性化的操作習慣。
虛擬按鍵屬于輸入軸的一種特殊情況,在輸入管理器中,都統一視為輸入軸。

Unity中編寫Shader的語言叫做ShaderLab,而ShaderLab說白了就是裹著一層皮的CG著色器語言而已。Cg,即C forgraphics,即用于圖形的C語言,是微軟和英偉達相互協作在標準硬件光照語言的語法和語義上達成的一種一致性協議。
HLSL和CG其實是同一種語言。
在Unity中寫Shader約等于給DirectX寫Shader。 chap16 Shader開發
簡單來說,Shader是為渲染管線中的特定處理階段提供算法的一段代碼。Shader是伴隨著可編程渲染管線出現的,Shader的出現可看作是實時渲染技術的一次革命。
Unity中所有的渲染都需要通過Shader來完成,開發者可以自己編寫Shader,也可以使用Unity提供的內建Shader來實現各種畫面效果。
本章將介紹Unity中的內建Shader、ShaderLab語言,以及簡單的表面著色器(Surface Shader)和頂點片段著色器(Vertex & Fragment Shader)的編寫方法。
16.1內建Shader介紹
Unity提供了數量超過60個的內建Shader,包括從最簡單的頂點光照效果到高光、法線、反射等游戲中最常用的材質效果。
?內建Shader根據應用對象可以分為如下幾大類:
普通(Normal Shader Family):用于不透明的對象
透明(Transparent Shader Family):用于透明對象
透明縷空效果(Transparent Cutout Shader Family):用于包含完全透明部分的半透明對象
自反光(Self-llluminated Shader Family):用于有發光效果的對象
反射(Reflective Shader Family):用于能反射環境立方體貼圖的不透明對象
游戲開發者需要在游戲畫面和游戲性能之間做出平衡。
16.2Unity里的三種自定義Shader
編寫Shader需要對OpenGL或者Direct3D的渲染狀態有基本的了解,以及一些關于固定功能管線、可編程管線、Cg/HLSL/GLSL編程 語言的知識。
在Unity中,開發者可以編寫3種類型的Shader:
表面著色器:可同時正常工作在前向渲染及延遲渲染模式下。以Cg/HLSL語言進行編寫。
頂點和片段著色器:同樣是用Cg/HLSL語言來編寫。
固定功能管線著色器:完全以ShaderLab語言編寫,類似于微軟的Effects或是英偉達的CgFX。
無論編寫哪種Shader,實際的Shader代碼(比如Cg/HLSL代碼)都需要嵌入在ShaderLab代碼中,Unity需要通過ShaderLab代碼來組織Shader結構。
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的實現代碼
//包括表面著色器、頂點和片段著色器的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工作流程
在很多類型游戲的制作過程中,開發者都會考慮一個非常重要的問題,即如何在游戲運行過程中對資源進行動態的下載和加載。為此,Unity引擎引入了AssetBundle這一技術來滿足開發者的上述需求。
AssetBundle是Unity引擎提供的一種用于存儲資源的文件格式,它可以存儲任意一種Unity引擎能夠識別的資源,例如模型、紋理、音頻、動畫片段甚至整個場景等。同時,AssetBundle也可以包含開發者自定義的二進制文件,只需將二進制文件的擴展名改成.byte,Unity引擎即可將其識別為TextAsset,進而可以被打包到AssetBundle文件中。
一般情況下,AssetBundle的工作流程大致如下:
1、開發過程中,開發者創建好AssetBundle文件并上傳至服務器上。
創建AssetBundle:開發者可以在Unity編輯器中通過腳本來創建滿足要求的AssetBundle文件。
上傳至服務器:開發者創建好AssetBundle文件后,即可通過上傳工具(比如FTP等)將其上傳至服務器中,從而使游戲通過訪問服務器來獲取所需的資源。
2、游戲運行時,客戶端會根據實際需求從服務器上將適當的AssetBundle下載到本地機器,再通過加載模塊將其資源加載到游戲中。
下載AssetBundle:Unity提供了一套完整的API供開發者使用,從而完成從服務器端下載AssetBundle文件。
加載AssetBundle中的Assets:AssetBundle文件一旦下載完成,開發者即可通過特定的API來加載其所包含的Assets,包括模型、紋理、動畫片段等。
18.1AssetBundle
用戶可以通過腳本在Unity編輯器中創建AssetBundle文件,Unity引擎提供了3種創建AssetBundle的API,分別如下:
BuildPipeline.BuildAssetBundle
通過該接口,開發者可以將編輯器中任意類型的Assets打包成AssetBundle文件。
BuildPipeline.BuildStreamedSceneAssetBundle
通過該接口,開發者可以直接將項目中的一個或若干個場景以流式加載的方式打包成AssetBundle文件。
BuildPipeline.BuildAssetBundleExplicitAssetNames
該接口功能與BuildPipeline.BuildAssetBundle接口相同,但創建時可以為每個Object指定一個自定義的名字
18.2如何下載AssetBundle
Unity引擎提供了兩種方式來從服務器上動態下載AssetBundle文件,分別是非緩存機制和緩存機制。
1、非緩存機制
通過創建一個WWW實例來對AssetBundle文件進行下載。下載后的AssetBundle文件將不會進入Unity引擎特定的緩存區。
2、緩存機制
通過WWW.LoadfromCacheorDownload接口來下載AssetBundle文件。下載后的AssetBundle文件將自動被存放在Unity引擎特定的緩存區內,該方法是Unity推薦的AssetBundle文件下載方式。
18.3AssetBundle的加載與卸載
18.3.1如何加載AssetBundle
當把AssetBundle文件從服務器端下載到本地之后,需要將其加載到內存中并創建AssetBundle文件內存對象。Unity提供了3種方式來加載AssetBundle文件:
1、WWW.assetbundle屬性
可以通過WWW.assetbundle屬性來創建一個AssetBundle文件的內存對象。
2、AssetBundle.CreateFromFile
通過該接口可以從磁盤文件創建一個AssetBundle文件的內存對象。需要注意的是,該方法僅支持非壓縮格式的AssetBundle,即在創建AssetBundle時必須使用UncompressedAssetBundle選項。
3、AssetBundle.CreateFromMemory
通過該接口可以從內存數據流創建AssetBundle內存對象。例如,當用戶對AssetBundle進行加密時,可以先調用解密算法返回解密后的數據流,然后通過AssetBundle.CreateFromMemory從數據流創建AssetBundle對象。
需要特別注意的是,如果AssetBundle之間存在依賴,則必須嚴格按照依賴順序加載AssetBundle文件。
18.3.2如何從AssetBundle中加載Assets
當AssetBundle文件加載完成后,就可以將它所包含的Assets加載到內存中。Unity提供了3種加載API供開發者使用,它們分別是:
AssetBundle.Load
該接口可以通過名字來將AssetBundle文件中包含的對應Asset加載到內存中,也可以通過參數來指定加載Asset的類型。
AssetBundle.LoadAsync
該接口的作用與AssetBundle.Load相同,不同的是該接口是對Asset進行異步加載,即加載時主線程可以繼續執行,所以該方法適用于加載一個較大的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腳本調試與優化
Unity自3.0版本之后,開始支持使用MonoDevelop編輯器對腳本進行調試,具體的調試方法如下:
1、啟動Unity應用程序,按Ctrl+N組合鍵,新建一個空場景。
2、在Unity中,依次打開菜單欄中的Edit|Preferences|External Tool項,彈出Unity Preferences對話框,將ExternalScript Editor設置為MonoDevelop(builtin)。
3、設置完成后,打開MonoDevelop腳本編輯器。在該編輯器中,依次打開菜單欄中的Tools|Options|Unity|Debugger項,彈出如圖所示的調試設置對話框。
4、在Editor Location中設置Unity.exe文件所在的路徑,勾選Launch Unity automatically與Build project inMonoDevelop,單擊右下角的OK按鈕完成配置。
5、腳本調試是調試代碼的過程,為了調試方便,在Unity的Project界面中新建Count.cs文件,把該代碼綁定至Main Camera對象上。右擊該代碼文件,在彈出的菜單中選擇Sync MonoDevelop Project項。
6、用MonoDevelop打開Count.cs文件,為sum+=i該行代碼設置斷點(設置斷點只需要在該代碼行的行號前單擊即可設置),并在下拉框中選擇Debug模式。
7、在開啟Debug模式之前需要關閉Unity編輯器。開啟Debug模式可以單擊Debug按鈕也可以按F5鍵,開啟后可以看到Unity編輯器重新啟動,這就是剛剛勾選Launch Unity automatically的原因,它能在開啟Debug模式之后自動重新啟動Unity界面。單擊Play按鈕進行測試。
8、單擊Count按鈕,MonoDevelop的狀態如圖所示。
9、從左下角的Locals視圖中可以知道,Count類綁定在了Main Camera上,并且i變量的結果與sum變量的結果都為0。
10、在實際項目中如果由于調試原因需要關閉Unity,則顯得不太實際。下面介紹另一種腳本調試的方法。打開MonoDevelop中的Run|Attach to Process,彈出圖所示的對話框。
11、此時選擇Unity的進程(3592 Unity Editor),單擊右下角Attach按鈕,此時Unity Editor與MonoDevelop腳本編輯器已經連接。返回至Unity Editor中,單擊Play按鈕進行測試,單擊Game視圖中Count按鈕,此時MonoDevelop腳本編輯器的狀態如圖所示。
3個按鈕(從左到右)分別代表:
Step Over:調試時按照一行一行調試,單擊該按鈕一次執行一行。
Step Into:如果當前箭頭所指的代碼有函數的調用,則用StepInto進入該函數進行單步執行。
Step Out:如果當前箭頭所指向的代碼是在某一函數內,用它使函數運行至返回處。
chap20跨平臺發布
20.2發布到Android平臺
在發布Android項目之前,開發人員需先下載并安裝JavaSDK和AndroidSDK。本書中所用的Java SDK為7.0版本,Android SDK為21.1版本。
20.2.1 Java SDK的環境配置
1.在桌面“我的電腦/計算機”圖標上右擊,依次打開屬性|高級系統設置|環境變量選項,進而彈出“環境變量”配置對話框。
2.檢查系統變量下是否有JAVA_HOME、path、classpath這3個環境變量,如果沒有則需要新建這3個環境變量。
含義:
JAVA_HOME環境變量:其設置值就是jdk所在的安裝路徑
path環境變量:其設置值為%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
classpath環境變量:其設置值為.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar?
3.為了驗證配置是否成功,可以打開系統的命令提示符,在DOS命令行狀態下輸入javac命令。
20.2.2 Android SDK的安裝與項目發布
1.確認已經完成Android SDK的安裝后,需要對Android SDK進行環境變量的配置。
新建環境變量ANDROID_SDK_HOME,變量值輸入Android SDK所在的安裝路徑。
找到path環境變量:在變量值里添加兩個路徑:%ANDROID_SDK_HOME%\platform-tools與%ANDROID_SDK_HOME%\tools。
配置完上述的參數后,進入命令提示符狀態,輸入adb。
20.3 iOS平臺的發布
20.3.1發布前的準備工作
需要Mac蘋果計算機以及iOS測試機(例如iPhone、iPod touch或iPad),并且在Mac計算機上安裝了Xcode開發工具,另外還需要一個注冊好的Apple蘋果開發者賬號,并且配置好相關的證書。
20.3.2發布iOS平臺的設置
20.3.3項目工程輸出與發布
 20160226添加: http://pan.baidu.com/s/1G703W?密碼: trjc
http://wenku.baidu.com/link? url=UoWAJzM80ZwTOjU7PWrf8vrkByZDhObdvytPNkDTDkqxLuOKbCz2FriEIPrE10vOrBAUdWDUAA1rc4nHFM6yJHupg-1g9lyifb2ABhWt4JS
臺灣大宇資訊集團原創制作
1995年7月首款作品DOS版發行。
仙劍奇俠傳
仙劍奇俠傳二
仙劍奇俠傳三、仙劍奇俠傳三外傳·問情篇
仙劍奇俠傳四
仙劍奇俠傳五、仙劍奇俠轉五前傳
2004年被改編成同名電影。
仙劍之父:姚壯憲(姚仙)
仙劍二,單機游戲,于2003年1月上市
仙劍三,3D畫面在仙劍系列中首度出現,2003年8月出品
仙劍三外傳,2004年冬天出品
仙劍四,單機游戲,2007年8月1日發售
仙劍五,單機游戲,于2011年7月上市
仙劍五前傳,單機游戲,于2013年1月上市

江西泰豪動漫職業學院畢業設計(論文) 龍建:炸彈人游戲的制作(2015.5.15) http://www.docin.com/p-1163127361.html 開發游戲類型 5種: 1.1.1動作游戲ACT 包括射擊游戲STG和格斗游戲FTG 1.1.2冒險游戲AVG 1.1.3模擬游戲SIM或SLG 1.1.4角色扮演游戲RPG 1.1.5策略游戲 1.1.6休閑游戲

1997年,美國暴雪公司發布《Diablo》(暗黑破壞神),屬于RPG角色扮演游戲中的ARPG動作角色扮演游戲。
http://wenku.baidu.com/link?url=IaIRE6Cikfmc7vVO9oM0L6sUeJn2P_7Hp2JEQj7_lZahC007TMEDcIY7AT3AGQO0iVhOPxSv- 6qvr6aA7H5lJkWylGxRHIzgnzSLl5b41tG
論民間文化元素在電腦游戲創作中的運用——以網絡游戲《暗黑破壞神》為例
http://www.docin.com/p-365976240.html
14個游戲類型:
ACT動作游戲
AVG冒險游戲
FPS第一人稱視點射擊游戲
FTG格斗游戲
MUG音樂游戲
PUZ益智類游戲
RAC賽車游戲
RPG角色扮演游戲
RTS即時戰略游戲
SLG模擬/戰旗式戰略游戲
SPG體育運動游戲
STG射擊游戲
TAB桌面游戲
ETC其他類型游戲
周慶明:暗黑破壞神2游戲分析(2015.5.18)
http://www.docin.com/p-1479595671.html
游戲名稱:暗黑破壞神2
游戲類型:動作RPG
游戲平臺:PC/MAC
游戲操控設備:鍵盤,鼠標
游戲圖像技術:3D
游戲玩家視角:60度傾斜
游戲操作:
功能|熱鍵
屬性窗口|A
物品窗口|I
組隊窗口|P
聊天記錄|M
任務列表|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開發環境 32位Win7+Unity4.3.0+C#+VS2012 2.3添加美術資源 把用到的UI資源和場景背景以及敵機和主角戰機等等通過TexturePackerGUI工具打包成圖集,然后導入工程中。 把工程中圖集的參數改成和圖集一樣的分辨率,Format改成ARGB 16bit。 2.5添加音樂音效 游戲按鈕點擊音效的表現,子彈發射的音效表現,子彈和敵機爆炸的音效表現以及游戲音樂表現。
1、主角獲得道具 public class Daoju:MonoBehaviour{ //道具類型 public enum leixing { zhadan, HP, xiezi, weili, } public leixing myleixing; //如果主角進入觸發器調用主角方法獲得道具 void OnTriggerEnter(Collider other){ if(other.collider.tag=="Player") { other.GetComponent<Player>().Daoju(myleixing); Destroy(gameObject); }
} }

相機: public class MyCamera : MonoBehaviour ? {? //移動速度 public float sp=1;? //主角 public Transform play; //相機移動位置限制 public float maxX=19.5f,minX=3.5f,maxZ=21,minZ=2;? //相機離主角高度距離 float distance=5;
// Use this for initialization? void Start () ? {? ? transform.position=play.position+new Vector3(0,distance,0);? }? void LateUpdate() {?
}? void V() ? {?
}? }

UI功能: //狀態,主要用來按暫停鍵的時候暫停游戲 public enum UIzhuangtai { kai, shezhi, zhangting, siwang, yunxing } public UIzhuangtai myUIzhuangtai{get;set;} //各種按鈕 public GameObject kaishi,shezi,tuichu,fanhui,shuxing,tuichu_1,zhangting; //開始,設置,屬性面板 GameObject kaishigame,shezigame,shuxinggame; //燈光 public Light light; //用來控制背景音樂音量 AudioSource audio; //屬性UI [HideInInspector] public UILabel HP,weili,zhadan,xiezi,defeng,guaiwu; //小地圖相機 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("設置").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; //火焰預制件 public GameObject h;

? 數據驅動式游戲開發管道
Unity編輯器及其工作流程:最好的~。
引擎功能
渲染系統:多線程渲染,延遲渲染,全屏后處理,遮擋剔除,LOD
燈光系統:延遲燈光處理,實時陰影,SSAO,體積光,光照貼圖,HDR,Light Probes
輸入控制:鍵盤、鼠標、360手柄,手機觸摸輸入
地形系統:刷地形,刷紋理,樹,草,石塊,水,河流,道路
物理系統(PhysX):剛體,鉸鏈,軟物體,玩偶,汽車物理模型,服裝(物理)模擬
粒子特效:煙、霧、火、爆炸、雨、雪、水、瀑布
音響系統:FMOD,WAV,MP3
腳本系統:JavaScript,C#,Boo
尋路系統:NavMesh
網路支持:Real-time networking、Web connectivity、Web browser integration、Backend connectivity
性能分析系統:CPU & GPU Profiler
編輯器功能
資源集成及其管理:Prefab,游戲物體組合
場景建模
資源管道
資源商店
資源管理服務器(Asset Server+Cache Server)
編輯器的拓展(plug-in)
性能分析

基于Unity新UI系統的游戲界面開發實現 2、Unity新UI 2014年11月,Unity4.6正式版推出了新的UI系統。 其主要特點包括: (1)不僅可以在屏幕空間中創建透視或非透視的UI,而且也可以在世界空間中輕松地創建交互。 (2)布局系統不僅支持與邊、角點的對齊,而且支持與父容器中自定義點的對齊。 (3)可以基于圖片、文字以及掩碼和效果等構建自定義空間。所有的圖形組件都完全支持自定義的材質和光線。? (4)內置了很多為跨平臺發布而設計的控件,包括按鈕、滑動條、滾動視圖、輸入區域等。支持觸摸控制,以及鼠標、鍵盤、搖桿等輸入設備。 (5)UI系統中集成了Unity的動畫系統。可以使用狀態機或者其他動畫特性來控制UI元素和面板。 (6)UI系統是可擴展的。 (7)使用C#中的delegate委托機制,可以很容易地在監視視圖中建立UI控件的事件回調函數。 3、UI控件 3.1Canvas畫布 畫布組件表示一個擺放和渲染所有UI元素的抽象平面區域,所有UI元素必須是一個擁有畫布組件的游戲對象的子對象。 畫布有三種渲染模式: (1)屏幕空間覆蓋:在屏幕空間中將UI渲染在場景之上。調整屏幕大小或改變屏幕分辨率,則畫布會自動改變大小以進行匹配。 (2)屏幕空間相機:類似于屏幕空間覆蓋,但畫布由一個特定的相機渲染,相機的設置會影響UI。 (3)世界空間:使畫布像場景中的其他對象一樣被渲染。 3.2基本布局 本節介紹如何確定UI元素相對于畫布的位置以及UI元素之間的相對位置。 3.2.1 Rect Tool矩形工具 在Unity中,每一個UI元素都用一個矩形來表示,這樣可以方便地進行布局。在場景視圖中可以使用工具欄中的矩形工具按鈕來操縱該矩形。 矩形工具不僅可以用于調整UI和Unity的2D對象,甚至還可以用來操作3D對象。 3.2.2Rect Transform矩形變換 矩形變換是為所有的UI元素而設計的一個新的transform組件。 矩形變換是除了具有普通transform組件的position、rotation和scale屬性之外,還增加了用來表示矩形大小的width和height。 3.2.2.1 Pivot中樞點 UI元素的所有變換是圍繞中樞點來定義的,因此中樞點的位置會影響UI元素的旋轉、定位和縮放的結果。比如,當設置UI元素的位置時,實際上設置的是中樞點的位置;對UI元素進行旋轉時,圍繞的是中樞點。 3.2.2.2Anchors錨點 矩形變換組件包含一個稱為錨點的布局概念。 3.3可視控件 3.3.1Panel面板 主要的功能就是一個“容器”。 3.3.2Text文本 3.3.3Image圖片 在使用該控件時,要求圖片的紋理類型必須是Sprite(2D and UI)。 Sliced類型表示圖片需要在Sprite Editor中進行“九宮格”切片后才可以應用。 3.4交互控件 3.4.1Button按鈕 3.4.2Slider滑動條

?


1.3.2手機硬件的多樣性
Apple處理器A7是2013年9月11日發布的。
iPhone5s率先采用A7處理器。
A7處理器,采用的是64位構架。
ARM架構稱作進階精簡指令集機器。
4.7建立“開始”按鈕 4.7.1建立按鈕本體 相對于自適應分辨率的設置,錨點和支點的理解更為重要。 注意:在新的UI系統中可以輕松地控制UI元素的層,Unity默認渲染Canvas內的第一個項目,整個渲染從上至下,因此Canvas中的最后一個物體被最后渲染,最后渲染的物體就會顯示在整個視圖的最頂層,而之前被渲染的UI元素依照順序進行相應的分層。 4.7.2控制按鈕文字組件 4.7.3將按鈕設置為圖形 將StartGame圖形使用鼠標左鍵拖曳至按鈕元素的Source Image通道中 4.9按鈕與觸發事件JavaScript語言腳本 按鈕按下時需要調用腳本中的函數來實現相應的功能。 UiStart.js #pragma strict function OnClick(){ print('go'); } 將這個腳本掛在空物體GUI上,GUI拖曳給“On Click ()”一欄中的空置處,接著打開“On Click ()”一欄中的No Function選項,在此選項中選擇腳本UiStart.js的OnClick函數。
4.10按鈕與觸發事件C#語言版本
注意:C#函數必須加入public,這樣UI才能夠識別。 chap5 使用Unity 3D建立次世代級別的烘焙環境
5.1在3D軟件中制作針對手游的場景模型
5.1.1手機游戲場景應該怎樣建立
1、關卡類型的設置
殺戮性質關卡、拯救類型關卡、防御類型關卡
2、戰斗角度的設置
3、場景中的特別效果
5.1.2從圖片建立一個建筑物
5.1.3讓多個建筑物之間形成關聯
5.1.4使用不同的元素構架整體場景
5.1.5面數的分配與貼圖的大小
場景面數控制在3W四邊面左右就可以流暢運行。
貼圖的大小與數量直接影響游戲運行內存的占用。手機游戲盡量不要使用2048以上的貼圖,控制貼圖大小為正方形,類似512*512;1024*1024這樣的尺寸。
單一游戲場景中512以上尺寸的貼圖盡量控制在10張左右,如果使用1024以上的貼圖盡量控制在6張左右,小型貼圖例如256、128尺寸的圖片可以配合大型貼圖使用10張左右。
5.2導入Unity3D并設置
5.2.1如何將模型分類
游戲中大致的模型可以分為兩類:固定模型和動畫模型。
5.2.2合并動畫專用模型

chap9 利用Unity 3D構建角色控制系統 9.1傳統第三人稱虛擬搖桿控制系統 9.1.1導入Unity官方腳本包 在觸碰屏上建立角色操作系統與在傳統平臺上相比最大區別是: 需要虛擬搖桿的支持。首先在Unity中導入官方默認的Standard Assert(Mobile),在Assets菜單中Import Package子菜單中單擊Standard Assert(Mobile)按鈕,導入后可以在項目視圖中看到。 9.2利用插件構建角色分屏操作系統 9.2.1在Unity中導入分屏插件      

總結

以上是生活随笔為你收集整理的unity4.x从入门到精通、Unity 5.x游戏开发指南读书摘要(2015-4-21 12:10、2015-12-28 22:12)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。