unity3D打包apk
- 格式:docx
- 大小:939.58 KB
- 文档页数:6
unity标准资源包Unity标准资源包。
在Unity开发中,使用标准资源包是非常常见的。
标准资源包是Unity内置的一些资源,包括模型、纹理、音频等,可以帮助开发者快速搭建游戏场景,节省开发时间,提高开发效率。
本文将介绍Unity标准资源包的使用方法和注意事项。
首先,我们来看一下Unity标准资源包的分类。
Unity标准资源包主要分为模型、纹理、音频等几大类。
其中,模型资源包括各种3D模型,如角色、道具、场景等;纹理资源包括贴图、材质等;音频资源包括背景音乐、音效等。
这些资源都可以直接在Unity中使用,极大地方便了开发者的工作。
在使用Unity标准资源包时,开发者需要注意一些事项。
首先,要注意资源的导入设置。
在导入资源时,要根据实际需求选择合适的导入设置,包括纹理压缩格式、模型网格设置、音频压缩格式等。
合理的导入设置可以减小游戏包体积,提高游戏性能。
其次,要注意资源的使用方式。
在使用资源时,要合理地设置材质、光照、音频参数等,以达到最佳的效果。
另外,还要注意资源的优化。
对于一些大型的模型、高分辨率的纹理、高质量的音频,可以考虑进行优化,以减小游戏的内存占用和加载时间。
除了以上注意事项,开发者还可以通过一些技巧来更好地使用Unity标准资源包。
比如,可以使用资源包中的预制件来快速搭建游戏场景,可以使用资源包中的动画控制器来快速实现角色动画,可以使用资源包中的音频剪辑来快速添加音效。
这些技巧可以帮助开发者更高效地利用Unity标准资源包,加快游戏开发进度。
总的来说,Unity标准资源包是Unity开发中非常重要的一部分,能够极大地方便开发者的工作。
通过合理地使用和优化资源,开发者可以快速搭建游戏场景,实现游戏功能,提高游戏的质量和性能。
希望本文介绍的内容能够帮助开发者更好地使用Unity标准资源包,更高效地进行游戏开发工作。
Unity3d android打包中的class , .layout not found 等的问题研究前言:做安卓也有好几年了,现在主攻unity3d,一般的安卓工程往往都不是独立的一个工程,尤其接入sdk这块,往往会有很多的第三方的sdk,这时候打包就很乱了,如何保证打包后不会出问题,往往新手都有很多很多的坑,今天特意在这里做一个简单的分享,服务大家。
对于如何打包,unity3d,还有安卓和Unity3d的通信问题,网上有很多的教程,就不用一一介绍了;今天这个问题的主要点在于android 里面xxx.R问题,也就是res下面的资源找不到,通常我们打有引用关系的安卓包,有三种方式:1.导出安卓工程2.在android工程下面bin/classes, 执行:jar -cvf sdk.jar *;这样的命令打包,然后把资源合并进主工程;3.资源合并进住工程,然后export xxx.jar ,只导出src文件即可现在说说这三种方式的坑:第一个导出安卓工程,这种方式每次打包都要导出来,然后添加各种引用关系,然后配置所有的配置文件,添加资源,当然还有引用关系,费时,还不一定能够成功,很多sdk的提供商大部分选择了第一种方式,这个就比较蛋疼了,而且他们的文档也是这样介绍,看了半天,照这做,环境不同,有时候就会很多坑,浪费大量时间,时间就是金钱嘛!第二种,第二种比较直接,合并工程,生成xxx.jar 然后你直接打包,有时候会断开引用关系,就会出现class, layout等的,id.xxx等的找不到的问题后面会给出一个最快速的方式,都会解决第三种,第三种和第二种有异曲同工之处,基本一个意思,只是一个是命令,看你们的喜好了,我两种都用,唯独不喜欢第一种;下面介绍一下,快速,安全准确打包的一打运行必过的教程:1.首先将你的所有工程和libs等的工程导入eclipse,改好引用关系,直到没有错误,这里我就不用详细解释了,这是基本功;2.此时建立你自己的主工程,然后引用,其他工程(如果有的话),编写好自己的代码,和测试通过3.上一步和这一步可以同时进行,将其他工程的res, libs, assets文件合并进你的主要工程,(注意这里很重要,即使是合并了,也不能断开或者删除原来第二步建立的引用关系,保持原样)4.调试写好工程,将主工程的res, libs, asserts,manif...xml, 文件复制到unity3d工程的Plugins/Android/下面,建一个bin文件夹5.此时你可以选择上面的第二,第三,这两种方式生成,xxx.jar文件,然后放在你的unity3d 工程的Plugins/Android/bin/下面,如果要看一看是否成功了,你可以下载,http://jd.benow.ca/ JD-GUI.exe然后运行,直接吧你的xxx.jar拖进去,此时你可以看到,会有其他包名的com.xxx.xxx, 下面有个R.class文件,如果引用了至少有两个R.class 文件在不同路径下面,此时表示非常完美了,大功告成!!!打包运行,3,4,5步骤非常重要仔细理解,然后你遇到什么样的unity3d 接各种sdk,都不在话下;。
unitypackage格式转化
Unity的资源包格式为.unitypackage,可以包含场景、预设、材质、贴图、脚本等资源。
如果你需要将其他格式的资源文件转化为.unitypackage格式,可以按照以下步骤进行操作:
1. 打开Unity编辑器,创建一个新的Unity项目或打开一个现有项目。
2. 将你想要转化的资源文件复制到Unity项目的Asset文件夹中,确保资源文件在Assets目录下。
3. 在Unity编辑器的Project面板中,选中要转化的资源文件或文件夹。
4. 右键点击选中的文件或文件夹,并选择"Export Package"(导出资源包)。
5. 在弹出的对话框中,选择要导出的资源并设置导出的路径和文件名。
6. 点击"Export"(导出)按钮,Unity将会将选中的资源打包成.unitypackage文件。
完成以上操作后,你将会得到一个.unitypackage格式的资源包文件,可以在其他的Unity项目中导入和使用这些资源。
注意,在导出资源包前,请确保你没有包含任何敏感的个人信息或其他违规内容。
nity3D⾃动打包ipa⾸先我们要先搞清楚nity全⾃动打包的重要步骤。
1.⾃动⽣成xcode⼯程。
2.⾃动⽣成.ipa和dsym⽂件。
3.上传appstore(本篇略)⾸先我们在做渠道包时,⼀般每个渠道都有⾃⼰⼀些特殊的需求,⽐如游戏名⼦、游戏图标、SDK、等等。
那么我在在做⾃动化打包的⼯具时,需要把渠道作为参数传⼊shell脚本中,如下图所⽰开始运⾏我的shell脚本,这⾥只接收⼀个参数,其实就是告诉脚本你要打什么渠道的包,这⾥我写91。
脚本⽐较简单,原理就是先⽣成xcode⼯程,然后接着⽣成.ipa 。
代码中的$1 就表⽰我传⼊的第⼀个参数 91字符串。
UNITY_PATH :就是unity安装的路径,如果你不改Unity的名⼦Mac上就会是这个路径。
PEOJECT_PATH:这个是你游戏⼯程的路径。
就是 Assets/上⼀级的哪个路径。
BUILD_IOS_PATH:这个是我打包⽣成ipa的⼀个脚本,后⾯我会细说我⽬前把这个脚本放在我的游戏⼯程⾥,所以他是⼀个相对路径。
XCODE_PATH:这个是⽣成xcode⼯程的路径,因为可能有很多渠道,所以我就传⼊的91字符串作为⽂件名。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29#!/bin/sh#参数判断if [ $# != 1 ];thenecho "需要⼀个参数。
参数是游戏包的名⼦"exitfi#UNITY程序的路径#UNITY_PATH=/Applications/Unity/Unity.app/Contents/MacOS/Unity#游戏程序路径#PROJECT_PATH=/Users/MOMO/commond#IOS打包脚本路径#BUILD_IOS_PATH=${PROJECT_PATH}/Assets/buildios.sh#⽣成的Xcode⼯程路径#XCODE_PATH=${PROJECT_PATH}/$1#将unity导出成xcode⼯程#$UNITY_PATH -projectPath $PROJECT_PATH -executeMethod ProjectBuild.BuildForIPhone project-$1 -quit echo "XCODE⼯程⽣成完毕"#开始⽣成ipa#$BUILD_IOS_PATH $PROJECT_PATH/$1 $1echo "ipa⽣成完毕"脚本执⾏的过程,⽆需打开unity⼯程,它会⾃动打开unity⼯程,⾃动构建xcode⼯程,⾃动关闭unity⼯程,然后⾃动打包。
unity导出资源包的格式Unity 是一款常用的游戏开发引擎,提供了方便快捷的资源导出工具。
在游戏开发的过程中,需要将项目中使用到的资源打包为资源包,便于在游戏中的加载和处理。
本文将介绍 Unity 中常用的资源导出格式和它们的特点。
1. Unity AssetBundleUnity AssetBundle 是 Unity 官方提供的资源导出格式。
使用 AssetBundle 可以将场景、预制体、贴图等资源打包成一个或多个 AssetBundle 文件,便于在游戏中使用。
AssetBundle 文件可以通过 HTTP 网络协议进行下载,也可以存储在本地磁盘上。
在游戏运行过程中,可以动态加载 AssetBundle 文件中的资源,从而实现游戏资源的动态更新。
2. BinaryBinary 是一种二进制格式,可以将 Unity 资源导出为二进制文件。
相对于其他格式,Binary 有着极小的资源体积和快速的加载速度。
Binary 文件格式可以压缩和解压缩,因此,可以大幅减小资源包的大小。
二进制文件的加载速度也非常快,适合于需要频繁加载的游戏资源,例如:音效和粒子效果。
3. Text AssetText Asset 可以将 Unity 资源导出为文本文件。
Text Asset 文件中的文本可以包含任何可读性强的字符,包括 ASCII、Unicode 和 XML 等。
Text Asset 文件格式主要用于存储配置文件、游戏剧情文本和游戏介绍等。
Text Asset 文件格式的优点是资源体积小,易于编辑和版本控制,但也有着缺点,即加载速度比较慢。
因此,不适合对加载速度要求较高的资源,如贴图和模型。
4. XMLXML(eXtensible Markup Language)是一种文本格式的标记语言,可以将Unity 资源导出为 XML 文件格式。
与 Text Asset 类似,XML 文件格式主要用于存储配置文件和游戏剧情文本等。
unity游戏框架学习-⼀键打包注意事项:1.python如何解析命令⾏参数2.python如何调⽤unity命令进⾏打包3.unity如何解析命令⾏参数,例如命令⾏传过来的:'"%s" -batchmode -projectPath %s -executeMethod ExportProject.Build name:"%s" output:"%s" id:"%s" symbols:"%s" development:%s release:%s language:%s checkupdate:%s expansion:%s version:"%s" compatibility:%s -quit -logFile ./log/%s'其中name是bundleid,识别平台、是否是测试包等,release是否是正式包等等参数。
4.如何更新git5.unity⼀键导出图集、ab包名字,⽣个成功md5⽂件6.配制参数导出到两端平台ios:修改info.plist⽂件android:将配置保存成java可以解析的本地⽂件,例如json\.properties⽂件,在导出结束后拷贝到android⼯程⽬录下。
详细步骤:1.python调⽤unity命令,通知unity打包AssetBundle.1-1.更新git1-2.⼀键设置图集1-3.⼀键设置ab包1-4.⽣成ab包1-5.压缩ab包(可选)1-6.⽣成md5⽂件2.python调⽤unity命令,导出⼯程。
(正常打包)2-1.导出⼯程2-2.导出配置⽂件,如app id,app key。
3.python调⽤两端命令进⾏打包。
(正常打包)3-1.python拷贝⽂件,组合unity导出项⽬和两端备份⼯程。
3-2.android端调⽤:./gradlew assembleNormal3-3.ios端先调⽤pod repo update(可选,看sdk是否从远端拉取),在调⽤cmdBuild = 'xcodebuild archive -workspace Unity-iPhone.xcworkspace -scheme Unity-iPhone -archivePath %s || exit '%(archivePath)⽣成archive 包,最后调⽤cmdIpa = 'xcodebuild -exportArchive -archivePath %s -exportPath %s -exportOptionsPlist \"%s/config/ad-hoc.plist\"' % (archivePath, ipaDir, self.CurrPath)⽣成ipa。
Unity3D教程:发布Android的apk文件的准备工作时间:13-07-12 栏目:Unity3D教程作者:zqcyou 评论:771、首先呢。
Unity3D这个是必要的。
然后就是一些运行的环境了。
Java(jdk). Android模拟器(sdk)[当然你有真机也可以]。
这些可以从网上下载。
2、安装一、Java的安装。
这个非常简单。
打开你下载好的选择个路径安装就可以了。
在个就是环境配置。
右击我的电脑—属性—高级—环境变量—新建三个路径(变量名有的话直接在上面操作就可以了)。
1、变量名JAVA_HOME变量值C:\Program Files\Java\jdk1.7.0_03 (这个可能没有你必须新建。
注意:C:\Program Files\Java\jdk1.7.0_03这是我的。
你的可能是D:\......或者E:\......) 这是我的java路径:Unity3D教程:发布Android的apk文件Unity3D教程:发布Android的apk文件2、变量名CLASSPATH变量值 .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin;C:\Program Files\Java\jdk1.7.0_03\jre\lib\ext\QTJava.zip。
Unity3D教程:发布Android的apk文件3、变量名Path 变量值C:\Program Files\Java\jdk1.7.0_03\bin(这个可能先前已经有了。
这段路径你放在前后都无所谓。
如果你放在后面C:\...前面要有个分号隔开。
如果有了就不用了。
)Unity3D教程:发布Android的apk文件注意。
这上面都是我个人的。
你要清楚你的java安装路径。
二、Android模拟器(sdk)的安装。
这个非常简单。
下载后直接解压就可以了。
这个也需要环境设置。
unity record 打包后的用法-回复Unity Record是Unity引擎的一个功能,它允许开发者将游戏场景、角色动画和特效等内容以可执行文件的形式打包,方便用户在不安装开发环境的情况下运行游戏。
本文将为你详细介绍Unity Record打包后的用法,包括打包的步骤、使用方法以及优缺点等方面,希望能够帮助到你。
一、Unity Record的打包步骤在开始介绍Unity Record的使用方法之前,我们需要先了解一下Unity Record的打包步骤。
以下是Unity Record打包的基本步骤:1. 打开Unity引擎,并选择待打包的项目。
2. 在Unity工具栏中选择“Build Settings”(构建设置)。
3. 在弹出的对话框中选择目标平台,例如PC、移动设备或VR设备等。
4. 按照对应平台的设置要求进行配置,包括选择目标平台、分辨率、图形质量和应用程序设置等。
5. 设置完毕后,点击“Build”(构建)按钮,选择输出文件路径。
6. Unity将开始进行编译和打包,并在完成后生成可执行文件。
二、Unity Record打包后的使用方法Unity Record打包后得到的是一个可执行文件,用户可以直接双击运行。
以下是Unity Record打包后的使用方法:1. 获取Unity Record打包后的可执行文件,双击运行。
2. 游戏加载完成后,用户可以使用键盘、鼠标或手柄等设备来操控游戏角色。
3. 根据游戏的设定,用户可以进行各种操作,如移动、攻击、跳跃等。
4. 根据游戏的不同,用户可能需要完成任务、击败敌人或者解谜等等。
5. 游戏进行中,用户可以按需保存游戏进度,或者在游戏结束后重新开始。
三、Unity Record打包后的优点1. 独立性:Unity Record打包后得到的可执行文件可以在没有Unity开发环境的情况下运行,用户无需事先安装任何额外的软件或插件。
2. 跨平台:Unity可打包多种平台,包括PC、移动设备、VR设备等。
unity3D打包发布Apk详细步骤
1、复制android-sdk-windows⽂件夹到C盘或者D盘或者你可以找到的任意盘任意⽬录,注意:不能在中⽂⽬录下!!
复制完成之后,打开unity,新建⼀个项⽬,打开Edit-Preferences选项。
2、SDK地址:点击Browse,找到刚刚复制的android-sdk-windows⽂件夹所在的路径,然后点击选择⽂件夹如右图所⽰。
3、JDK地址:点击Browse,找到JDK安装的⽂件夹所在的路径(C:\Program Files\Java\jdk1.8.0_131),然后点击选择⽂件夹如右图所⽰。
4、完成之后,新建场景,保存场景,添加到build⾥⾯去切换平台为安卓Android平台
5、点击Player settings修改Other Settings下的 Bundle Identifier 中的pany.ProductName为⾃⼰的⾃定义的,例如:com.Test.test01。
6、在Other Settings设置中选择Android 版本,版本不能低于⾃⼰的⼿机版本。
7、设置完成后,点击Build。
6、添加⽂件名,找到想要保存的路径,点击保存。
7、打包中……
8、打包完成
好啦,现在安装Apk⽂件到⼿机就可以⽤了!。
unity3d在菜单栏,⼀键设置Playersetting及⾃动打包并设置apk的存储位置项⽬进⾏中,领导要求能够进⾏⼀键设置Player settings及⾃动打包并设置apk的位置,所以⾃⼰就上⽹搜索了很多⼤神的⽂章.最后是完成了领导需要的功能,在这⾥记录并分享⼀下(此项指针对安卓apk)1.设置Player settingsprivate static void SetBwPlayerSetting(string bundleIdentifier,string keyStoreName,string keystorePass="123456") { panyName = COMPANYNAME; PlayerSettings.productName = PRODUCTNAME; PlayerSettings.applicationIdentifier = bundleIdentifier;// "com.playbyone.chyz.bw"; PlayerSettings.bundleVersion = BUNDLEVERSION; PlayerSettings.Android.bundleVersionCode = BUNDLEVERSIONCODE; PlayerSettings.Android.keystoreName = keyStoreName; PlayerSettings.keystorePass = keystorePass;} 上述代码能够改变图中红⾊框选的部分2.更改Plugins-->Android下的sdk,因为,不同的渠道使⽤不同的sdk⽂件3.检测Plugins-->Android下的sdk渠道更改完成(也是参考了上述的⽂章,帮助很⼤,并且在参考3.1的基础上完成了⾃⼰的需求)4.检测到⽂件已是最新的之后,开始执⾏打包命令(照例是看了⾬松⼤神的打包,然后发现shell什么的完全不会,然后截选了⾥⾯⾃⼰能够使⽤的代码)1using System;2using System.Collections;3using System.Collections.Generic;4using System.IO;5using UnityEditor;6using UnityEngine;789public class BwUnityScripsCompiling:AssetPostprocessor {1011//private static List<string> BuildApk = new List<string>();12private static bool BuildApk = false;13//private static bool BuildFinish = false;1415public static void StartBuildApk()16 {17 BuildApk = true;18//BuildFinish = false;19return;20 }21///<summary>22///进⾏update绑定23///</summary>24static BwUnityScripsCompiling()25 {26 EditorApplication.update += Update;27 }28///<summary>29///检测导⼊.删除,移动,资源,使⽤ PlayerPrefs.SetInt进⾏存储30///</summary>31///<param name="importedAssets"></param>32///<param name="deletedAssets"></param>33///<param name="movedAssets"></param>34///<param name="movedFromAssetPaths"></param>35public static void OnPostprocessAllAssets(36 String[] importedAssets,37 String[] deletedAssets,38 String[] movedAssets,39 String[] movedFromAssetPaths) {40 List<string> importedKeys = new List<string>() { "Assets/Plugins/Android/StoreSDK" };// 可添加⽂件夹⼦集41for (int i = 0; i < importedAssets.Length; i++) {42for (int j = 0; j < importedKeys.Count; j++) {43if (importedAssets[i].Contains(importedKeys[j])) {44 PlayerPrefs.SetInt("ImportScripts", 1);45return;46 }47 }48 }49 }50///<summary>51///判断unity编译更新⽂件是否完成52///</summary>53private static void Update() {54bool importScripts = Convert.ToBoolean(PlayerPrefs.GetInt("ImportScripts", 1));55if (importScripts && !EditorApplication.isCompiling) {56 OnUnityScripsCompilingCompleted();57 importScripts = false;58 PlayerPrefs.SetInt("ImportScripts", 0);59 EditorApplication.update -= Update;60 }61 }62///<summary>63/// unity⽂件编译完成之后,可执⾏打包动作64///</summary>65private static void OnUnityScripsCompilingCompleted() {66 Debug.Log("Unity Scrips Compiling completed.Start building........");67if (BuildApk == false)68return;69 BuildApk = false;70 BuildGameBag();71 }72///<summary>73///⽅法⼀:使⽤虚拟按键执⾏打包程序执⾏:File-->Buile&Run74///</summary>75///<param name="bVk"></param>76///<param name="bScan"></param>77///<param name="dwFlags"></param>78///<param name="dwExtraInfo"></param>79//[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "keybd_event", SetLastError = true)]80//private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);81//public static void BuildGameBag()82//{83// const byte VK_CONTROL = 0x11;84// const byte VK_B = 0x42;85// const int KEYEVENTF_DOWN = 0x00;86// const int KEYEVENTF_KEYUP = 0x02;8788// keybd_event(VK_CONTROL, 0, KEYEVENTF_DOWN, 0);89// keybd_event(VK_B, 0, KEYEVENTF_DOWN, 0);90// keybd_event(VK_B, 0, KEYEVENTF_KEYUP, 0);91// keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);92//}939495//在这⾥找出你当前⼯程所有的场景⽂件,假设你只想把部分的scene⽂件打包那么这⾥可以写你的条件判断总之返回⼀个字符串数组。
APK打包流程以及使用到的工具1. 概述APK(Android Package)是Android系统的安装包文件格式,用于将Android 应用程序分发到设备上。
APK打包是Android开发过程中非常重要的一步,本文将介绍APK打包的流程以及常用的工具。
2. APK打包流程APK打包的主要流程包括以下几个步骤:2.1. Android项目配置在开始APK打包之前,需要将Android项目进行正确的配置。
主要包括: - 配置AndroidManifest.xml文件,指定应用程序的各种参数; - 配置build.gradle文件,设置编译参数和依赖关系; - 编写Java代码和资源文件,实现应用程序的功能和界面。
2.2. 编译源代码在完成Android项目的配置后,需要编译源代码。
Android项目的源代码通常使用Java编写,可以使用Java开发工具(如JDK)进行编译。
编译后会生成.dex 文件,包含了Java字节码。
2.3. 生成资源文件Android应用程序除了源代码外,还包含了各种资源文件,如图片、XML布局文件等。
这些资源文件需要通过工具进行编译和打包,生成对应的二进制文件。
2.4. 打包生成APK文件在完成源代码编译和资源文件生成后,需要将它们打包生成APK文件。
APK 文件是一个压缩文件,包含了应用程序的所有文件和目录结构。
2.5. 签名APK文件为了保证APK文件的安全性和完整性,需要对APK文件进行签名。
签名APK 文件可以确保APK文件在分发和安装过程中不被篡改。
3. 使用的工具3.1. JDK(Java Development Kit)JDK是Java开发工具包,包含了Java编译器和其他开发工具。
在APK打包过程中,需要使用JDK进行Java源代码的编译。
3.2. Android StudioAndroid Studio是Android官方推荐的集成开发环境(IDE),提供了丰富的开发工具和功能。
Unity编译Android的原理解析和apk打包分析作者介绍:张坤最近由于想在Scene的脚本组件中,调⽤Android的Activity的相关接⼝,就需要弄明⽩Scene和Activity的实际对应关系,并对Unity调⽤Android的部分原理进⾏了研究。
本⽂主要探讨Scene和Activity之间的关系,以及Unity打包apk和Android studio打包apk的差别在什么地⽅?找到这种差别之后,可以怎么运⽤起来?本⽂需要⽤到的⼯具:Android反编译⼯具——Android studio⾃带的反编译功能⼀、将Unity的Scene编译成apk,apk的程序⼊⼝会是什么?1. 新建⼀个Unity项⽬,创建⼀个Scene,将Unity⼯程编译打包成apk。
2. 对编译出来的apk,利⽤apktool进⾏反编译:apktool d unityTest.apk3. 得到的AndroidManifest⽂件如下:<?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="/apk/res/android" android:installLocation="preferExternal" package="com.xfiction.p1" platformBuildVersionCode="25" platformBuildVersionName="7.1.1"><supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:xlargeScreens="true"/><application android:banner="@drawable/app_banner" android:debuggable="false" android:icon="@drawable/app_icon" android:isGame="true" android:label="@string/app_name" android:theme="@style/UnityThemeSelector"><activity android:configChanges="locale|fontScale|keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" android:label="@string/app_name" android:launchMode= <intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="UNCHER"/><category android:name="android.intent.category.LEANBACK_LAUNCHER"/></intent-filter><meta-data android:name="unityplayer.UnityActivity" android:value="true"/></activity></application><uses-feature android:glEsVersion="0x00020000"/><uses-feature android:name="android.hardware.touchscreen" android:required="false"/><uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false"/><uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false"/></manifest>由该AndroidManifest⽂件可知,系统仍然存在主Activity,名字为com.unity3d.player.UnityPlayerActivity。
改造的unity3d⽂件打包脚本// C# Example// Builds an asset bundle from the selected objects in the project view.// Once compiled go to "Menu" -> "Assets" and select one of the choices// to build the Asset Bundleusing UnityEngine;using UnityEditor;using System.IO;public class ExportAssetBundles {[MenuItem("Assets/Build AssetBundle From Selection - Track dependencies")]//(包含依耐关系)static void ExportResource () {// Bring up save panelstring path = EditorUtility.SaveFilePanel ("Save Resource", "", "New Resource", "unity3d");if (path.Length != 0) {// Build the resource file from the active selection.Object[] selection = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);BuildPipeline.BuildAssetBundle(Selection.activeObject, selection, path, BuildAssetBundleOptions.CollectDependencies | pleteAssets);Selection.objects = selection;FileStream fs = File.Open(path+".log", FileMode.OpenOrCreate);StreamWriter sw = new StreamWriter(fs);sw.WriteLine("⽂件 " + path + " 中的内容如下:");foreach (Object obj in Selection.objects){sw.WriteLine("Name: " + + "\t\t\tType:" + obj.GetType());if (obj.GetType() == typeof(Object)){Debug.LogWarning("Name: " + + ", Type: " + obj.GetType() + ". 可能是unity3d不能识别的⽂件,可能未被打包成功");}}sw.Flush();fs.Flush();sw.Close();fs.Close();/*BuildAssetBundleOptions.CollectDependencies 包含所有依赖关系,应该是将这个物体或组件所使⽤的其他资源⼀并打包pleteAssets 强制包括整个资源。
Unity3D之脚本批量打包渠道包研究最近在研究Unity3D脚本批量打包,比如在Android平台下各种不同分辨率和不同内存大小的机器,可能还有不同的渠道包,不同渠道可能用的SDK 都不一样,这一切的一切都表明你的代码无法做到自适应的,除非批量打包提供各个平台的预定义标签#define 。
Unity默认提供了一些预定义标签如:UNITY_EDITOR : 编辑器模式下。
UNITY_STANDALONE:PC Mac Linux模型下。
UNITY_IPHONE:IOS模式下。
UNITY_ANDROID:ANDROID模式下。
官方提供的标签属于比较大的范围标签,比如我希望UNITY_ANDROID 下面在写一些自定义的标签、类似QQ UC CMCC这样的渠道标签该如何呢?如下图所示,ProjectSetting打包界面每个平台都会有Scripting Define Symbols这个选项,可以在这里添加每个平台下对应的自定义标签(多个标签用“;”号隔开),这里我设置的是Android平台,如果IOS也需要打这样的渠道标签那么也要在IOS页面Scripting Define Symbols选项处添加对应的标签。
标签做出来了就好办了,然后在代码中我们可以这样来写。
如果在Scripting Define Symbols中没有出现的标签默认是不启用的,就像#define Test 一样,会自动被注释掉。
代码如下:using UnityEngine;using UnityEditor;using System.Collections;using System.Collections.Generic;using System;using System.IO;public class MyEditorScript{//得到工程中所有场景名称static string[] SCENES = FindEnabledEditorScenes();//一系列批量build的操作[MenuItem ("Custom/Build Android QQ")]static void PerformAndroidQQBuild (){BulidTarget("QQ","Android");}[MenuItem ("Custom/Build Android UC")]static void PerformAndroidUCBuild (){BulidTarget("UC","Android");}[MenuItem ("Custom/Build Android CMCC")] static void PerformAndroidCMCCBuild () {BulidTarget("CMCC","Android");}[MenuItem ("Custom/Build Android ALL")] static void PerformAndroidALLBuild (){BulidTarget("QQ","Android");BulidTarget("UC","Android");BulidTarget("CMCC","Android");}[MenuItem ("Custom/Build iPhone QQ")] static void PerformiPhoneQQBuild (){BulidTarget("QQ","IOS");}[MenuItem ("Custom/Build iPhone QQ")] static void PerformiPhoneUCBuild (){BulidTarget("UC","IOS");}[MenuItem ("Custom/Build iPhone CMCC")] static void PerformiPhoneCMCCBuild (){BulidTarget("CMCC","IOS");}[MenuItem ("Custom/Build iPhone ALL")] static void PerformiPhoneALLBuild (){BulidTarget("QQ","IOS");BulidTarget("UC","IOS");BulidTarget("CMCC","IOS");}//这里封装了一个简单的通用方法。
Unity应用内计费开发教程应用内计费SDK在Unity3D引擎中编译会出现部分文件丢失,导致使用应用内计费时出错。
本文档将介绍一种解决方法和一套在Unity3D上使用应用内计费的范例。
编写应用内计费android代码1.创建一个android工程图1.创建应用内计费android工程2.导入Unity3D的jar包。
图2.Unity3D的jar包图3.将Unity3D的jar包导入工程3.导入应用内计费SDK图4.导入应用内计费SDK4.编写计费相关代码计费相关代码,在次不再赘述,请参考提供的源码。
5.将android工程编译后,class目录下文件打包成jar包,导入到Unity工程中。
此步骤比较复杂,可以分为几个小步骤:1)打包android工程目录下的 bin/class目录通过amd或者powershell,进入到android工程目录下后,输入指令:jar –cvf class.jar *2)在Unity3D开发界面创建文件夹Plugins/Android目录,将生成的class.jar,以及工程目录下工程文件(除了src,bin,gen)全部复制到Plugins/Android目录下。
图5.导入android工程文件后6.编译Unity3D工程此步骤前提是开发者已经开发完游戏和调用android接口的脚本。
图5.编译Unity3D工程注:在编译时,最好设置下包名,最好将包名与android工程的包名保持一致。
此时编译虽然可以生成apk,但是此apk包会丢失CopyrightDeclaration.xml,mmiap.xml,VERSION。
因此需要下面的编译步骤7.使用打包脚本。
将此文档附带的打包脚本复制到Unity工程的Temp\StagingArea目录下,然后启动cmd或者powershell进入到此目录,输入ant release即可在bin目录下生成apk。
编译脚本自定义修改此次提供的编译脚本包括有4个文件:android.keystore,build.xml,local.properties,project.properties。
Unity打包Android平台AssetBundle脚本注意,BuildTarget tagetPlatform参数为BuildTarget.Androidusing UnityEngine;using UnityEditor;public class BuildAssetBundlesExample: MonoBehaviour{[MenuItem("Example/Build Asset Bundles")]static void BuildABs(){// Put the bundles in a folder called "ABs" within the Assets folder.BuildPipeline.BuildAssetBundles("Assets/ABs", BuildAssetBundleOptions.None, BuildTarget.Android);}}BuildTarget 编译⽬标类型:EnumerationTarget build platform.⽬标编译平台。
Note: This is an editor class. To use it you have to place your script in Assets/Editor inside your project folder. Editor classes are in the UnityEditor namespace so for C# scripts you need to add "using UnityEditor;" at the beginning of the script.注意:这是⼀个编辑器类,如果想使⽤它你需要把它放到⼯程⽬录下的Assets/Editor⽂件夹下。
编辑器类在UnityEditor命名空间下。
Unity资源打包学习笔记(⼀)、详解AssetBundle的流程转载请标明出处: 本⽂参照unity官⽹上对于assetBundle的⼀系列讲解,主要针对assetbundle的知识点做⼀个梳理笔记,也为后续的资源打包设计做⼀个基础学习,本⽂的代码和图⽚均来⾃unity官⽹,详情可以查看Unity的DOCUMENTATION。
⼀、什么是AssetBundle AssetBundle就像⼀个ZIP压缩⽂件,⾥⾯存储着不同平台的特殊资源(models/texture/prefabs/materials/audio clip/scenes...),这些资源都可以在运⾏时进⾏加载。
具体的assetBundle中主要包含什么?主要包含两种互相关联的东西:1. 磁盘上的⽂件:也就是assetbundle⽂档,可以将其视为⼀个容器或者⽂件夹,其中包含两类⽂件:序列化⽂件和资源⽂件,序列化⽂件就是资源在打包后对应的各个平台的序列化操作后的⽂件,资源⽂件主要是针对textures/audio等较⼤的⽂件打包的⼆进制⽂件,这类⽂件在加载的时候是在其他线程执⾏的(效率更⾼)。
2. 就是实际的assetbundle对象了,可以通过代码来进⾏资源加载,其中主体是各个资源在进⾏加载的时候的存储路径图。
⽤图表⽰:⼆、如何对资源进⾏分组便于打包AssetBundle 虽然可以对AssetBundle⾃由的进⾏规划,但是在进⾏项⽬的资源管理的时候,还是有⼀些规划建议可以采⽤:1.依据逻辑实体进⾏分组 这种资源分类⽅式是依据资源的功能进⾏分类,例如 UI/⾓⾊/场景/code等具体各⾃功能规划的部分来进⾏资源分组,可以将所有的textures/layout data都打⼊UI相关分类中,可以将所有的模型和动画都打⼊⾓⾊相关的资源中,将场景相关的贴图和模型都打⼊场景资源中。
采⽤逻辑实体分组,对于资源的下载更新更为有利,由于资源的分类,可以在进⾏资源更新的时候,只更新对应的资源,⽽⽆需更新冗余的其他资源。