让XCode 在运行时及时更新资源。
我遇到的是这样的问题:用 CocosBuilder 编辑好的界面 , 我对界面中的控件显示的文字信息做了调整,然后导出后依然显示之前的文字信息。
但问题时,其依然显示修改前的信息。
解决方案一:
1、单机你的工程文件(如果没有Run Script 选项的话) ---> 选择工具栏Editor ---> Add Build Phase ---> Add Run Script Build Phase 选项
这是右侧显示的大区域中就会包含一个 Run Script 选项。
2、在 Run Script 中添加 信息 find ${SRCROOT}/../Resources -exec touch {} \; 如下图:
最后 注意: Run Script 与 Compile Sources(xxx) 的位置关系,一定要将Run Script 放到 Compile Sources 上面!!!
解决方案二:
转自: http://goldlion.blog.51cto.com/4127613/1351616
用过XCode的人都知道,XCode有一个臭名昭著的bug——除非你修改了源代码造成了重新编译,否则游戏包中的资源经常无法刷新。不管怎么运行资源都是旧的。
关于这个问题,业内有几位同行已经详细探讨过了。有几种解决方法,其中一种方法是,在运行时强制把资源删除,这样XCode会重新导入新的资源。要做到这一点就是写一个脚本,让这个脚本在XCode运行时自动执行。
_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都会运行这个脚本
因为 Resource 文件目录层级的特殊性,我使用的是第一种方式来处理这个问题,解决问题的方式不止一种,我们要学会从多方面思考问题,解决问题。Good Luck !