1. 程式人生 > >Unity3D手機遊戲開發-金璽曾讀書摘要(2015-4-27 19:01、2016-4-11 10:39)

Unity3D手機遊戲開發-金璽曾讀書摘要(2015-4-27 19:01、2016-4-11 10:39)

蘋果禁止了C#的部分反射操作,禁止JIT(即時編譯,程式執行時建立並執行新程式碼),不允許邏輯熱更新,只允許使用AssetBundle 進行資源熱更新。 Android應用的熱更新 將執行程式碼預編譯為assembly dll。 將程式碼作為TextAsset打包進Assetbundle。 執行時,使用Reflection機制實現程式碼的功能。 更新相應的Assetbundle即可實現熱更新。 Android與iOS熱更新的異同 蘋果官方禁止iOS的程式熱更新;JIT在iOS下無效。 熱更新方案:Unity+Lua外掛。 使用Lua外掛進行iOS熱更新的原理 指令碼轉化為文字資源(如同紋理、音訊等) Lua指令碼可直接解釋執行 更新資源的形式更新程式 Unity熱更新的注意點 需要更新的程式碼、資源,都必須打包成AssetBundle(建議使用未壓縮的格式打包) 熟悉Unity的幾個重要的路徑 Resources(只讀) StreamingAssets(只讀) Application.dataPath(只讀) Application.persistentDataPath(可讀寫) 重要路徑之Resources Resources資料夾下的資源無論使用與否都會被打包 資源會被壓縮,轉化成二進位制 打包後文件夾下的資源只讀 無法動態更改,無法做熱更新 使用Resources.Load載入
重要路徑之StreamingAssets 流資料的快取目錄 資料夾下的資源無論使用與否都會被打包 資源不會被壓縮和加密 打包後文件夾下的資源只讀,主要存放二進位制檔案 無法做熱更新 WWW類載入(一般用CreateFromFile,若資源是AssetBundle,依據其打包方式看是否是壓縮的來決定) 相對路徑,具體路徑依賴於實際平臺 Application.streamingAssetsPath iOS:Application.dataPath+"/Raw"或Application/xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx/xxx.app/Data/Raw
重要路徑之Application.dataPath 遊戲的資料資料夾的路徑(例如在Editor中的Assets) 很少用到 無法做熱更新 iOS路徑: Application/xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx/xxx.app/Data
重要路徑之Application.persistentDataPath 持久化資料儲存目錄的路徑(沙盒目錄,打包之前不存在) 資料夾下的資源無論使用與否都會被打包  執行時有效,可讀寫 無內容限制,從StreamingAsset中 讀取二進位制檔案或從AssetBundle讀取檔案來寫入PersistentDataPath中 適合熱更新 iOS路徑:Application/xxxxxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxxx/Documents 支援Unity iOS熱更新的各種Lua外掛的對比 uLua(asset store) uLua外掛源生版本,開山鼻祖 不會產生靜態程式碼 反射機制,效率低下,速度慢,gc alloc頻繁 已停止更新維護,不支援Unity 5.x,淡出主流 uLua & cstoLua 開發平臺成熟穩定,Bug修復迅速 開發者眾多,資源豐富 靜態方法,效能優 有成功商業產品案例 都是基於原聲版本的改進;未來,兩者會合併成一個外掛 sLua 靜態方法,效能優 核心程式碼簡潔 資源較少,開發平臺不夠成熟穩定 無成功商業產品案例 基於原聲版本的改進 C#Light(L#) 淡出主流 uniLua C#實現的Lua虛擬機器,非完整方案 淡出主流 Unity3D手機遊戲開發
金璽曾
2013年8月出版
前言
全書通篇以例項為基礎
作者 金璽曾
2013年4月11日
chap3第一人稱射擊遊戲
在本章的內容中,將涉及攝像機控制、物理、動畫、智慧尋路等。
3.1策劃
場景中只有一個主角和一種敵人。
3.1.1遊戲介紹
在遊戲場景中,會有若干個敵人的出生點,它會定時生成一些敵人,它們會尋找並攻擊主角,遊戲的目的就是生存下去,消滅更多敵人,獲取更多分。
3.1.2 UI介面
包括主角的生命值、彈藥數量、得分和瞄準星。
遊戲失敗後提供一個按鈕重新開始遊戲。
3.1.3主角
我們看不到主角本人,在螢幕上看到的是一支端在胸前的M16機關槍。按鍵盤的W、S、A、D鍵控制主角前後左右行動,移動滑鼠旋轉視角,按滑鼠左鍵進行射擊。
3.1.4敵人
敵人只有一種,是一個護士模樣的殭屍,它將具有智慧尋路功能,躲避障礙物,並攻擊主角。
3.2遊戲場景
這個場景使用了Lightmap和Light Probe表現靜態和動態模型的光影效果。
在選單欄選擇【Component】->【Physics】->【Mesh Collider】為其新增多邊形碰撞體元件。
3.3主角
需要為主角建立碰撞體,並控制其移動。
3.3.1角色控制器
在選單欄選擇【GameObject】->【Create Empty】建立一個空的遊戲體,將它的Tag設為Player,它便是我們的主角。
在選單欄選擇【Component】->【Physics】->【Character Controller】為主角新增一個角色控制器元件,使用這個元件提供的功能,我們將可以實現在控制主角移動的同時與場景的碰撞產生互動,比如在行走時不會穿到牆裡面去。
為主角再新增一個Rigidbody元件,取消選擇Use Gravity去掉重力模擬,並選中Is Kinematic使其不受物理演算影響,這樣我們才能使用指令碼控制其移動。在Character Controller元件中需要調整碰撞體的位置和大小。
3.3.2攝像機
接下來我們將在Player.cs指令碼中新增少許程式碼,使攝像機伴隨著主角移動。
3.3.3武器
接下來我們將把武器繫結到攝像機上,使其隨著主角移動。
3.4敵人
3.4.1尋路
Unity的尋路系統分為兩部分,一部分是對場景進行設定,使其滿足尋路演算法的需求。另一部分是設定尋路者。
3.4.2設定動畫
3.5UI介面
這一次我們將使用另一種方式,直接在場景中建立2D貼圖表示UI介面。
3.6互動
3.7出生點
3.8小地圖
小結
本章完成了一個完整的第一人稱射擊遊戲例項。
chap4塔防遊戲
本章將使用Unity完成一款塔防遊戲。我們將在Unity內建立二維陣列儲存場景資訊,自定義路點引導敵人行動,還將涉及攝像機控制,讀取XML檔案,自定義按鈕等。
小結
本章完成了一個塔防遊戲的例項,內容較多,我們使用二維陣列定義場景中的單元格資料,製作引導敵人行動的路點,並新增一些簡單的編輯器功能幫助設定路點。
5.7貼圖
對於作為模型材質使用的圖片,其大小必須是為2的N次方。通常會將其Texture Type設為預設的Texture型別,將Format設為Compressed模式進行壓縮。
如果圖片將作為UI使用,需要將Texture Type設為GUI。值得注意的是Format的設定。
5.8 3D模型匯出流程
5.8.1 3ds Max靜態模型匯出
3ds Max是最流行的3D建模、動畫軟體,可以使用它來完成Unity遊戲中的模型或動畫,最後將模型或動畫匯出為FBX格式到Unity中使用。在靜態模型(沒有動畫)製作過程中,可以遵循下列步驟和規範:
步驟08:將匯出的模型和貼圖複製貼上到Unity工程路徑Assets資料夾內的某個位置即可匯入到Unity工程中。
5.8.2 3ds Max動畫模型匯出
動畫模型是指那些綁定了骨骼並可以動畫的模型,其模型和動畫通常需要分別匯出。
5.8.3 3ds Max動畫匯出
動畫檔案可以與模型檔案分開儲存,但動畫檔案中的骨骼與層級關係一定要與模型檔案一致。當匯出動畫的時候,不需要選擇模型,只需要選擇骨骼和Helper物體匯出即可。
動畫檔案的命名需要按“模型名@動畫名”這樣的格式命名,比如模型命名為Player,動畫檔案即可命名為
[email protected]
[email protected]等。
5.8.4 Maya模型匯出
Maya也是一款非常流行且功能強大的3D動畫軟體,它的內部座標系統與Unity一樣都是Y軸向上,非常適合完成Unity遊戲的模型工作。
在Maya中完成模型的製作可以遵循下列步驟:
步驟06:選擇需要匯出的模型,在選單欄選擇File|Export Selection,將匯出格式設為FBX,選擇Export開啟設定視窗。如果不需要匯出動畫,可以取消選中Animation,然後將Units設為Centimeters,最後按Export匯出。
5.9動畫
Unity4.0引入了全新的Mecanim動畫系統,它提供了更強大的功能,使用一個叫狀態機的系統控制動畫邏輯,更容易實現動畫過渡、IK、動畫retargeting(將同一個動畫使用到不同的模型上)等功能。使用Mecanim動畫系統的基本步驟如下:
步驟01:將從3D動畫軟體中匯出的FBX檔案複製到Unity工程中。一個模型可以擁有多個動畫,模型與動畫一定要有相同的骨骼層級關係。
chap7基於TCP/IP協議的聊天例項
在VS中編譯工程,在當前工程的bin目錄內會出現一個UnityNetwork.dll檔案,我們將把它使用到聊天客戶端和伺服器端內。
聊天客戶端將在Unity中完成。在Unity中有兩種方式使用前面完成的網路引擎,一種方法是直接將UnityNetwork.dll複製到Unity工程Assets目錄的任何地方,另一種方式是直接將原始程式碼檔案複製到Unity工程內,但需要將namespace去掉。
建立指令碼ChatClient.cs,並將其指定給場景中的遊戲體。這是一個標準的Unity指令碼,它包括一個簡單的輸入框UI用於輸入聊天資訊,還包括一個按鈕傳送聊天資訊。
Protobuf除了可以應用到網路中,也可以應用到檔案儲存中。
http://download.csdn.net/download/wsyzyrxp1/9154163
D:\protoGen\ProtoBufTransForm>protogen -i:PlanetProto.txt -o:BjoyProto.cs
protobuf-net:protogen - code generator for .proto
proto協議
package chat;
message UserChat{
 required int32 m_nUserID = 1;
 optional string m_strNickName = 2 [default = ""];
 required string m_strMessage = 3;
}
包體長度=34-18=16

