總結(jié)Unity 初學(xué)者容易犯的編譯與運(yùn)行時(shí)錯(cuò)誤(二)

本文轉(zhuǎn)載自:http://liuguozhu.blog.51cto.com/9142031/1584768

1: Ngui 和 UGUI 用法是一樣的么孽亲?現(xiàn)在游戲公司還在用NGUI 還是用Unity內(nèi)置的UI系統(tǒng)?
答: 如果你是Unity學(xué)習(xí)者笋除,建議你NGUI/uGUI都學(xué)習(xí),因?yàn)槟壳芭f項(xiàng)目一般都用NGUI, 現(xiàn)在立項(xiàng)的公司很多考慮用uGUI 莫其,畢竟第1是官方技術(shù)且是開(kāi)源的技術(shù),而是后繼會(huì)不斷發(fā)展氏身,有潛力互捌。

2: unity3d的 Terrain上無(wú)法烘焙樹(shù)木的陰影,該如何解決辐棒?
答:Detail meshes 本身不參與烘焙過(guò)程病曾,但是其會(huì)對(duì)地形的lightmap進(jìn)行采樣牍蜂。所以,需要對(duì)原生的lightmap進(jìn)行修改泰涂,添加陰影鲫竞。

3: uGUI 中 slider和scorllbar這么相似,分別用在那些地方氨泼伞从绘?
答:解釋如下: Slider 控件適合做項(xiàng)目中的“音量調(diào)節(jié)”、“生命數(shù)值”顯示等方面是牢,注重?cái)?shù)值展示方面僵井。ScrollBar 控件一般不建議單獨(dú)使用,屬于“基礎(chǔ)性”控件驳棱,適合與其他控件組合成功能更加強(qiáng)大的“復(fù)合控件”批什,例如我在視頻中講解的“ScrollRect”控件。(作為用戶(hù)選擇部分)

4: unity做個(gè)項(xiàng)目社搅,安裝在手機(jī)上運(yùn)行一會(huì)卡死驻债,都不知道從哪里入手找bug,求各位大神幫忙形葬。合呐。。
答:你自己開(kāi)發(fā)一個(gè)移動(dòng)設(shè)備上的找Bug的機(jī)制: 如下操作: 第1: 使用Application.persistentDataPath 作為保存數(shù)據(jù)的路徑荷并。 自己寫(xiě)一個(gè)調(diào)試類(lèi) (例如: Debuger.cs) 第2:把需要在程序中切入的調(diào)試代碼合砂,最終寫(xiě)入txt 文件(或者XML文件) 第3: 在手機(jī)死機(jī)后青扔,沒(méi)有關(guān)系源织。重新進(jìn)入后,進(jìn)入自己開(kāi)發(fā)的一個(gè)專(zhuān)門(mén)顯示txt 或者XML 中內(nèi)容的頁(yè)面微猖,查看程序運(yùn)行到哪里谈息,最終找到原因。這種機(jī)制原理凛剥,適用于所有的移動(dòng)平臺(tái)的調(diào)試侠仇。

5 this.gameObject.transform.position= new Vector3(1F, 2F, 3F); 老師,gameObject和transform,position都是屬性犁珠,他們之間怎么能引用呢逻炊,不是應(yīng)該通過(guò)對(duì)象和類(lèi)來(lái)引用的嗎?
答:transform 是GameObject 的屬性。 而GameObject是不能直接應(yīng)用 transform 的犁享,沒(méi)有這個(gè)靜態(tài)屬性余素。(Unity規(guī)定)。 所以我們通過(guò)this.gameObject. 炊昆。 獲得這個(gè)腳本所在對(duì)象(返回GameObject).然后再獲取transform桨吊。

6: uGUI 中 老師威根,我怎么拉不動(dòng)那中心點(diǎn),總是拉著整個(gè)button或text视乐?
答:你拉不動(dòng)那個(gè)中心點(diǎn)洛搀,原因是Unity快捷欄中的“Center”在起作用,它保證中線點(diǎn)就一直在控件的中心位置佑淀。 所以請(qǐng)把“Center”點(diǎn)擊改為“Pivot”就可以移動(dòng)控件中心點(diǎn)了留美。

