在編寫Unity腳本時, 常常需要同時引入System及UnityEngine命名空間

但在UnityEngine中有一些常用的類也命名於System, 比如Random / Object等等, 如果直接使用會提示錯誤:

using System;
using UnityEngine;

public class GameManager : MonoBehaviour {
    void Start() {
        Random.Range(0, 100); // Error: 'Random' is an ambiguous reference between 'UnityEngine.Random' and 'System.Random'
    }
}

以前我的做法是在類名前寫明命名空間:

using System;
using UnityEngine;

public class GameManager : MonoBehaviour {
    void Start() {
        UnityEngine.Random.Range(0, 100); // Working!
    }
}

但這樣缺點是產生了冗餘的代碼, 使人不想引入System這個導致衝突的命名空間.

但其實C#早已想到這個情況, 已經提供了一個很好的解決方法.

只需在引入命名空間時, 注明某類名來自哪個命名空間:

using System;
using UnityEngine;
using Random = UnityEngine.Random;

public class GameManager : MonoBehaviour {
    void Start() {
        Random.Range(0, 100); // Working Good!!
    }
}