U3D優(yōu)化tips

關(guān)于unity的log網(wǎng)上也有很多介紹,下面的只是使用的一點(diǎn)心得:

using UnityEngine;
using System.Collections;

public class TestLogger : MonoBehaviour {

    public static int Test()
    {
        Debug.Log("t");
        return 1;
    }
    public static void Log1(int o)
    {
        #if TestLog
        Debug.Log(o);
        #endif
    }
    [System.Diagnostics.Conditional("TestLog")]
    public static void Log2(int o)
    {
        Debug.Log(o);
    }
    void Start () {
        Log1(Test());
        Log2(Test());
    }   
}

如果宏定義中加了TestLog,那么會(huì)輸出兩遍t和1,如果不加宏定義那么Log1執(zhí)行時(shí)會(huì)輸出一次t,而Log2不會(huì)執(zhí)行,這就是Conditional的好處。
還有一個(gè)是關(guān)于移進(jìn)移出Camera視域來達(dá)到隱藏顯示效果,下面是我在Camera為正交相機(jī)size為1且Camera在panel的(0,0,0)處所實(shí)現(xiàn)的代碼:

 /// <summary>
    /// 移進(jìn)移出顯示/隱藏
    /// </summary>
    /// <param name="trans">camera所在層級(jí)的panel.transform</param>
    /// <param name="go">被操作的物體</param>
    /// <param name="activeFlag">顯示/隱藏</param>
    public static void ChangeActive(Transform trans,GameObject go,bool activeFlag)
    {
        if (!go.activeSelf)
        {
            go.SetActive(true);
        }
        float distance = Math.Abs(trans.position.x-go.transform.position.x);
        if (distance<=Screen.width)
        {
            go.transform.position += new Vector3(Screen.width, 0, 0);
        }
        else
        {
            go.transform.position -= new Vector3(Screen.width, 0, 0);
        }
    }

雖然達(dá)到了效果,但是被大佬教育了,不同的坐標(biāo)系混用,而且不通用,應(yīng)該用viewport的位置,Camera有一些函數(shù)screenpointtoray之類的,要把Screen坐標(biāo)轉(zhuǎn)到World的,了解一些3D空間:模型空間、世界空間、投影空間、屏幕空間,看來以后得多學(xué)習(xí)一些圖形學(xué)基礎(chǔ)知識(shí)了==
  還有一點(diǎn)就是通常把GetComponent的引用緩存起來而不是用到的時(shí)候再調(diào),這一點(diǎn)可以參考這個(gè)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,462評(píng)論 25 708
  • 數(shù)學(xué)是計(jì)算機(jī)技術(shù)的基礎(chǔ),線性代數(shù)是機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的基礎(chǔ),了解數(shù)據(jù)知識(shí)最好的方法我覺得是理解概念,數(shù)學(xué)不只是上學(xué)...
    闖王來了要納糧閱讀 22,849評(píng)論 2 48
  • 最先執(zhí)行的方法是: 1、(激活時(shí)的初始化代碼)Awake,2、Start、3、Update【FixUpdate、L...
    困卡閱讀 4,282評(píng)論 0 8
  • 1 我是很晚才開始用微信的,不得不用也是因?yàn)槿绻也挥梦⑿诺脑挕?很多事情會(huì)比較麻煩,比如很多朋友就很難聯(lián)絡(luò)上、畢...
    趙虹宇閱讀 1,138評(píng)論 0 0
  • 自從檸?kù)排c李毅然的關(guān)系不再像以前一樣了以后,感覺班上所有的事情都針對(duì)檸?kù)潘麄兌鴣怼? 開學(xué)第二周的星期一...
    容大大閱讀 232評(píng)論 0 0