7: C# 有高內(nèi)聚低耦合的概念嗎?
答:"高內(nèi)聚低耦合"是開(kāi)發(fā)中的一個(gè)重要設(shè)計(jì)與開(kāi)發(fā)原則伸刃,C#作為國(guó)際上最流行的開(kāi)發(fā)語(yǔ)言之一独榴,當(dāng)然具備。 本質(zhì)上其實(shí)與語(yǔ)言無(wú)關(guān)奕枝,這是一種開(kāi)發(fā)的宗旨棺榔、思想。

8: unity5 可以使用visualstudio 開(kāi)發(fā)代碼隘道,哪可以使用Eclipse開(kāi)發(fā)嗎症歇?
答:目前Unity 不支持Eclipse 作為代碼編輯器插件開(kāi)發(fā)項(xiàng)目。

9: 數(shù)組定義好長(zhǎng)度之后谭梗,想要改變長(zhǎng)度怎么辦忘晤?
答:數(shù)組的特點(diǎn)就是,一點(diǎn)定義了長(zhǎng)度激捏,就不能更改设塔。如果你要用可變長(zhǎng)數(shù)組,就學(xué)習(xí)“Unity編程基礎(chǔ)篇”远舅,里面講解了ArrayList集合闰蛔。它的長(zhǎng)度是可變的集合。其本質(zhì)內(nèi)部實(shí)現(xiàn)也是用數(shù)組图柏,進(jìn)行多個(gè)數(shù)組相互倒換實(shí)現(xiàn)的序六。

10: 旋轉(zhuǎn)的局部坐標(biāo)系與世界坐標(biāo)系的區(qū)別是什么?
答:局部坐標(biāo)旋轉(zhuǎn)是指以父物體為參考蚤吹,進(jìn)行旋轉(zhuǎn)例诀。而世界坐標(biāo)系以“坐標(biāo)陀螺”來(lái)進(jìn)行旋轉(zhuǎn)。類(lèi)似的情況例如:東裁着、南繁涂、西、北二驰、是世界坐標(biāo)系扔罪。而前、后诸蚕、左步势、右是局部坐標(biāo)系

11: uGUI 怎么改變Canvas的屏幕大小?
答:兩種方法:1:可以推進(jìn)攝像機(jī)氧猬,如果是2D開(kāi)發(fā),則把攝像機(jī)的Size 設(shè)置的更小些坏瘩。 2:可以使用代碼方式對(duì)Canvas 的Scele 做縮放處理盅抚。

12: 怎樣保存游戲進(jìn)度? Save 和 Load功能?
答:保存游戲的進(jìn)度本質(zhì)就是數(shù)據(jù)持久化技術(shù)的應(yīng)用倔矾。例如我視頻中說(shuō)的Unity提供的Playerfab 妄均。可以把當(dāng)前玩家的位置信息哪自、狀態(tài)(分?jǐn)?shù)丰包、血量、**)等保存且持久化即可壤巷。如果是復(fù)雜的大量數(shù)據(jù)保存邑彪,建議用XML作對(duì)象與XML的串行化。具體可以看看我下月發(fā)行的《Unity3d/2d 游戲開(kāi)發(fā)零基礎(chǔ)到精通》的胧华,“數(shù)據(jù)持久化”章節(jié)有詳細(xì)論述寄症。

13: 請(qǐng)問(wèn):我想通過(guò)腳本實(shí)現(xiàn)自定義換膚,如何實(shí)現(xiàn)比較好矩动?如何利用Sprite Pakcer打包有巧?
答:
//動(dòng)態(tài)追加控件 GameObject GoCloneObject = newGameObject("Button"); //添加精靈(外觀處理) Image image= GoCloneObject.AddComponent<Image>(); Button btn =GoCloneObject.AddComponent<Button>(); image.overrideSprite=Resources.Load("Textures/Sprites/Emoticon - Frown", typeof(Sprite))as Sprite;
以上代碼可以實(shí)現(xiàn)動(dòng)態(tài)生成控件,且自定義“換膚”悲没。UGUI 中嚴(yán)格來(lái)說(shuō)篮迎,我們不需要“Sprite Pakcer打包 ”