相關推薦

Unity3D手機遊戲開發-讀書摘要2015-4-27 19:012016-4-11 10:39

蘋果禁止了C#的部分反射操作,禁止JIT(即時編譯,程式執行時建立並執行新程式碼),不允許邏輯熱更新,只允許使用AssetBundle 進行資源熱更新。 Android應用的熱更新 將執行程式碼預編譯為assembly dll。 將程式碼作為TextAsset打包進Assetbundle。 執行時,使

杭州unity3d手機遊戲開發學習資料

unity,也稱unity3d,是近幾年非常流行的一個3d遊戲開發引擎,跨平臺能力強,使用它開發的手機遊戲數不勝數。unity3d手機遊戲開發學習資料免費送給你吧,希望你會喜歡。 在這裡,我想給你推薦一本書,是《unity3d手機遊戲開發》。這本書通過三個部分循序漸進地介紹了unity在遊戲

unity3D手機遊戲開發專案總結

       八月,我們團隊開發了一款手機遊戲《錦衣御行》,該遊戲是一款大型3D解密戰鬥類遊戲,該遊戲結合了密室逃脫、猜答燈謎、限時戰鬥等諸多玩法;使用當下最流行的操作模式,方便玩家適應遊戲;場景特效巨集偉刺激,情節銜接流暢有趣。下面,我將就此次遊戲開發過程中做的準備、工作流

