1. 程式人生 > >Unity各平臺判斷總結

Unity各平臺判斷總結

課堂老師講到的,記錄下來, 更多Unity的實用技巧請前往paws3d學習中心搜尋。連結https://www.paws3d.com/learn/,喜歡遊戲開發的小夥伴還可以加群935714213

 

unity 平臺判斷有兩種方法去判斷當前的平臺方式

 

         1: 一種是在編譯層次還有

 

         2: 一種是在執行層次

 

 

平臺判斷:

 

        執行時判斷:

 

if(Application.platform == RuntimePlatform.WindowsWebPlayer)

{

//只有在windows系統的webplayer平臺上才會執行

}

       編譯時判斷:

 

 

 

屬性: 功能:

UNITY_EDITOR 從遊戲程式碼呼叫Unity編輯器指令碼的#define指令。

UNITY_EDITOR_WIN Windows上編輯器程式碼的#define指令。

UNITY_EDITOR_OSX Mac OS X上編輯器程式碼的#define指令

UNITY_STANDALONE_OSX #define偽指令,專門用於編譯/執行Mac OS X(包括Universal,PPC和Intel體系結構)的程式碼。

UNITY_STANDALONE_WIN #define指令,用於編譯/執行專門針對Windows獨立應用程式的程式碼。

UNITY_STANDALONE_LINUX #define指令,用於編譯/執行專門針對Linux獨立應用程式的程式碼。

UNITY_STANDALONE #define偽指令,用於編譯/執行任何獨立平臺(Mac OS X,Windows或Linux)的程式碼。

UNITY_WII 編譯/執行Wii控制檯程式碼的#define指令。

UNITY_IOS 編譯/執行iOS平臺程式碼的#define指令。

UNITY_IPHONE 已過時。改用UNITY_IOS。

UNITY_ANDROID Android平臺的#define指令。

UNITY_PS4 執行PlayStation 4程式碼的#define指令。

UNITY_SAMSUNGTV 執行三星電視程式碼的#define指令。

UNITY_XBOXONE 執行Xbox One程式碼的#define指令。

UNITY_TIZEN Tizen平臺的#define指令。

UNITY_TVOS Apple TV平臺的#define指令。

UNITY_WSA 通用Windows平臺的#define指令。此外,NETFX_CORE是在針對.NET Core編譯C#檔案並使用.NET指令碼後端時定義的。

UNITY_WSA_10_0 通用Windows平臺的#define指令。另外,WINDOWS_UWP是在針對.NET Core編譯C#檔案時定義的。

UNITY_WINRT 與UNITY_WSA相同。

UNITY_WINRT_10_0 相當於UNITY_WSA_10_0

UNITY_WEBGL WebGL的#define指令。

UNITY_FACEBOOK Facebook平臺的#define指令(WebGL或Windows獨立版)。

UNITY_ADS 從遊戲程式碼呼叫Unity Ads方法的#define指令。版本5.2及以上。

UNITY_ANALYTICS 從遊戲程式碼呼叫Unity Analytics方法的#define指令。版本5.2及以上。

UNITY_ASSERTIONS 斷言控制過程的#define指令。

 

 

#if UNITY_ANDROID

    Debug.Log("這裡是安卓裝置");

#endif

 

#if UNITY_IPHONE

        Debug.Log("這裡是蘋果裝置");

#endif

 

#if UNITY_STANDALONE_WIN

        Debug.Log("我是從Windows的電腦上執行的");

#endif

 

 

下面是各個路徑對應的位置和訪問方式 

 

1、Resources路徑

 

  Resources資料夾是Unity裡自動識別的一種資料夾,可在Unity編輯器的Project窗口裡建立,並將資源放置在裡面。Resources資料夾下的資源不管是否有用,全部會打包進.apk或者.ipa,並且打包時會將裡面的資源壓縮處理。載入方法是Resources.Load<T>(檔名),需要注意:檔名不包括副檔名,打包後不能更改Resources下的資源內容,但是從Resources資料夾中加載出來的資源可以更改。

 

2、Application.dataPath路徑

 

  這個屬性返回的是程式的資料檔案所在資料夾的路徑,例如在Editor中就是專案的Assets資料夾的路徑,通過這個路徑可以訪問專案中任何資料夾中的資源,但是在移動端它是完全沒用。

 

3、Application.streamingAssetsPath路徑

 

  這個屬性用於返回流資料的快取目錄,返回路徑為相對路徑,適合設定一些外部資料檔案的路徑。在Unity工程的Assets目錄下起一個名為“StreamingAssets”的資料夾即可,然後用Application.streamingAssetsPath訪問,這個資料夾中的資源在打包時會原封不動的打包進去,不會壓縮,一般放置一些資源資料。在PC/MAC中可實現對檔案的“增刪改查”等操作,但在移動端是一個只讀路徑。

 

4、Application.persistentDataPath路徑(推薦使用)

 

  此屬性返回一個持久化資料儲存目錄的路徑,可以在此路徑下儲存一些持久化的資料檔案。這個路徑可讀、可寫,但是隻能在程式執行時才能讀寫操作,不能提前將資料放入這個路徑。在IOS上是應用程式的沙盒,可以被iCloud自動備份,可以通過同步推送一類的助手直接取出檔案;在Android上的位置是根據Project Setting裡設定的Write Access路徑,可以設定是程式沙盒還是sdcard,注意:如果在Android設定儲存在沙盒中,那麼就必須root以後才能用電腦取出檔案,因此建議寫入sdcard裡。一般情況下,建議將獲得的檔案儲存在這個路徑下,例如可以從StreamingAsset中讀取的二進位制檔案或者從AssetBundle讀取的檔案寫入PersistentDatapath。

 

5、Application.temporaryCachePath路徑

 

  此屬性返回一個臨時資料的快取目錄,跟Application.persistentDataPath類似,但是在IOS上不能被自動備份。

 

6、/sdcard/..路徑

 

  表示Android手機的SD卡根目錄。

 

7、/storage/emulated/0/..路徑(這個路徑我查找了好久……)

 

  表示Android手機的內建儲存根目錄。