Unity3D 是一个用于创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的综合型创作工具。其编辑器运行在Windows和Mac OS X下,可发布游戏至Windows、Wii、OSX或iOS平台。他的持续集成方法主要是通过调用 BuildPipline.BuildPlayer() 方法来实现直接生成Windows/MacOS下可运行的程序,或生成Android/iOS项目,再通过脚本进行编译打包生成apk/ipa。利用图形化界面Jenkis来方便用户使用。
在Unity项目的Assets/Editor下新建 ProjectBuild.cs 类。 类内按所要生成的目标产生静态方法,如要生成Windows版本可执行程序:
static void BuildForWindows()
{
BuildPipeline.BuildPlayer(levels,locationPath,BuildTarget.StandaloneWindows,BuildOptions.None);
}
产生给jenkins调用的shell脚本
#!/bin/sh
#配置基础项地址
PROJECT_NAME=HelloWorld
PATH=/Application/Unity/Unity.app/Contents/MacOS
PROJECT_PATH=/User/xxx/DEMO/$PROJECT_NAME
#调用Unity脚本生成目标平台程序,其中-projectPath为指定项目 所在路径,-executeMethod参数为指定要指定生成的类以及方法。-quit为指定执行所有操作后退出unity
Unity -projectPath $PROJECT_PATH -executeMethod ProjectBuild.BuildForWindows -quit
给该脚本赋予执行权限 chmod 700 unity2bin.sh
执行该脚本 ./unity2bin.sh
.至此WINDOWS版本所有脚本生成完毕。
为了便于远程下载,建议再对生成目录进行一次打包操作 tar zcvf $projectname.tgz $project_path/build/
选看章节,让项目支持SVN获取代码。因这次需求方还在使用SVN进行项目管理。为了避免版本冲突之类造成麻烦,建议每次都在临时目录进行项目的或者与生成,在生成完毕后只保留项目的二进制结果,删除临时代码。
/gen /bin /result
三个目录,请提前用mkdir 进行生成。aapt p -f -m -J gen -S res -I android.jar -M AndroidManifest.xml
javac -encoding UTF-8 -bootclasspath android.jar -d bin *.java -classpath libs/unity-classes.jar
dx --dex --output=bin/classes.dex bin libs/unity-classes.jar
aapt p -f S res -I android.jar -M AndroidManifest.xml -A assets -F result/$projectname.ap_ --auto-add-overlay
keytool
生成签名证书文件 keytool -genkey -alias gyyx-android.keystore -keyalg RSA -validity 20000 -keystore android.keystore
Unity -projectPath $PROJECT_PATH -executeMethod ProjectBuild.BuildForiOS -quit
xcodebuild -project Unity-iPhone.xcodeproj -target Unity-iPhone ENABLE_BITCODE=NO
以上内容本人进一周的尝试和整理所得,希望对你有所帮助。完成的unity2bin.sh请点击下载。 使用方法
./unity2bin.sh -svnurl=http://xxx/svn/project/ --target=(android|ios|windows) --projectname=xxxx --version=xx.xx.xx