unity3d--雜記

Sly_461發表於2016-09-20

1.設定圖示指標圖片:

File->Build Settings ->Player Settings.   此時可將Inspector檢視中default cursor(預設游標) 改成你想要的texture紋理。(這是更改整個場景的預設滑鼠樣式)

2.設定天空顏色:

camera中的clear flags設定為skybox,同時新增一個skybox的元件,新增custom skybox為自己想要的shader(著色器)。

3.Time.deltatime:

Time類包含了一個重要的類變數deltaTime,它表示距上一次呼叫Update或FixedUpdate所用的時間。如果想要一個值根據每幀的變化而變化(增加或減少) ,你應該使用 Time.deltaTime來乘以這個值。這樣才能使得變化的效果依賴於單位時間,而不是幀頻。這不僅使得遊戲的執行獨立於幀頻,也使得運動的效果符合現實。 
同理,要讓燈光的照射範圍在每秒使半徑增加 2個單位,可進行如下編碼: 
function Update() 

   light.range += 2.0 * Time.deltaTime; 

4.Unity 5的Enlighten被放在Window->Lighting選單項下,並整合了原本的RenderSetting設定,所以你可以在Lighting選項卡內找到包含skybox或是即時或烘焙光源的設定.

5.注意:在inspector檢視中,有一些指令碼如果不展開的話,有些方法或者屬性就不起作用了。

6.SlicedSprite九宮切圖可以定義一個圖片邊框部分不被拉伸。

7.在Tween Alpha中Tweener 下面,player style可以控制漸變的效果(持續漸變或者是隻是漸變一次等等)。

8.NGUI中invisible widget(隱藏部件)建立來放幾個child按鈕,以便對這幾個按鈕同時進行操作。

9.關於Gameobject 和Transform這兩兄弟我轉載了一篇部落格。

9.關於遊戲存檔,利用playerprefs,轉載了一篇部落格。

10.對於NGUI,它帶有一個UI Play Sound指令碼,把它掛在一個按鈕上,然後可以通過設定某個觸發事件來播放音樂。

11.可以在game模式下調整位置資訊等 然後複製一下(copy component),再在scene模式下貼上(paste component values ).

12.Camera.main  第一個啟用的被標記為“MainCanmera”的相機(只讀),如果場景中沒有相機返回Null.

13. offsetPosition.normalized表示單位向量。

14.offsetPosition.magnitude表示向量的長度。

15.function RotateAround (point : Vector3, axis : Vector3, angle : float) : void

按照angle度通過在世界座標的point軸旋轉物體。
簡單的說,按照多少度在世界座標的某位置軸旋轉物體。

function Update() {
// Spin the object around the world origin at 20 degrees/second.
//圍繞世界座標原點,每秒20度物體自旋
transform.RotateAround (Vector3.zero, Vector3.up, 20 * Time.deltaTime);
}

16.Transform.Rotate 旋轉
應用一個尤拉角的旋轉角度,eulerAngles.z度圍繞z軸,eulerAngles.x度圍繞x軸,eulerAngles.y度圍繞y軸(這樣的順序)。

gameObject.transform.Rotate(new Vector3(0,1,0),Input.GetAxis("Horizontal");//表示按下左右鍵圍繞Y軸旋轉

17.不要分別設定尤拉角其中一個軸(例如: eulerAngles.x = 10; ),因為這將導致偏移和不希望的旋轉。當設定它們一個新的值時,要同時設定全部。Unity會從Transform.rotation這個四元組結構中轉換角度到尤拉角的表達方式,或者反過來。

18.UICamera.hoveredObjec  判斷滑鼠是否位於UI介面的元件上(防止在點選UI介面時人物移動)

19.TweenPosition(位移動畫)用法:
用法1.NGUI的控制元件從PosA位置移動到PosB位置,播放動畫
用法2.在遊戲中需要動態建立帶有TweenPosition元件動畫的物件,物件建立、移動、到達指定位置、銷燬的過程。
eg.遊戲中玩家吃金幣,遲到金幣後轉換為分數,分數播放一個TweenPosition元件動畫,從玩家位置移動到分數標籤位置,到達分數後,銷燬。

questTween.PlayReverse(); //正著播放

questTween.PlayForward();//反著播放

20.更改某一物體上的圖示樣式:

  1. var cursorTexture : Texture2D;  
  2. var cursorMode : CursorMode = CursorMode.Auto;  
  3. var hotSpot : Vector2 = Vector2.zero;  
  4.   
  5. function OnMouseEnter () {  
  6.     Cursor.SetCursor(cursorTexture, hotSpot, cursorMode);  
  7. }  
  8.   
  9. function OnMouseExit () {  
  10.     Cursor.SetCursor(null, Vector2.zero, cursorMode);  
  11. }
21.繼承monobehavior的單例:

using UnityEngine;
using System.Collections;
public class test2 : MonoBehaviour {
    public static test2 instance;
    // Use this for initialization
    void Awake () {
        instance = this;
    }
     
    // Update is called once per frame
    void Update () {
 
    }
}
22.OnMouseOver() 當滑鼠位於這個collider上時,會在每一幀呼叫這個函式

OnMouseEnter()  當滑鼠位於這個collider上時,會呼叫一次這個函式

23.Anchor 是NGUI中關於各種部件對齊的一個元件. 

24.引進一個文字檔案 public TextAsset objectsInfoListText。

25. Dictionary<int,ObjectInfo> 字典  根據前者去索引後者 ,

ObjectInfoDic.Add(id, info);// 新增到字典中 根據id查詢到物品資訊


ObjectInfo info = null;
ObjectInfoDic.TryGetValue(id, out info);  //根據id去找info 找到返回true  否則返回false

26.基於UIDragDropItem指令碼可以實現簡單的控制元件拖拽

27.

C# String.split()用法小結

第一種方法
string s=abcdeabcdeabcde;
string[] sArray=s.Split('c') ;
foreach(string i in sArray)
Console.WriteLine(i.ToString());
輸出下面的結果:
ab
deab
deab
de
第二種方法
我們看到了結果是以一個指定的字元進行的分割。使用另一種構造方法對多個字
符進行分割:
string s="abcdeabcdeabcde";
string[] sArray1=s.Split(new char[3]{'c','d','e'}) ;
foreach(string i in sArray1)
Console.WriteLine(i.ToString());
可以輸出下面的結果
ab
ab
ab

28.int.Parse()  將數字的字串表示形式轉換成它的等效32位有符號整數。