14: 用vs2013打開(kāi)創(chuàng)建的C#腳本,調(diào)試的時(shí)候顯示:無(wú)法直接啟動(dòng)帶有類(lèi)庫(kù)輸出類(lèi)型的項(xiàng)目示姿,請(qǐng)?jiān)诖私鉀Q方案中添加一個(gè)引用庫(kù)項(xiàng)目的可執(zhí)行項(xiàng)目甜橱。將這個(gè)可執(zhí)行項(xiàng)目設(shè)置為啟動(dòng)項(xiàng)目!我已經(jīng)設(shè)置了那個(gè)啟動(dòng)項(xiàng)目峻凫,但是還是調(diào)試錯(cuò)誤?
答:是這樣的渗鬼。 VS只是我們寫(xiě)代碼的工具,提供了類(lèi)方法提示荧琼、方法高亮顯示等功能。但是腳本的運(yùn)行差牛,還是需要運(yùn)行Unity的Play 按鈕的命锄。

15: 老師我的VS 是Blend forstudio2013,在unity編輯器設(shè)置為VS打開(kāi)C#腳本時(shí),報(bào)錯(cuò)打開(kāi)的不是有效的項(xiàng)目偏化,這該怎么辦啊
答:建議使用VS 2013(官方默認(rèn)的是MonoDevelop)脐恩。你說(shuō)的VS 版本可能不兼容。

16: 老師侦讨,我在unity5.0里面驶冒,想播放動(dòng)畫(huà)苟翻,this.animation.play ();這樣不行~
答:API 有所更改。this.GetComponent<Animation>().Play();更多Unity5.0 內(nèi)容API更新請(qǐng)首先看我博客:http://liuguozhu.blog.51cto.com/9142031/1631190 骗污。

17: text.rectTransform.rect.Set(0, 0, 417, 2*(j * 52.5f + 300));為什么沒(méi)有效果呢崇猫?如果要設(shè)置text的hright屬性要怎么辦?
答:這樣定義:txt_Obj.rectTransform.sizeDelta = newVector2(200, 200);//改變寬度與高度需忿。

18: 老師诅炉,我問(wèn)一個(gè)問(wèn)題,我在game視圖16:10 Portrait(10:16)的視圖下運(yùn)行游戲屋厘,場(chǎng)景里的物體運(yùn)動(dòng)都是正常的但是當(dāng)我把game視圖切換到free aspect的時(shí)候涕烧,場(chǎng)景里的運(yùn)動(dòng)物體就都有了“殘影”,就像是屏幕沒(méi)有刷新一樣汗洒,這個(gè)是什么問(wèn)題呢议纯,我的攝像機(jī)用的是正交模式就像是屏幕不刷新了,每一幀都停留到了屏幕上溢谤?
答:
1: 這種情況痹扇,先考慮在你角色的背后,加一個(gè)背景貼圖溯香。
2: ngui的圖集打的不能太大鲫构。

19: 老師,Unity中“預(yù)加載”什么意思玫坛,如何實(shí)現(xiàn)结笨?
答: “預(yù)加載”一般分為兩種情況:
第1種情況: 轉(zhuǎn)換場(chǎng)景的時(shí)候,我們可以使用異步場(chǎng)景加載的技術(shù)湿镀,來(lái)實(shí)現(xiàn)炕吸。目的是給玩家一個(gè)顯示畫(huà)面,在系統(tǒng)后臺(tái)加載場(chǎng)景數(shù)據(jù)勉痴,等加載完畢赫模,顯示整個(gè)場(chǎng)景。代碼舉例如下:
public class ScenesLoading : MonoBehaviour{
public Slider Sli_Progressbar; //調(diào)用進(jìn)度條
private AsyncOperation async; //異步對(duì)象
private float curProgress; //當(dāng)前進(jìn)度

    void Start ()
    {
        StartCoroutine(loadScene());
    }

    //異步讀取場(chǎng)景
    IEnumerator loadScene()
    {
        //async =Application.LoadLevelAsync(ConvertNames.SceneNames[GlobalParameterManager.LoadingScenesName]);           
        async =Application.LoadLevelAsync(ConvertNames.GetInstance().ScenesToName(GlobalParameterManager.LoadingScenesName));
        curProgress = async.progress;
        yield return async;
    }

    void Update()
    {             
        if (curProgress <= 1)
        {
            curProgress += 0.01f;
        }
        Sli_Progressbar.value =curProgress;
    }

}

第2種情況:
在同一場(chǎng)景中實(shí)現(xiàn)“預(yù)加載”蒸矛。
如果一個(gè)場(chǎng)景非常龐大瀑罗,勢(shì)必要進(jìn)行優(yōu)化。優(yōu)化最簡(jiǎn)單的思路可以如下:
1> 遮擋剔除雏掠。
2> LOD 層級(jí)細(xì)節(jié)斩祭。
3> “層消隱”處理

