亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

總結Unity 初學者容易犯的編譯與運行時錯誤(第二部分)

發布時間:2020-09-13 11:09:26 來源:網絡 閱讀:5643 作者:Liu_guozhu 欄目:開發技術

    

         本人在做線上與線下Unity教學中,經常遇到一些常見的疑問,為了更好的快速進行答復,我平時注意收集了一些典型
的錯誤與疑問,且附有個人解答,供大家交流之用。不足之處,請大家指明。
    如果后期總結的易錯誤點,量比較大時我會進行分類處理,更加方便大家查詢。

 


1: Ngui 和 UGUI 用法是一樣的么?現在游戲公司還在用NGUI 還是用Unity內置的UI系統?

答: 如果你是Unity學習者,建議你NGUI/uGUI都學習,因為目前舊項目一般都用NGUI, 現在立項的公司很多考慮用uGUI ,畢竟第1是官方技術且是開源的技術,而是后繼會不斷發展,有潛力。

 

 

2: unity3d的 Terrain上無法烘焙樹木的陰影,該如何解決?

答:Detail meshes 本身不參與烘焙過程,但是其會對地形的lightmap進行采樣。所以,需要對原生的lightmap進行修改,添加陰影。

 

 

3: uGUI 中 slider和scorllbar這么相似,分別用在那些地方啊?

答:解釋如下: Slider 控件適合做項目中的“音量調節”、“生命數值”顯示等方面,注重數值展示方面。ScrollBar 控件一般不建議單獨使用,屬于“基礎性”控件,適合與其他控件組合成功能更加強大的“復合控件”,例如我在視頻中講解的“ScrollRect”控件。(作為用戶選擇部分)

 

 

4:  unity做個項目,安裝在手機上運行一會卡死,都不知道從哪里入手找bug,求各位大神幫忙。。。

答:你自己開發一個移動設備上的找Bug的機制: 如下操作: 第1: 使用Application.persistentDataPath 作為保存數據的路徑。 自己寫一個調試類 (例如: Debuger.cs) 第2:把需要在程序中切入的調試代碼,最終寫入txt 文件(或者XML文件) 第3: 在手機死機后,沒有關系。重新進入后,進入自己開發的一個專門顯示txt 或者XML 中內容的頁面,查看程序運行到哪里,最終找到原因。
這種機制原理,適用于所有的移動平臺的調試。

 

 

5 this.gameObject.transform.position= new Vector3(1F, 2F, 3F); 老師,gameObject和transform,position都是屬性,他們之間怎么能引用呢,不是應該通過對象和類來引用的嗎?

答:transform 是GameObject 的屬性。 而GameObject是不能直接應用 transform 的,沒有這個靜態屬性。(Unity規定)。 所以我們通過this.gameObject. 。 獲得這個腳本所在對象(返回GameObject).然后再獲取transform。

 

 

6: uGUI 中 老師,我怎么拉不動那中心點,總是拉著整個button或text?

答:你拉不動那個中心點,原因是Unity快捷欄中的“Center”在起作用,它保證中線點就一直在控件的中心位置。 所以請把“Center”點擊改為“Pivot”就可以移動控件中心點了。

 

 

7: C# 有高內聚低耦合的概念嗎?

 答:"高內聚低耦合"是開發中的一個重要設計與開發原則,C#作為國際上最流行的開發語言之一,當然具備。 本質上其實與語言無關,這是一種開發的宗旨、思想。

 

 

8: unity5 可以使用visualstudio 開發代碼,哪可以使用Eclipse開發嗎?

答:目前Unity 不支持Eclipse 作為代碼編輯器插件開發項目。

 

 

9: 數組定義好長度之后,想要改變長度怎么辦?

答:數組的特點就是,一點定義了長度,就不能更改。如果你要用可變長數組,就學習“Unity編程基礎篇”,里面講解了ArrayList集合。它的長度是可變的集合。其本質內部實現也是用數組,進行多個數組相互倒換實現的。

 

 

10: 旋轉的局部坐標系與世界坐標系的區別是什么?

答:局部坐標旋轉是指以父物體為參考,進行旋轉。而世界坐標系以“坐標陀螺”來進行旋轉。類似的情況例如:東、南、西、北、是世界坐標系。而前、后、左、右是局部坐標系

 

 

11: uGUI 怎么改變Canvas的屏幕大小?

答:兩種方法:1:可以推進攝像機,如果是2D開發,則把攝像機的Size 設置的更小些。 2:可以使用代碼方式對Canvas 的Scele 做縮放處理。

 

 

12: 怎樣保存游戲進度? Save 和 Load功能?

答:保存游戲的進度本質就是數據持久化技術的應用。例如我視頻中說的Unity提供的Playerfab 。可以把當前玩家的位置信息、狀態(分數、血量、**)等保存且持久化即可。如果是復雜的大量數據保存,建議用XML作對象與XML的串行化。具體可以看看我下月發行的《Unity3d/2d 游戲開發零基礎到精通》的,“數據持久化”章節有詳細論述。

 

 

13: 請問:我想通過腳本實現自定義換膚,如何實現比較好?如何利用Sprite Pakcer打包?

答:

//動態追加控件 GameObject GoCloneObject = newGameObject("Button"); //添加精靈(外觀處理) Image p_w_picpath= GoCloneObject.AddComponent<Image>(); Button btn =GoCloneObject.AddComponent<Button>(); p_w_picpath.overrideSprite=Resources.Load("Textures/Sprites/Emoticon - Frown", typeof(Sprite))as Sprite;

以上代碼可以實現動態生成控件,且自定義“換膚”。UGUI 中嚴格來說,我們不需要“Sprite Pakcer打包 ”

 

 

14: 用vs2013打開創建的C#腳本,調試的時候顯示:無法直接啟動帶有類庫輸出類型的項目,請在此解決方案中添加一個引用庫項目的可執行項目。將這個可執行項目設置為啟動項目!我已經設置了那個啟動項目,但是還是調試錯誤?

答:是這樣的。 VS只是我們寫代碼的工具,提供了類方法提示、方法高亮顯示等功能。但是腳本的運行,還是需要運行Unity的Play 按鈕的。

 

 

15: 老師我的VS 是Blend forstudio2013,在unity編輯器設置為VS打開C#腳本時,報錯打開的不是有效的項目,這該怎么辦啊

答:建議使用VS 2013(官方默認的是MonoDevelop)。你說的VS 版本可能不兼容。

 

 

16: 老師,我在unity5.0里面,想播放動畫,this.animation.play ();這樣不行~

答:API 有所更改。this.GetComponent<Animation>().Play();更多Unity5.0 內容API更新請首先看我博客:http://liuguozhu.blog.51cto.com/9142031/1631190 &nbsp; 。

 

 

17: text.rectTransform.rect.Set(0, 0, 417, 2*(j * 52.5f + 300));為什么沒有效果呢?如果要設置text的hright屬性要怎么辦?

答:這樣定義:txt_Obj.rectTransform.sizeDelta = newVector2(200, 200);//改變寬度與高度。

 

 

18: 老師,我問一個問題,我在game視圖16:10 Portrait(10:16)的視圖下運行游戲,場景里的物體運動都是正常的但是當我把game視圖切換到free aspect的時候,場景里的運動物體就都有了“殘影”,就像是屏幕沒有刷新一樣,這個是什么問題呢,我的攝像機用的是正交模式就像是屏幕不刷新了,每一幀都停留到了屏幕上?

答:

1: 這種情況,先考慮在你角色的背后,加一個背景貼圖。

2: ngui的圖集打的不能太大。

 

 

19: 老師,Unity中“預加載”什么意思,如何實現?

答: “預加載”一般分為兩種情況:

第1種情況: 轉換場景的時候,我們可以使用異步場景加載的技術,來實現。目的是給玩家一個顯示畫面,在系統后臺加載場景數據,等加載完畢,顯示整個場景。代碼舉例如下:

    public class ScenesLoading : MonoBehaviour{

        public Slider   Sli_Progressbar;                   //調用進度條

        private AsyncOperation async;                      //異步對象

        private float curProgress;                         //當前進度

 

        void Start ()

        {

            StartCoroutine(loadScene());

        }

 

        //異步讀取場景

        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種情況:

  在同一場景中實現“預加載”。

 如果一個場景非常龐大,勢必要進行優化。優化最簡單的思路可以如下:

1>  遮擋剔除。

2>  LOD 層級細節。

3>  “層消隱”處理

 

如果以上步驟還不明顯的話,可以人為的把整個大場景,劃分為幾個部分,當“角色”(主角)要進入一塊“區域”的時候,可以提前3-20秒進行場景的加載,當“角色”離開這片區域時,我們則可以銷毀這片“區域”,以節省計算機或者移動端設備的內容空間。 這就是“預加載”技術。核心代碼如下:

        void Start()

        {

 

            //啟動加載大型建筑模型

           StartCoroutine("LoadBigBuilding");

        }

       

      

        //本場景進入若干秒后,啟動“預加載”大型場景

        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.控制臺的消息怎么刪除,不出現這個

答: 這個警告信息告訴我們,場景中存在了2個“音頻監聽器”,這是Unity不允許的。 解決方法很簡單,你只需要把其中一個攝像機的監聽給禁止即可。例如下圖:

 

 總結Unity 初學者容易犯的編譯與運行時錯誤(第二部分)

 

 

 

21:角色控制器能不能觸發OnTriggerEnter等方法?

答:角色控制器(CharacterController)不能應用OnTriggerEnter 等方法,如果需要檢測CC(CharacterController),需要對方通過名稱或者Tag來觸發檢測。如果需要CC給剛體施加“力”,可以用  OnControllerColliderHit() 方法實現。

 

(關于其他更多的初學者常見Unity疑問與解答,后面還會繼續總結,敬請期待.)


    

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泰顺县| 天长市| 星子县| 驻马店市| 克拉玛依市| 视频| 和政县| 汶川县| 昌都县| 北海市| 滨州市| 新晃| 信阳市| 湖口县| 任丘市| 华蓥市| 上栗县| 措美县| 额尔古纳市| 威宁| 古田县| 东莞市| 永济市| 项城市| 宁河县| 长治市| 盐山县| 梨树县| 达拉特旗| 淮安市| 江山市| 吕梁市| 忻州市| 屏东市| 桐梓县| 大埔县| 余姚市| 如东县| 石门县| 黄浦区| 屯门区|