讀書——unity3D/2D手機遊戲開發

unity的底層是用C++開發的,但是使用unity只是允許用指令碼進行具體遊戲開發,就回避了底層的複雜性,降低了開發的難度。unity裡的c#是執行再Mono平臺,微軟的c#是執行再.Net平臺上,語

aNDROID手機遊戲開發框架

手機遊戲 框架 androi http ongl .com list 開發框架 lis %E5%AE%9E%E7%8E%B0%E2%80%9C%E5%9B%BE%E7%89%87%E6%8B%BC%E8%B4%B4%E2%80%9D%E7%9A%84%E6%95%88%E6

Unity3D 入門 遊戲開發 Unity3D portal game development

tor ide 編輯 場景 div files one http video Unity3D 入門 遊戲開發 Unity3D portal game development 作者:韓夢飛沙 Author:han_meng_fei_sha 郵箱:[email 

關於《Unity3D/2D遊戲開發從0到1》書籍再版說明

unity2017培訓書籍   unity從0到1 unity2017版書籍再版 unity2017教學書籍 關於《Unity3D/2D遊戲開發從0到1》第一版本在2015年7月1日全國發行,累計得到不少國內高校教師、培訓機構的好評。但是由於Unity官方對於技術不斷的升級與

HTML5遊戲開發進階指南讀書筆記

建立遊戲圖層#gamecanvas(遊戲圖層)、#scorescreen(得分顯示圖層)、#gamestartscreen(遊戲開始圖層)、#levelselectscreen(關卡選擇圖層)、#loadingscreen(資源載入圖層)、#endingscreen(遊戲結束圖層)所有圖層共用.gamelay

Unity3D遊戲開發基礎入門學習線路圖2019最新版

對於程式設計零基礎小白來說,Unity3D遊戲開發真的是高深到無法踏足的領域嗎?我認為並不是這樣的。 按照我個人的理解:其實Unity本身並不是一種體系,而是計算機圖形學+遊戲開發+各種其他系統的一種表現。學習進階遊戲開發,Unity是一個非常出色的入手工具,但是它背後蘊含的諸多通用系統知識並非我們一朝

Unity3D/2D遊戲開發從0到1第二版本》 書稿完結總結

        前幾天,個人著作《Unity3D/2D遊戲開發從0到1(第二版)》經過七八個月的技術準備以及近3個月的日夜編寫,在十一長假後終於完稿。今天抽出一點時間來,給廣大熱心小夥伴們彙報一下書籍概況。 17年初,隨著Unity5.6以及Unity2017Beta快速迭

Unity3D獨立遊戲開發日記:擺放建築物

在沙盒遊戲裡,能自由建造是很重要的特點,比如說風靡全球的《我的世界》,用一個個方塊就能搭建出規模巨集大的世界。甚至有偏激的人說,沒有自由建造,就不是一個真正的沙盒遊戲。的確,沙盒遊戲的魅力有很大一部分是能自由構建一個遊戲世界。看著自己一磚一瓦搭建起一個城堡世界會很有成就感的。 現如今的手遊,大多數就是一個爭

Photon + Unity3D 線上遊戲開發 學習筆記(一)

      大家好, 我也是學習Photon + unity3D 的新手 有什麼說錯的地方大家見諒哈, 我的開發環境是 unity3D 4.1.3  ,   Visual Studio 是2010 版本的  photon 用的是 V3  語言C#       photon

Photon + Unity3D 線上遊戲開發續貂

首先,各位可以先看看前面的部分 http://blog.csdn.net/nicepainkiller/article/details/26972953 這個是第4篇 不過,從前有個太監,下面沒有了。。。 然後我來講講有多個客戶端的時候它們之間如何互相通訊,很顯然伺服器只

Unity-手機遊戲開發全屏實現

在用untiy開發應用時候發現一個問題,有幾款手機有工具欄,不能實現全屏, 這個手機截圖就是有工具欄的華為手機,我們怎麼才能在自己的app中實現全屏。 public class HideAndroidButtons : MonoBehaviour { #if UNITY

未來人工智慧將如何影響手機遊戲開發

  當下,人工智慧(AI)似乎成了一個時髦詞,幾乎每家公司都聲稱自己使用了這項技術。然而,AI在遊戲中的應用並不新鮮——甚至可以說

遊戲開發中必備的數學知識——矩陣的基本變換

基本變換 使用Direct3D程式設計的時候,我們使用4×4的矩陣表示一個變換。其思路如下: 設定一個4×4的矩陣中元素的值,使其表示某一個具體變換,然後我們將某一點的座標或者某向量的分量放入一個1×4的行向量v中,乘積vX就是成為了一個新的經過變換的向量v。 此時,我們之所以使用4×4

《Android 開發藝術探索》讀書筆記——Activity 的生命週期和啟動模式

Activity 作為 Android 四大元件之首,它作為和使用者互動的介面,在開發中使用得可謂極其頻繁,所以弄清楚 Activity 的生命週期和啟動方式是非常重要的,要牢記。 1 Activity 的生命週期全面分析 1.1 典型情況下的生命週期分析 onCrea

遊戲開發閱讀列表2】動畫Anima2D粒子物理等

遊戲中動畫的實現有很多不同方法,幀動畫、骨骼動畫、基於物理的動畫、基於Shader的動畫、粒子等。 在這篇文章中,列出了我最近讀到過的不同種類動畫入門級的文章、視訊。關於Unity動畫狀態機這一類太常見的,這裡不再贅述。 所分享的內容都親自品嚐,保證無毒無害,營養價值極高!

遊戲開發校招面試全記錄大三篇

上課聽著職業老師在說,你們要寫求職信哦呵呵。。現在工作很難找哦呵呵。。用上世紀90年代講現在的招聘是肯定不行的,我就分享一下自己寫過的兩個面經吧,也算是我的春招和麵經吧。寫的不對的地方你們也就呵呵一下過去吧,啊哈哈。春招我算是比較早就開始準備了,從網易雷火出來先簡單自我介紹一

《Android 開發藝術探索》讀書筆記——IPC 機制

Android 多程序開發我在平時開發中還沒有遇到,但不代表不重要,仍需要了解一下基本概念,Android 的序列化機制和 Binder 是。 1 Android IPC 簡介 IPC 是 Inter Process Communication 的縮寫,意為程序間通訊或跨程序通訊,是指兩