如果以上步驟還不明顯的話,可以人為的把整個(gè)大場(chǎng)景乡话,劃分為幾個(gè)部分摧玫,當(dāng)“角色”(主角)要進(jìn)入一塊“區(qū)域”的時(shí)候,可以提前3-20秒進(jìn)行場(chǎng)景的加載绑青,當(dāng)“角色”離開(kāi)這片區(qū)域時(shí)诬像,我們則可以銷(xiāo)毀這片“區(qū)域”屋群,以節(jié)省計(jì)算機(jī)或者移動(dòng)端設(shè)備的內(nèi)容空間。 這就是“預(yù)加載”技術(shù)坏挠。核心代碼如下:
void Start()
{

        //啟動(dòng)加載大型建筑模型
       StartCoroutine("LoadBigBuilding");
    }
   
  
    //本場(chǎng)景進(jìn)入若干秒后芍躏,啟動(dòng)“預(yù)加載”大型場(chǎng)景
    IEnumerator LoadBigBuilding()
    {
        yield return newWaitForSeconds(intLoadTime);
        GameObjectgoBuilding_A=Resources.Load("Prefabs/Scenes_A") as GameObject;
        GameObject goCloneBuildingA =GameObject.Instantiate(goBuilding_A, Vector3.zero, Quaternion.identity) asGameObject;
    }

20: 劉老師,There are 2 audio listeners in the scene. Please ensure there is always exactly one audio listener in the scene.控制臺(tái)的消息怎么刪除癞揉,不出現(xiàn)這個(gè)
答: 這個(gè)警告信息告訴我們纸肉,場(chǎng)景中存在了2個(gè)“音頻監(jiān)聽(tīng)器”,這是Unity不允許的喊熟。 解決方法很簡(jiǎn)單柏肪,你只需要把其中一個(gè)攝像機(jī)的監(jiān)聽(tīng)給禁止即可。例如下圖:

Paste_Image.png

21:角色控制器能不能觸發(fā)OnTriggerEnter等方法芥牌?
答:角色控制器(CharacterController)不能應(yīng)用OnTriggerEnter 等方法烦味,如果需要檢測(cè)CC(CharacterController),需要對(duì)方通過(guò)名稱(chēng)或者Tag來(lái)觸發(fā)檢測(cè)。如果需要CC給剛體施加“力”壁拉,可以用 OnControllerColliderHit() 方法實(shí)現(xiàn)谬俄。

(關(guān)于其他更多的初學(xué)者常見(jiàn)Unity疑問(wèn)與解答,后面還會(huì)繼續(xù)總結(jié)弃理,敬請(qǐng)期待.)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末溃论,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子痘昌,更是在濱河造成了極大的恐慌钥勋,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辆苔,死亡現(xiàn)場(chǎng)離奇詭異算灸,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)驻啤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)菲驴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人骑冗,你說(shuō)我怎么就攤上這事赊瞬。” “怎么了沐旨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵森逮,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我磁携,道長(zhǎng),這世上最難降的妖魔是什么良风? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任谊迄,我火速辦了婚禮闷供,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘统诺。我一直安慰自己歪脏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布粮呢。 她就那樣靜靜地躺著婿失,像睡著了一般。 火紅的嫁衣襯著肌膚如雪啄寡。 梳的紋絲不亂的頭發(fā)上豪硅,一...
    開(kāi)封第一講書(shū)人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音挺物,去河邊找鬼懒浮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛识藤,可吹牛的內(nèi)容都是我干的砚著。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼痴昧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼稽穆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起赶撰,我...
    開(kāi)封第一講書(shū)人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤舌镶,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后扣囊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體乎折,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年侵歇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了骂澄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惕虑,死狀恐怖坟冲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情溃蔫,我是刑警寧澤健提,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站伟叛,受9級(jí)特大地震影響私痹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一紊遵、第九天 我趴在偏房一處隱蔽的房頂上張望账千。 院中可真熱鬧,春花似錦暗膜、人聲如沸匀奏。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)娃善。三九已至,卻和暖如春瑞佩,著一層夾襖步出監(jiān)牢的瞬間聚磺,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工钉凌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咧最,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓御雕,卻偏偏與公主長(zhǎng)得像矢沿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子酸纲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容