真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

Unity不同平臺生成中預處理的注意點-創(chuàng)新互聯

Unity3D的項目,這周吃虧在宏上了。大背景是項目需要在Unity中用Hudson自動生成不同平臺的版本。

成都創(chuàng)新互聯公司長期為上千多家客戶提供的網站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態(tài)環(huán)境。為科爾沁左翼企業(yè)提供專業(yè)的網站設計、成都網站建設科爾沁左翼網站改版等技術服務。擁有10年豐富建站經驗和眾多成功案例,為您定制開發(fā)。

程序設計語言的預處理的概念:在編譯之前進行的處理。

#if UNITY_WEBPLAYER
      BuildTarget target = BuildTarget.WebPlayer;
#elif UNITY_STANDALONE_WIN && UNITY_EDITOR
       BuildTarget target = BuildTarget.StandaloneWindows;
#elif UNITY_ANDROID
      BuildTarget target = BuildTarget.Android;
#else
      BuildTarget target = BuildTarget.iPhone;
#endif

#if UNITY_WEBPLAYER
  public const string AssetRootPath = AutomaticBuild.WebPlatFormDataPath + "/";
#elif UNITY_STANDALONE_WIN && UNITY_EDITOR
   public const string AssetRootPath = AutomaticBuild.WinPlatFormDataPath + "/";
#elif UNITY_ANDROID
  public const string AssetRootPath = AutomaticBuild.AndRoidPlatFormDataPath + "/";
#else
  public const string AssetRootPath = AutomaticBuild.IOSPlatFormDataPath + "/";
#endif

如上面兩段代碼,打開Unity項目(例如PC & Mac Standalone保存的)之后,再打開項目的Script(這里用VS2008+VA),會發(fā)現上述加粗行高亮。即Target和AssetRootPath在編譯前已然確定,且之后不能對其做出變更。

當采用Unity支持的命令編譯時C:\program files\Unity\Editor>Unity.exe -quit -batchmode -executeMethod MyEditorScript.MyMethod

此時MyMethod可能用了如下代碼,

BuildPipeline.BuildPlayer( levels, "WebPlayerBuild",                     BuildTarget.WebPlayer, BuildOptions.None);
但Target和AssetRootPath并沒有賦予應有的Web相應值,會造成生成的Unity3D文件能生成但不對,執(zhí)行BuildPlayer時會報Runtime Error錯。

不禁讓我想起Effective C++里的第2個條款:盡量以const, enum, inline替換 #define。果然金科玉律……

我的解決方式如下:

1.在MyMethod中先調用

SwitchActiveBuildTarget (target : BuildTarget)函數。

  private static string AssetRootPath = null;

  public static string GetAssetRootPath()
  {
    if (AssetRootPath != null)
      return AssetRootPath;

    if (EditorUserBuildSettings.activeBuildTarget==BuildTarget.WebPlayer)
    {
      AssetRootPath = "WebData/LatestData/";
    }
    else if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android)
    {
      AssetRootPath = "AndroidData/LatestData/";
    }
    else if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows)
    {
      AssetRootPath = "WinData/LatestData/";
    }
    else
    {
      AssetRootPath = "IOSData/LatestData/";
    }

    return AssetRootPath;
  }

  public static BuildTarget GetBuildTarget()
  {
    return EditorUserBuildSettings.activeBuildTarget;
  }

由于需求的小變更,小小地重構了上次的代碼:

    ClearISingleFileSeries();
    ClearDirectorySeries();


  ///
  /// 刪除單個文件的數組
  ///

  static void ClearISingleFileSeries()
  {
    string[] SingleFileSeries = { Application.dataPath + "/Plugins/I18N.dll", Application.dataPath + "/Plugins/I18N.CJK.dll", Application.dataPath + "/Plugins/I18N.West.dll" };
    ClearFiles(SingleFileSeries);
  }


  ///
  /// 刪除filesPath數組內指向的文件
  ///

  ///  
  static void ClearFiles(string[] filesPath)
  {
    foreach (string singleFilePath in filesPath)
    {
      if (File.Exists(singleFilePath))
      {
        try
        {
          File.Delete(singleFilePath);
        }
        catch (System.Exception ex)
        {
          //catch ex
        }
      }
    }
     
  }


  ///
  /// 刪除目前做Web版本會出現內存問題的Audio資源
  ///

  static void ClearDirectorySeries()
  {
    string[] audioPath = { Application.dataPath + "/Game/Audio/Resources", Application.dataPath + "/Game/Audio/SFX", Application.dataPath + "/Game/MyGUI" };
    foreach (string audioDirectory in audioPath)
    {
      if (Directory.Exists(audioDirectory))  //保護,避免文件目錄不存在跳異常
        ClearFilesAndDirectory(audioDirectory);
    }
  }

     
  ///
  /// 刪除dataPath文件目錄下的所有子文件及子文件夾
  ///

  ///  
  static void ClearFilesAndDirectory(string DirectoryPath)
  {
    DirectoryInfo dir = new DirectoryInfo(DirectoryPath);


    //文件
    foreach (FileInfo fChild in dir.GetFiles("*"))
    {
      if (fChild.Attributes != FileAttributes.Normal)
        fChild.Attributes = FileAttributes.Normal;
      fChild.Delete();
    }


    //文件夾
    foreach (DirectoryInfo dChild in dir.GetDirectories("*"))
    {
      if (dChild.Attributes != FileAttributes.Normal)
        dChild.Attributes = FileAttributes.Normal;
      ClearFilesAndDirectory(dChild.FullName);
      dChild.Delete();
    }

  }

轉載自:http://blog.csdn.net/pandawuwyj/article/details/7959335

另外有需要云服務器可以了解下創(chuàng)新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


本文名稱:Unity不同平臺生成中預處理的注意點-創(chuàng)新互聯
標題來源:http://weahome.cn/article/cecccg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部