《unity3d手機(jī)游戲開發(fā)》第1章快速入門 11.1 unity簡(jiǎn)介 11.2運(yùn)行unity 21.2.1 unity的版本 21.2.2安裝unity 21.2.3在線激活unity 21.2.4運(yùn)行示例工程 41.2.5安裝visual studio 61.3創(chuàng)建一個(gè)“hello world”程序 61.4調(diào)試程序 91.4.1顯示log 101.4.2設(shè)置斷點(diǎn) 10小結(jié) 11第2章太空射擊游戲 122.1淺談?dòng)螒蜷_發(fā) 122.1.1開始一個(gè)游戲項(xiàng)目 122.1.2階段性成果 122.1.3策劃 132.1.4編寫腳本 13.2.1.5美術(shù) 132.1.6 qa測(cè)試 142.1.7發(fā)布游戲 142.2游戲策劃 142.2.1游戲介紹 142.2.2游戲ui 142.2.3主角 142.2.4游戲操作 152.2.5敵人 152.3導(dǎo)入美術(shù)資源 152.4創(chuàng)建場(chǎng)景 162.4.1創(chuàng)建火星背景 162.4.2設(shè)置攝像機(jī)和燈光 202.5創(chuàng)建主角 212.5.1創(chuàng)建腳本 212.5.2控制飛船移動(dòng) 232.5.3創(chuàng)建子彈 252.5.4創(chuàng)建子彈prefab 262.5.5發(fā)射子彈 272.6創(chuàng)建敵人 282.7物理碰撞 302.7.1添加碰撞體 302.7.2觸發(fā)碰撞 322.8高級(jí)敵人 342.8.1創(chuàng)建敵人 342.8.2發(fā)射子彈 362.9聲音與特效 382.10敵人生成器 412.11游戲管理器 432.12標(biāo)題界面 482.13發(fā)布游戲 49小結(jié) 52第3章第一人稱射擊游戲 533.1策劃 533.1.1游戲介紹 533.1.2 ui界面 533.1.3主角 533.1.4敵人 533.2游戲場(chǎng)景 533.3主角 543.3.1角色控制器 553.3.2攝像機(jī) 573.3.3武器 583.4敵人 593.4.1尋路 593.4.2設(shè)置動(dòng)畫 633.4.3行為 643.5 ui界面 683.6交互 723.6.1主角的射擊 723.6.2敵人的進(jìn)攻與死亡 753.7出生點(diǎn) 783.8小地圖 80小結(jié) 84第4章塔防游戲 854.1策劃 854.1.1場(chǎng)景 854.1.2攝像機(jī) 854.1.3勝負(fù)判定 854.1.4敵人 854.1.5防守單位 864.1.6 ui界面 864.2游戲場(chǎng)景 864.3攝像機(jī) 924.4游戲管理器 954.5路點(diǎn) 974.6敵人 1024.7敵人生成器 1054.7.1在excel中設(shè)置敵人 1054.7.2創(chuàng)建敵人生成器 1094.8防守單位 1154.9生命條 1194.10自定義按鈕 124小結(jié) 131第5章資源創(chuàng)建 1325.1光照 1325.1.1光源類型 1325.1.2環(huán)境光與霧 1345.1.3 lightmapping 1355.1.4 light probe 1375.2 terrain 1395.3 skybox 1425.4粒子 1445.5物理 1485.6自定義shader 1505.6.1自定義字體 1515.6.2創(chuàng)建shader 1525.7貼圖 1555.8 3d模型導(dǎo)出流程 1555.8.1 3ds max靜態(tài)模型導(dǎo)出 1555.8.2 3ds max動(dòng)畫模型導(dǎo)出 1575.8.3 3ds max動(dòng)畫導(dǎo)出 1585.8.4 maya模型導(dǎo)出 1585.9動(dòng)畫 1595.10優(yōu)化 163小結(jié) 163第6章與web服務(wù)器的交互 1646.1建立服務(wù)器 1646.1.1安裝apache 1646.1.2安裝mysql 1666.1.3安裝php 1696.1.4顯示php信息 1716.1.5調(diào)試php代碼 1726.2 www基本應(yīng)用 1746.2.1 http協(xié)議 1746.2.2 get請(qǐng)求 1756.2.3 post請(qǐng)求 1766.2.4上傳下載圖片 1786.2.5下載聲音文件 1806.3自定義數(shù)據(jù)流 1806.3.1 c#版本的數(shù)據(jù)流 1816.3.2 php版本的數(shù)據(jù)流 1886.3.3測(cè)試 1926.4分?jǐn)?shù)排行榜 1956.4.1創(chuàng)建數(shù)據(jù)庫(kù) 1956.4.2創(chuàng)建php腳本 1966.4.3上傳下載分?jǐn)?shù) 199小結(jié) 202第7章基于tcp/ip協(xié)議的聊天實(shí)例 2037.1 tcp/ip開發(fā)簡(jiǎn)介 2037.2網(wǎng)絡(luò)引擎 2047.2.1數(shù)據(jù)流 2047.2.2數(shù)據(jù)包 2147.2.3邏輯處理 2157.2.4定義消息標(biāo)識(shí)符 2177.2.5客戶端 2177.2.6服務(wù)器端 2247.3聊天客戶端 2297.4聊天服務(wù)器端 2347.5收發(fā)結(jié)構(gòu)體 2387.6 protobuf簡(jiǎn)介 242小結(jié) 244第8章用unity創(chuàng)建網(wǎng)頁(yè)游戲 2458.1網(wǎng)頁(yè)游戲簡(jiǎn)介 2458.2 unity web游戲 2458.2.1 streaming關(guān)卡 2458.2.2上傳游戲到kongregate 2498.2.3與網(wǎng)頁(yè)通信 2518.2.4在網(wǎng)頁(yè)上記錄積分 2538.2.5自定義網(wǎng)頁(yè)模板 2548.2.6自定義啟動(dòng)畫面 2588.3 flash游戲 2598.3.1軟件安裝 2608.3.2導(dǎo)出flash游戲 2608.3.3調(diào)試flash游戲 2618.3.4從flash工程讀取unity導(dǎo)出的flash游戲 2618.3.5在unity內(nèi)調(diào)用as3代碼 2678.3.6 flash版本的太空射擊游戲 2718.4 assetbundle 2748.4.1打包資源 2758.4.2下載資源 2768.4.3安全策略 279小結(jié) 280第9章將unity游戲移植到ios平臺(tái) 2819.1 ios簡(jiǎn)介 2819.2軟件安裝 2819.3申請(qǐng)開發(fā)權(quán)限 2819.4設(shè)置ios開發(fā)環(huán)境 2829.5測(cè)試ios游戲 2869.6發(fā)布ios游戲 2889.6.1申請(qǐng)發(fā)布證書 2889.6.2創(chuàng)建新應(yīng)用 2889.6.3提交審核 2909.7集成game center 2919.7.1 xcode到unity 2919.7.2設(shè)置高分榜和成就 2979.7.3實(shí)現(xiàn)game center功能 2999.8集成內(nèi)消費(fèi)系統(tǒng) 3099.8.1設(shè)置內(nèi)消費(fèi) 3099.8.2實(shí)現(xiàn)內(nèi)消費(fèi) 3109.9本地存儲(chǔ)位置 317小結(jié) 317第10章將unity游戲移植到android平臺(tái) 31810.1 android簡(jiǎn)介 31810.2軟件安裝 31810.3運(yùn)行android游戲 32010.3.1設(shè)置android手機(jī) 32010.3.2安裝驅(qū)動(dòng)程序 32010.3.3設(shè)置android游戲工程 32310.3.4測(cè)試android游戲 32710.3.5發(fā)布android游戲 32710.4觸屏操作 32910.5從eclipse到unity 33310.5.1創(chuàng)建.jar文件 33410.5.2導(dǎo)入.jar到unity 33710.6從unity到eclipse 33910.6.1導(dǎo)出eclipse工程 33910.6.2設(shè)置導(dǎo)出的eclipse工程 34010.6.3創(chuàng)建用于發(fā)布的eclipse工程 34110.6.4發(fā)布程序 34610.7自定義activity 347小結(jié) 350附錄a c#語(yǔ)言 351a.1 c#基礎(chǔ) 351a.2面向?qū)ο缶幊?361a.3字符串 368a.4數(shù)組 370a.5 i/o操作 372a.6委托 376小結(jié) 381附錄b特殊文件夾 382
效果圖,素材是網(wǎng)上隨便拉的
這是運(yùn)行后的Hierarchy的界面,其中最下面的Item是放在攝像機(jī)不能拍到的位置,當(dāng)做預(yù)設(shè)體,每個(gè)Item都有Toggle組件,在Grid上有Toggle Group組件,并且將Itme上的Toggle組件中Group設(shè)置為Grid,這實(shí)現(xiàn)了點(diǎn)了一個(gè)之后,其他不會(huì)高亮。Grid上有組件 Grid Layout Group,該組件實(shí)現(xiàn)了當(dāng)創(chuàng)建Item,并且將父物體設(shè)置為Grid后能夠自動(dòng)排版
這里我們需要寫三個(gè)類,一個(gè)是自己捏造的數(shù)據(jù)類,放在Item上獲取各種UI的類,還有能夠創(chuàng)建Item并且能夠?qū)tem進(jìn)行管理的類
public class ItemData//這個(gè)類存放的是數(shù)據(jù)
{
public int _starNum;//星星的數(shù)量(本來(lái)是想找星星的,現(xiàn)在就隨便將就一下)
public string _icon;//這是圖片名字
public string _itemName;//關(guān)卡的名字
public string _itemNum;//第幾關(guān)
}
item上的類,用來(lái)獲取item上的UI控件
public class Item: MonoBehaviour
{
public Image _star1;
public Image _star2;
public Image _star3;
public Image _icon;
public Text _levelNum;
public Text _levelName;
void initializeItem()
{
_star1= transform.Find("StarGroup/star1").GetComponent
_star2= transform.Find("StarGroup/star2").GetComponent
_star3= transform.Find("StarGroup/star3").GetComponent
_icon= transform.Find("Icon").GetComponent
_levelName= transform.Find("Levelname/name").GetComponent
_levelNum= transform.Find("Levelname/Lv").GetComponent
}
void Awake()
{
initializeItem();
}
}
這是個(gè)管理Item創(chuàng)建的類
public class MainMgr: MonoBehaviour
{
GameObject item;
Transform Parent; //這里需要得到Gird的Transform
List
void Awake()
{
CreateData();
item= transform.Find("Item").gameObject; //獲得一開始放在攝像機(jī)外的游戲?qū)ο?當(dāng)做預(yù)設(shè)體
Parent= transform.Find("Grid"); //保存Gird的Transform
}
void CreateData() //創(chuàng)建自己捏造的數(shù)據(jù)
{
dataGroup.Clear();//確保這個(gè)List沒有其他數(shù)據(jù)
ItemData itemdata= new ItemData();
itemdata._icon="1(5)";
itemdata._itemName="小樹林";
itemdata._itemNum="第一關(guān)";
itemdata._starNum= 3;
dataGroup.Add(itemdata);
ItemData itemdata1= new ItemData();
itemdata1._icon="1(7)";
itemdata1._itemName="沼澤";
itemdata1._itemNum="第二關(guān)";
itemdata1._starNum= 1;
dataGroup.Add(itemdata1);
ItemData itemdata2= new ItemData();
itemdata2._icon="1(15)";
itemdata2._itemName="山海關(guān)";
itemdata2._itemNum="第三關(guān)";
itemdata2._starNum= 1;
dataGroup.Add(itemdata2);
ItemData itemdata3= new ItemData();
itemdata3._icon="1(12)";
itemdata3._itemName="墓地";
itemdata3._itemNum="第四關(guān)";
itemdata3._starNum= 2;
dataGroup.Add(itemdata3);
ItemData itemdata4= new ItemData();
itemdata4._icon="1(32)";
itemdata4._itemName="神殿";
itemdata4._itemNum="第五關(guān)";
itemdata4._starNum= 3;
dataGroup.Add(itemdata4);
ItemData itemdata5= new ItemData();
itemdata5._icon="1(25)";
itemdata5._itemName="天庭";
itemdata5._itemNum="第六關(guān)";
itemdata5._starNum= 2;
dataGroup.Add(itemdata5);
ItemData itemdata6= new ItemData();
itemdata6._icon="1(30)";
itemdata6._itemName="心魔";
itemdata6._itemNum="第七關(guān)";
itemdata6._starNum= 3;
dataGroup.Add(itemdata6);
}
GameObject tempItem;//創(chuàng)建臨時(shí)的游戲?qū)ο?#160;
void CreateTempItem() //創(chuàng)建Item
{
if(dataGroup!= null) //當(dāng)這個(gè)List不為空時(shí)
{
for(int i= 0; i< dataGroup.Count; i++) //循環(huán)創(chuàng)建Item
{
tempItem= Instantiate(item) as GameObject; //創(chuàng)建Item并且獲取到這個(gè)游戲?qū)ο?#160;
tempItem.transform.localPosition= Vector3.zero; //將其位置,縮放大小,旋轉(zhuǎn)角度初始化
tempItem.transform.localRotation= new Quaternion();
tempItem.transform.localScale= Vector3.one;
tempItem.transform.SetParent(Parent); //設(shè)置其父物體為Grid
Item itemSprite= tempItem.AddComponent(); //為每一個(gè)創(chuàng)建的Item添加腳本
itemSprite._levelName.text= dataGroup[i]._itemName;//獲取每一個(gè)關(guān)卡的名字獲取,一下類似
itemSprite._levelNum.text= dataGroup[i]._itemNum;
string path= string.Format("Icon/{0}", dataGroup[i]._icon);//字符串拼接
itemSprite._icon.sprite= Resources.Load(path, typeof(Sprite)) as Sprite;
ShowStar(dataGroup[i]._starNum, itemSprite);//調(diào)用這個(gè)方法獲得星星的顯示
}
}
}
void ShowStar(int num,Item tempitem)//這個(gè)方法是用來(lái)顯示星星
{
if(num== 1)
{
tempitem._star1.gameObject.SetActive(true);
tempitem._star2.gameObject.SetActive(false);
tempitem._star3.gameObject.SetActive(false);
}
if(num== 2)
{
tempitem._star1.gameObject.SetActive(true);
tempitem._star2.gameObject.SetActive(true);
tempitem._star3.gameObject.SetActive(false);
}
if(num== 3)
{
tempitem._star1.gameObject.SetActive(true);
tempitem._star2.gameObject.SetActive(true);
tempitem._star3.gameObject.SetActive(true);
}
}
void Start(){
CreateTempItem();
}
}
以上就是簡(jiǎn)單的游戲關(guān)卡的選擇界面的實(shí)現(xiàn),如果有錯(cuò)誤,或者更好的方法,望指正,萬(wàn)分感謝!
快速開發(fā)一個(gè)小游戲可以遵循以下幾個(gè)步驟:
確定游戲類型和玩法。選擇一個(gè)簡(jiǎn)單易上手的游戲類型,例如休閑益智、跑酷、射擊等,然后確定游戲的玩法和規(guī)則。
選擇游戲引擎和開發(fā)工具。可以選擇使用現(xiàn)有的游戲引擎,如Cocos2d-x、Unity等,也可以使用小游戲開發(fā)工具,如微信小游戲開發(fā)工具、百度小游戲開發(fā)工具等。
進(jìn)行游戲界面設(shè)計(jì)和素材準(zhǔn)備。設(shè)計(jì)游戲界面,包括游戲主界面、游戲場(chǎng)景、游戲角色等,準(zhǔn)備游戲素材,如背景音樂、游戲音效、游戲圖片等。
編寫游戲邏輯和代碼。根據(jù)游戲類型和玩法,編寫游戲邏輯和代碼,實(shí)現(xiàn)游戲的基本功能和交互效果。
進(jìn)行游戲測(cè)試和優(yōu)化。對(duì)游戲進(jìn)行測(cè)試和優(yōu)化,發(fā)現(xiàn)并修復(fù)游戲中的問題和bug,確保游戲的穩(wěn)定性和流暢性。
發(fā)布游戲。將游戲打包成小游戲,并在小游戲平臺(tái)上發(fā)布,如微信小游戲、百度小游戲等。
最后,需要注意的是,快速開發(fā)一個(gè)小游戲需要盡量減少?gòu)?fù)雜度和細(xì)節(jié),保證游戲的簡(jiǎn)單易上手和玩家的體驗(yàn)。
上一篇:unity ios 游戲排行榜
下一篇:unity游戲排行榜