快速連結

2017年8月9日

【筆記區】List用ToArray轉成Array的理由

最近為了煩惱要不要把List轉成Array傳給function去做處理,爬了一些文,很多年前就有回答:C# List.ToArray performance is bad?


底下有個回答寫的很清楚:
Reasons to call ToArray()


  • If the returned value is not meant to be modified, returning it as an array makes that fact a bit clearer.
  • If the caller is expected to perform many non-sequential accesses to the data, there can be a performance benefit to an array over a List<>.
  • If you know you will need to pass the returned value to a third-party function that expects an array.
  • Compatibility with calling functions that need to work with .NET version 1 or 1.1. These versions don't have the List<> type (or any generic types, for that matter).


Reasons not to call ToArray()


  • If the caller ever does need to add or remove elements, a List<> is absolutely required.
  • The performance benefits are not necessarily guaranteed, especially if the caller is accessing the data in a sequential fashion. There is also the additional step of converting from List<> to array, which takes processing time.
  • The caller can always convert the list to an array themselves.
轉換驗證:
C# Convert List to Array - Dot Net Perls

列出來XD

2016年12月13日

【UGUI】將Particle夾在UI中間



使用UGUI或是NGUI的時候總是有不知道怎麼把mesh或是particle夾在UI之間,最近用了一個小方法來試試看XD

2016年11月24日

Unity Coroutine測試小程式

有時候太常使用StartCoroutine與StopCoroutine,有時候卻發現Coroutine沒有乖乖的被停止!
列舉出幾種使用Coroutine組合的結果是停止成功或停止失敗,同時也在最下方附上測試用小程式~

成功的→

StartCoroutine("Runner", "Text Run"); + StopCoroutine("Runner");
m_Runner = StartCoroutine(Runner("Love")); +  StopCoroutine(m_Runner);

失敗的→

StartCoroutine(Runner("Love")); + StopCoroutine("Runner");
StartCoroutine(Runner("Love")); +  StopCoroutine(Runner("Love"));

2016年11月6日

C#中,DateTime與TimeStamp互轉

直接看CODE~

DateTime 轉 TimeStamp:

public static double DateTimeConvertToTimeStamp(DateTime Date)
{
    return (Date.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0) ).TotalSeconds;
}

TimeStamp 轉 DateTime:

public static DateTime TimeStampConvertToDateTime(long TimeStamp)
{
    return (new DateTime(1970, 1, 1, 0, 0, 0)).AddSeconds(TimeStamp);
}

2016年8月10日

【筆記】在Orthographic camera中取得寬高

筆記來源 how to get the width and height of a Orthographic camera.


Camera cam = Camera.main;
 float height = 2f * cam.orthographicSize;
 float width = height * cam.aspect;

2016年8月8日

Unity內的Delegate.CreateDelegate

真心大崩潰的Delegate.CreateDelegate流程。
筆記一下來紀念我花了一小時發現他給的"ArgumentException" Error意涵(哭奔)

2016年4月22日

【淺顯易懂系列】Unity基本概念(CS + JS)


因為最近有很多遊戲設計系或是視覺系的孩子們需要Unity的程式教學,所以特別寫了超淺顯易懂的版本出來~
雖然可能寫得很大概,但主要是給「僅僅理解」就好的人看的!
如果有寫錯請多多包涵並且歡迎留言告知!

2015年11月12日

Unity MonoBehaviour內建函式執行順序

※2016.08:
LateUpdate()不見得會在Update()後出現、有時候也有可能在Awake()前出現。

Awake() → OnEnable() → Start() → Update() → LateUpdate() → OnGUI() → OnDestroy() → OnDisable()



不過OnGUI執行次數會是Update的兩倍,是因為他要取得執行Layout與重繪。
可以參考此篇的回答:Why is OnGUI called significantly more than Update and FixedUpdate?

2015年10月29日

【筆記】自定義Inspector篇:Hide in Inspector



                   



Code與Infomation源頭:Hide in Inspector

在自定義Unity編輯面板中,其中一個有趣的顯示方式:勾選其中一個Boolean值來決定是否在Inspector上顯示該項目。

2015年10月7日

OnTrigger與OnCollision的時機

Script內需要利用碰撞、觸發時,該物件內一定要掛載Collider元件,但是有沒有勾選Trigger會造成不同的狀況。

沒有Trigger的狀況下,當物體之間碰到彼此Collider的表面時,便會觸發彼此的OnCollisionEnter事件,且兩物體至少要有一個有Rigidbody。
有Trigger的狀況下,當A物體進入B物體的Collider範圍內的瞬間,便會觸發B物體的OnTriggerEnter事件。

但是物體的parent上加入Rigidbody後,事情會變得更加複雜些。