Unity學習筆記——tips

獲得所有子物體

網上查的是

foreach (Transform child in transform)
{
    Debug.Log(child.gameObject.name);
}
應該避免使用foreach,會有以下兩個問題

1. 慢。foreach調用GC Alloc。

2. 不能更改集合中內容以避免不可預知錯誤。


所以還是用for循環比較好,找了下transform接口,這樣寫應該可以

for (int i = 0; i < transform.childCount; i++)
{
<span style="white-space:pre">	</span>Debug.Log(transform.GetChild(i).name)
}


點擊邊緣任意位子關閉當前面板

寫遊戲的時候經常需要打開面板後點擊其他地方然後關閉的效果
面板中一個變量isOpen記錄當前面板是否打開
在Update函數中判斷 ,如果當前面板已經打開,並且點擊鼠標,判斷鼠標點擊位置碰撞的是什麼物體
若碰撞的物體不屬於當前面板(可以用name.Contains來判斷)則關閉當前面板
<span style="white-space:pre">		</span>Ray ray;
		ray = Camera.allCameras[1].ScreenPointToRay(new Vector3(m_lastClickPos.x, m_lastClickPos.y, 0));
		RaycastHit hit;
		if (Physics.Raycast(ray, out hit))//函數是對射線碰撞的檢測
		{
			Vector3 Point = hit.point;//得到碰撞點的座標
<span style="white-space:pre">			</span>print("碰撞的是:" + hit.collider.gameObject.name);
<span style="white-space:pre">		</span>}


NGUI——UILabel不同格式字體

首先確認在屬性面板中勾選了 BBCode,在需要改變顏色的字體中嵌入顏色代碼
label.text = "[ff0000]"+"你需要的文字"+"[-]"
此外還可以修改格式
[b]bold[/b]
[i]italic[/i]
[u]underline[/u]
[s]strikethrough[/s]



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章