乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Unity和Lua交互

       kiki的號 2017-02-14

      用lua就表示項目用到了熱更新,通常每次熱更新都會從服務器獲取最新的lua腳本放到Android/ios設備的本地目錄下,但是lua應該放到哪個目錄下呢,這里就先說說lua里面的路徑問題


      1、不可以放到Resources文件夾下,因為無法找到其在設備下的位置,Resources下的東西是由unity來管理的,使用的時候通過Resources.load/loadAll來加載,而且后綴為lua的文件,無法通過Resources來加載


      2、不可以放到StreamingAssets文件夾,因為在設備下StreamingAssets文件夾里面的資源只能讀,不能寫,當我們熱更新最新的資源的時候,是不好操作的!而且StreamingAssets文件夾下的東西最終在生成apk的時候會被unity打包進一個叫pkg.apk的apk安裝包里,解壓這個pkg.apk可以看到StreamingAssets文件夾下的資源,pkg.apk是存在于應用的安裝目錄下的,是應用的資源文件,unity中設置應用的安裝目錄是由設置PlayerSettings下的Install Location來設置的,Install Location設置為Perfer External(優(yōu)先安裝到外部設備,也就是sdcard),安裝此包,用文件查看器查看才能看到此應用的安裝目錄(通常在/mnt/asec目錄下),但是沒有sdcard的手機貌似即使選項設置為了Perfer External也是看不到此應用的相關安裝目錄的,通常如下:  


      com.zwh.p1是我的包名,安裝目錄的名稱通常是(應用的包名-數字),此安裝目錄默認是不能刪除的,如果通過第三方軟件強制刪除,那么相對應的應用就會再也用不起來了(應用的數據文件被破壞),


      如果程序就是安裝到外部,那么都是能看到他的安裝目錄的,其他應用也是如此:



      如果Install Location設置為Force Internal(強制安裝到手機內存),那么是看不到程序的安裝文件的!


      如何訪問StreamingAssets文件下的資源:


      復制代碼

              string GetStreamingAssetsPath()
              {
                    return 
                  #if UNITY_ANDROID   
                      //"jar:file://" + Application.dataPath + "!/assets/";  
                      UnityEngine.Application.streamingAssetsPath+"/";
                  #elif UNITY_IPHONE  
                  Application.dataPath + "/Raw/";  
                  #elif UNITY_STANDALONE_WIN || UNITY_EDITOR  
                  "file://" + Application.dataPath + "/StreamingAssets/";  
                  #else  
                  string.Empty;  
                  #endif 
              }

      復制代碼

      復制代碼

      WWW www=new WWW("file://c:/a1.lua");
      
      //使用上面的方式加載c盤的lua文件時,是加載不出來的
      
      WWW www=new WWW("file:///c:/a1.lua");
      
      //加個斜桿/ 即可!

      復制代碼

      當我把一個lua文件放到unity下StreamingAssets文件夾里,然后通過如上代碼去訪問這個lua文件,打印訪問的路徑如下:



      路徑 = jar:file:///mnt/asec/com.zwh.p1-1/pkg.apk!/assets/mi.lua


      由此可見,StreamingAssets文件夾下的資源被打包進了pkg.apk這個安裝包里去了!


      3、先看看unity中幾個路徑有關的類,在android平臺輸出的路徑為什么


      復制代碼

      Debug.Log ("temporaryCachePath = " + UnityEngine.Application.temporaryCachePath);   //temporaryCachePath = /storage/sdcard0/Android/data/com.zwh.p1/cache
      Debug.Log ("dataPath = " + UnityEngine.Application.dataPath);                       //dataPath = /mnt/asec/com.zwh.p1-2/pkg.apk
      Debug.Log ("persistentDataPath = " + UnityEngine.Application.persistentDataPath);   //persistentDataPath = /storage/sdcard0/Android/data/com.zwh.p1/files
      Debug.Log ("streamingAssetsPath = " + UnityEngine.Application.streamingAssetsPath); //streamingAssetsPath = jar:file:///mnt/asec/com.zwh.p1-2/pkg.apk!/assets

      復制代碼

      可以看出dataPath和streamingAssetsPath指的是程序安裝的位置,而temporaryCachePath和persistentDataPath指的則是sdcard的位置,所以可以選擇這兩個路徑作為存放lua文件的地方,


      前提是unity出包的時候,要設置Playersettings下Write Access為External(SDCard),不然這兩個路徑的位置是不一樣的!


       

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多