您好,登錄后才能下訂單哦!
用過XCode的人都知道,XCode有一個臭名昭著的bug——除非你修改了源代碼造成了重新編譯,否則游戲包中的資源經常無法刷新。不管怎么運行資源都是舊的。
關于這個問題,業內有幾位同行已經詳細探討過了。有幾種解決方法,其中一種方法是,在運行時強制把資源刪除,這樣XCode會重新導入新的資源。要做到這一點就是寫一個腳本,讓這個腳本在XCode運行時自動執行。
“我是妖怪”兄曾經寫了一個blog,來論述如何寫這個腳本,我修改了一下,封裝成了函數,這樣做新項目時很方便。(好吧,這個是改的,叫自制工具不太好,但是系列標題又不好改。。。)
_TARGET_BUILD_CONTENTS_PATH=$TARGET_BUILD_DIR/$CONTENTS_FOLDER_PATH echo _TARGET_BUILD_CONTENTS_PATH: $_TARGET_BUILD_CONTENTS_PATH echo PWD: $PWD echo Cleaning $_TARGET_BUILD_CONTENTS_PATH/ #函數作用:刷新資源文件夾,解決xcode不能刷新資源文件夾的bug #參數1:傳入要操作的文件夾 function operation_folder() { rm -fr $_TARGET_BUILD_CONTENTS_PATH/$1/* mkdir -p $_TARGET_BUILD_CONTENTS_PATH/$1/ #判斷文件夾不為空,才進行復制,防止cp命令報錯 DIRECTORY=$PWD/../Resources/$1/ if [ "`ls $DIRECTORY`" != "" ]; then cp -RLp $DIRECTORY/* $_TARGET_BUILD_CONTENTS_PATH/$1/ echo operation_folder:$1 completed! fi }
調用的時候,在這段代碼后面接著寫,函數直接后面加參數就行,比如你的Resources下面有若干子文件夾,pic,ui,sound等。如下方式調用:
operation_folder sound; operation_folder ttf; operation_folder script; operation_folder data; operation_folder pic; operation_folder ui;
然后把這個腳本加載到項目的Build Phases中。XCode每次run都會運行這個腳本。
參考文獻:
確保 Xcode 每次 Build 時都自動更新資源——我是妖怪兄的原文,這篇文字的代碼就是改自這里
http://dualface.github.io/blog/2013/07/31/flush-res-when-build/
XCode ios iphone 變態的資源管理——這篇文章詳細論述了XCode資源更新的bug
http://www.cnblogs.com/dabaopku/archive/2012/04/11/2441679.html
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。