想要用unity读取xml3d做游戏,有人推荐用xml写存档,求教

扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
关注:1533
当前位置: &
__________________________________________________________________________________
开发者干货区版块规则:
  1、文章必须是图文形式。(至少2幅图)
& && &2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
& && &3、本版块只支持在游戏蛮牛原创首发,不支持转载。
& && &4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
& && &5、......
__________________________________________________________________________________
查看: 2536|回复: 23
Unity3D游戏开发之游戏读/存档功能在Unity3D中的实现
本帖为抢楼帖,欢迎抢楼!&
9排名<font color="#FF昨日变化7主题帖子积分
在线时间174 小时
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
本帖最后由 qinyuanpei 于
15:57 编辑
版权声明:本文由秦元培创作和发表,采用署名(BY)-非商业性使用(NC)-相同方式共享(SA)国际许可协议进行许可,转载请注明作者及出处,本文作者为秦元培,本文标题为开发游戏读/存档在中的实现,本文链接为//save-and-load-in-unity/.
我是秦元培,我的博客是/,期待交流。
今天想和大家分享的内容是RPG游戏中游戏存档的实现,因为最近在做一个RPG游戏的项目,所以遇到这个就随时记录下来,在对知识进行总结的同时可以将这种思路或者想法分享给大家,这是一件快乐而幸运的事情。我讨厌写按部就班的技术教程,因为我觉得学习是一种自我的探索行为,如果一切都告诉你了,探索的过程便会变得没有意义了。
游戏存档是一种在单机游戏中特别常见的机制,这种机制是你在玩网络游戏的时候无法体验到的,你知道每次玩完一款单机游戏都会把游戏存档保存起来是一种怎样的感觉吗?它就像是一个征战沙场的将军将陪伴自己一生金戈铁马的宝剑静静地收入剑匣,然而每一次打开它的时候都会不由自主的热泪盈眶。人的本性其实就是游戏,我们每一天发生的故事何尝不是一个游戏?有时候让我们怀念的可能并不是游戏本身,而只是搁浅在时光里的那时的我们。好了,游戏存档是我们在游戏世界里雪泥鸿爪,它代表了我们曾经来到过这个世界。以RPG游戏为例,一个一般化的游戏存档应该囊括以下内容:
角色信息:指一切表征虚拟角色成长路线的信息,如生命值、魔法值、经验值等等。
道具信息:指一切表征虚拟道具数量或者作用的信息,如药品、道具、装备等等。
场景信息:指一切和游戏场景相关的信息,如场景名称、角色在当前场景中的位置坐标等等。
事件信息:指一切和游戏事件相关的信息,如主线任务、支线任务、触发性事件等等。
从以上信息划分的层次来看,我们可以发现在游戏存档中要储存的信息相对是比较复杂的,那么我们这里不得不说说Unity3D中的数据持久化方案PlayerPrefs。该方案采用的是一种键值型的数据存储方案,支持int、string、float三种基本数据类型,通过键名来获取相对应的数值,当值不存在时将返回一个默认值。这种数据存储方案本质上是将数据写入到一个Xml文件。这种方案如果用来存储简单的信息是没有问题的,可是如果用它来存储游戏存档这样负责的数据结构就显得力不从心了。一个更为重要的问题是在数据持久化的过程中我们希望得到是一个结构化的【游戏存档】实例,显然此时松散的PlayerPrefs是不能满足我们的要求的。因此我们想到了将游戏数据序列化的思路,常见的数据序列化思路主要有Xml和JSON两种形式,在使用Xml的数据序列化方案的时候通常有两种思路,即手动建立数据实体和数据字符间的对应关系和基于XmlSerializer的数据序列化。其中基于XmlSerializer的数据序列化是利用了[Serializable]这样的语法特性来帮助.NET完成数据实体和数据字符间的对应关系,两种思路本质上一样的。可是我们知道Xml的优点是可读性强,缺点是冗余信息多,因此在权衡了两种方案的利弊后,我决定采用JSON来作为数据序列化的方案,而且JSON在数据实体和数据字符间的对应关系上有着天然的优势,JSON所做的事情不就是将数据实体转化为字符串和从一个字符串中解析出数据实体吗?所以整个方案基本一气呵成。好了,下面我们来看具体的代码实现过程吧!
一、JSON的序列化和反序列化
这里我使用的是Newtonsoft.Json这个类库,相信大家都是知道的了!因此,序列化和反序列化特别简单。
[C#] 纯文本查看 复制代码/// &summary&
/// 将一个对象序列化为字符串
/// &/summary&
/// &returns&The object.&/returns&
/// &param name=&pObject&&对象&/param&
/// &param name=&pType&&对象类型&/param&
private static string SerializeObject(object pObject)
//序列化后的字符串
string serializedString = string.E
//使用Json.Net进行序列化
serializedString = JsonConvert.SerializeObject(pObject);
return serializedS
/// &summary&
/// 将一个字符串反序列化为对象
/// &/summary&
/// &returns&The object.&/returns&
/// &param name=&pString&&字符串&/param&
/// &param name=&pType&&对象类型&/param&
private static object DeserializeObject(string pString,Type pType)
//反序列化后的对象
object deserializedObject =
//使用Json.Net进行反序列化
deserializedObject=JsonConvert.DeserializeObject(pString,pType);
return deserializedO
二、Rijandel加密/解密算法
因为我们这里要做的是一个游戏存档的方案设计,因为考虑到存档数据的安全性,我们可以考虑采用相关的加密/解密算法来实现对序列化后的明文数据进行加密,这样可以从一定程度上保证游戏存档数据的安全性。因为博主并没有深入地研究过加密/解密方面的内容,所以这里仅仅提供一个从MSDN上获取的Rijandel算法,大家感兴趣的话可以自行去研究。
[C#] 纯文本查看 复制代码/// &summary&
/// Rijndael加密算法
/// &/summary&
/// &param name=&pString&&待加密的明文&/param&
/// &param name=&pKey&&密钥,长度可以为:64位(byte[8]),128位(byte[16]),192位(byte[24]),256位(byte[32])&/param&
/// &param name=&iv&&iv向量,长度为128(byte[16])&/param&
/// &returns&&/returns&
private static string RijndaelEncrypt(string pString, string pKey)
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(pKey);
//待加密明文数组
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(pString);
//Rijndael解密算法
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyA
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateEncryptor();
//返回加密后的密文
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
/// &summary&
/// ijndael解密算法
/// &/summary&
/// &param name=&pString&&待解密的密文&/param&
/// &param name=&pKey&&密钥,长度可以为:64位(byte[8]),128位(byte[16]),192位(byte[24]),256位(byte[32])&/param&
/// &param name=&iv&&iv向量,长度为128(byte[16])&/param&
/// &returns&&/returns&
private static String RijndaelDecrypt(string pString, string pKey)
//解密密钥
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(pKey);
//待解密密文数组
byte[] toEncryptArray = Convert.FromBase64String(pString);
//Rijndael解密算法
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyA
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateDecryptor();
//返回解密后的明文
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return UTF8Encoding.UTF8.GetString(resultArray);
三、完整代码
好了,下面给出完整代码,我们这里提供了两个公开的方法GetData()和SetData()以及IO相关的辅助方法,我们在实际使用的时候只需要关注这些方法就可以了!
[C#] 纯文本查看 复制代码/**
* Unity3D数据持久化辅助类
* 作者:秦元培
using UnityE
using System.C
using System.IO;
using System.T
using System.Security.C
using Newtonsoft.J
public static class IOHelper
/// &summary&
/// 判断文件是否存在
/// &/summary&
public static bool IsFileExists(string fileName)
return File.Exists(fileName);
/// &summary&
/// 判断文件夹是否存在
/// &/summary&
public static bool IsDirectoryExists(string fileName)
return Directory.Exists(fileName);
/// &summary&
/// 创建一个文本文件
/// &/summary&
/// &param name=&fileName&&文件路径&/param&
/// &param name=&content&&文件内容&/param&
public static void CreateFile(string fileName,string content)
StreamWriter streamWriter = File.CreateText(fileName);
streamWriter.Write(content);
streamWriter.Close();
/// &summary&
/// 创建一个文件夹
/// &/summary&
public static void CreateDirectory(string fileName)
//文件夹存在则返回
if(IsDirectoryExists (fileName))
Directory.CreateDirectory(fileName);
public static void SetData(string fileName,object pObject)
//将对象序列化为字符串
string toSave = SerializeObject(pObject);
//对字符串进行加密,32位加密密钥
toSave = RijndaelEncrypt(toSave, &xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&);
StreamWriter streamWriter = File.CreateText(fileName);
streamWriter.Write(toSave);
streamWriter.Close();
public static object GetData(string fileName,Type pType)
StreamReader streamReader = File.OpenText(fileName);
string data = streamReader.ReadToEnd();
//对数据进行解密,32位解密密钥
data = RijndaelDecrypt(data, &xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&);
streamReader.Close();
return DeserializeObject(data,pType);
/// &summary&
/// Rijndael加密算法
/// &/summary&
/// &param name=&pString&&待加密的明文&/param&
/// &param name=&pKey&&密钥,长度可以为:64位(byte[8]),128位(byte[16]),192位(byte[24]),256位(byte[32])&/param&
/// &param name=&iv&&iv向量,长度为128(byte[16])&/param&
/// &returns&&/returns&
private static string RijndaelEncrypt(string pString, string pKey)
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(pKey);
//待加密明文数组
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(pString);
//Rijndael解密算法
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyA
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateEncryptor();
//返回加密后的密文
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
/// &summary&
/// ijndael解密算法
/// &/summary&
/// &param name=&pString&&待解密的密文&/param&
/// &param name=&pKey&&密钥,长度可以为:64位(byte[8]),128位(byte[16]),192位(byte[24]),256位(byte[32])&/param&
/// &param name=&iv&&iv向量,长度为128(byte[16])&/param&
/// &returns&&/returns&
private static String RijndaelDecrypt(string pString, string pKey)
//解密密钥
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(pKey);
//待解密密文数组
byte[] toEncryptArray = Convert.FromBase64String(pString);
//Rijndael解密算法
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyA
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateDecryptor();
//返回解密后的明文
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return UTF8Encoding.UTF8.GetString(resultArray);
/// &summary&
/// 将一个对象序列化为字符串
/// &/summary&
/// &returns&The object.&/returns&
/// &param name=&pObject&&对象&/param&
/// &param name=&pType&&对象类型&/param&
private static string SerializeObject(object pObject)
//序列化后的字符串
string serializedString = string.E
//使用Json.Net进行序列化
serializedString = JsonConvert.SerializeObject(pObject);
return serializedS
/// &summary&
/// 将一个字符串反序列化为对象
/// &/summary&
/// &returns&The object.&/returns&
/// &param name=&pString&&字符串&/param&
/// &param name=&pType&&对象类型&/param&
private static object DeserializeObject(string pString,Type pType)
//反序列化后的对象
object deserializedObject =
//使用Json.Net进行反序列化
deserializedObject=JsonConvert.DeserializeObject(pString,pType);
return deserializedO
这里我们的密钥是直接写在代码中的,这样做其实是有风险的,因为一旦我们的项目被反编译,我们这里的密钥就变得很不安全了。这里有两种方法,一种是把密钥暴露给外部方法,即在读取数据和写入数据的时候使用同一个密钥即可,而密钥可以采取由机器MAC值生成的方法,这样每台机器上的密钥都是不同的可以防止数据被破解;其次可以采用DLL混淆的方法让反编译者无法看到代码中的内容,这样就无法获得正确的密钥从而无法获得存档里的内容了。
四、最终效果
好了,最后我们来写一个简单的测试脚本:
[C#] 纯文本查看 复制代码using UnityE
using System.C
using System.Collections.G
public class TestSave : MonoBehaviour {
/// &summary&
/// 定义一个测试类
/// &/summary&
public class TestClass
public string Name = &张三&;
public float Age = 23.0f;
public int Sex = 1;
public List&int& Ints = new List&int& ()
void Start ()
//定义存档路径
string dirpath = Application.persistentDataPath + &/Save&;
//创建存档文件夹
IOHelper.CreateDirectory (dirpath);
//定义存档文件路径
string filename = dirpath + &/GameData.sav&;
TestClass t = new TestClass ();
//保存数据
IOHelper.SetData (filename,t);
//读取数据
TestClass t1 = (TestClass)IOHelper.GetData(filename,typeof(TestClass));
Debug.Log(t1.Name);
Debug.Log(t1.Age);
Debug.Log(t1.Ints);
脚本执行结果:
1.png (37.38 KB, 下载次数: 0)
11:50 上传
加密后游戏存档:
2.png (12.58 KB, 下载次数: 0)
11:51 上传
好了,这就是今天的内容了,希望大家能够喜欢,有什么问题可以给我留言,谢谢!
感谢风宇冲Unity3D教程宝典之两步实现超实用的XML存档一文提供相关思路! streamwriter 安卓 无效;unity为什么可以开发虚拟现实游戏、;uunity宝典;unity xml存档;nunity宝典在哪儿;unity。 xml 存档
每日推荐:
72002/5000排名<font color="#FF昨日变化1主题帖子积分
日久生情, 积分 2002, 距离下一级还需 2998 积分
日久生情, 积分 2002, 距离下一级还需 2998 积分
蛮牛币2621
在线时间835 小时
请问这个方案兼容IOS平台吗?我现在知道如果是XML序列化对象的时候,对象中含有泛型List&T&(我们现在项目是List&T&里面继续含有List&T&),编译到IOS运行会出现AOT错误
每日推荐:
2118/150排名<font color="#FF昨日变化47主题帖子积分
初来乍到, 积分 118, 距离下一级还需 32 积分
初来乍到, 积分 118, 距离下一级还需 32 积分
在线时间73 小时
学习了AAAAAAAAAAAAAAAAAAAAAAA
每日推荐:
9排名<font color="#FF昨日变化7主题帖子积分
在线时间174 小时
请问这个方案兼容IOS平台吗?我现在知道如果是XML序列化对象的时候,对象中含有泛型List(我们现在项目是Li ...
这里采用的Json序列化,具体情况未知啊,如果你有兴趣可以自己去测试!
每日推荐:
4312/500排名<font color="#FF昨日变化4主题帖子积分
四处流浪, 积分 312, 距离下一级还需 188 积分
四处流浪, 积分 312, 距离下一级还需 188 积分
在线时间89 小时
序列化很好用,不过我都是用struct转换成二进制 储存
每日推荐:
2127/150排名<font color="#FF昨日变化7主题帖子积分
初来乍到, 积分 127, 距离下一级还需 23 积分
初来乍到, 积分 127, 距离下一级还需 23 积分
在线时间38 小时
学习下。。。。。。
每日推荐:
4474/500排名<font color="#FF昨日变化主题帖子积分
四处流浪, 积分 474, 距离下一级还需 26 积分
四处流浪, 积分 474, 距离下一级还需 26 积分
在线时间141 小时
这里采用的Json序列化,具体情况未知啊,如果你有兴趣可以自己去测试!
记得之前这种问题在IOS上是 不行的
每日推荐:
9排名<font color="#FF昨日变化7主题帖子积分
在线时间174 小时
记得之前这种问题在IOS上是 不行的
是因为反射的问题吗?iOS本身对反射就是抵制的啊..........
每日推荐:
5963/1000排名<font color="#FF昨日变化1主题帖子积分
熟悉之中, 积分 963, 距离下一级还需 37 积分
熟悉之中, 积分 963, 距离下一级还需 37 积分
在线时间310 小时
膜拜大神,多谢分享
[]: 一个袋子砸在了 墨客er 头上,墨客er 赚了 1
每日推荐:
4343/500排名<font color="#FF昨日变化3主题帖子积分
四处流浪, 积分 343, 距离下一级还需 157 积分
四处流浪, 积分 343, 距离下一级还需 157 积分
在线时间136 小时
这在手机上测试了吗、我前几天这么做的pc 没问题&&android 读取不到。 改成另外的方式了。
每日推荐:
9排名<font color="#FF昨日变化7主题帖子积分
在线时间174 小时
这在手机上测试了吗、我前几天这么做的pc 没问题&&android 读取不到。 改成另外的方式了。 ...
android上注意路径!注意路径!注意路径!重要的事情说三遍!
每日推荐:
4380/500排名<font color="#FF昨日变化2主题帖子积分
四处流浪, 积分 380, 距离下一级还需 120 积分
四处流浪, 积分 380, 距离下一级还需 120 积分
在线时间110 小时
每日推荐:
5552/1000排名<font color="#FF昨日变化主题帖子积分
熟悉之中, 积分 552, 距离下一级还需 448 积分
熟悉之中, 积分 552, 距离下一级还需 448 积分
蛮牛币1599
在线时间150 小时
感谢分享!!赞赞赞!
每日推荐:
4343/500排名<font color="#FF昨日变化3主题帖子积分
四处流浪, 积分 343, 距离下一级还需 157 积分
四处流浪, 积分 343, 距离下一级还需 157 积分
在线时间136 小时
android上注意路径!注意路径!注意路径!重要的事情说三遍!
我换成litjson 没加密 ,用www来加载
每日推荐:
4359/500排名<font color="#FF昨日变化2主题帖子积分
四处流浪, 积分 359, 距离下一级还需 141 积分
四处流浪, 积分 359, 距离下一级还需 141 积分
在线时间111 小时
正好要用到这部分的知识,谢谢分享!
每日推荐:
认证开发者
经过游戏蛮牛认证的独立开发者
经过游戏蛮牛认证的蛮牛小翻译unity3d研究院之打开activity与调用java代码传递参数_游戏小牛1unity2_天涯博客
今日访问:[$DayVisitCount$]
总访问量:1893
开博时间:
博客排名:213402
(25)(102)(41)
  晨光on2014 年 10 月 28 日 at 下午 6:49said:求问!现在有两个android工程是依赖项的,我要怎么打出jar包啊,大神小菜比on2014 年 10 月 14 日 at 下午 8:32said:雨松哥,我想请问下android工程打包的时候出现error building player: commandinvokationfailure: unable to convert classes into dex format. see the console for details.e:jdkbinjava.exe -xmx1024m -dcom.android.sdkmanager.toolsdir=”e:/android_sdk_windows/adt-bundle-windows-x86-/sdktools” -dfile.encoding=utf8 -jar “d:/editor/data/buildtargettools/androidplayersdktools.jar” – 这是什么问题,是jar包有重叠吗,我并没有加lib文件夹刘勋on2014 年 10 月 9 日 at 下午 6:12said:你好,请问您是怎么解决的,我还是没有看懂,能告诉我一下么?星尘小雨on2014 年 10 月 5 日 at 上午 10:57said:请问怎么适配后面加入的库工程id值?我还有就是怎么知道资源文件没整合好?我在eclipse下导出是没问题的,也没有资源缺了拭心on2014 年 9 月 12 日 at 下午 2:46said:安装到真机上运行出现下面错误:09-12 20:20:42.170: e/androidruntime(15249): caused by: java.lang.nosuchmethoderror: no method with name=’loadlibrary’ signature=’(ljava/lang/)z’ in class lcom/unity3d/player/阿精on2014 年 9 月 2 日 at 下午 5:19said:momo大大請問一下如unity的bundle identifier跟android中package名不同但卻可呼叫是???因為看朋友的code他明明名稱不同但在androidmanisest.xml中加入設定就可用(如一些第三方軟體—)是如何實現的,其中name中屬性是android中package名嗎?阿精on2014 年 9 月 2 日 at 下午 5:50said:另外我照着打(一模一样)都会出现如下错误exception: jni: init’d androidjavaclass with null ptr!,是因为在unity使用时我哪边没打好浮华的追求on2014 年 8 月 23 日 at 上午 11:17said:我也出现了这种错误,请问一下你是怎么解决的?浮华的追求on2014 年 8 月 23 日 at 上午 11:16said:请问一下这个问题是怎么解决的?浮华的追求on2014 年 8 月 23 日 at 上午 11:24said:原来是class文件打包的问题,直接用eclipse打包就好了。嘻嘻。浮华的追求on2014 年 8 月 23 日 at 上午 11:10said:请问一下这个错误是怎么解决的?slowon2014 年 8 月 21 日 at 上午 10:57said:c:program files (x86)unityeditordataplaybackenginesandroidplayerdevelopmentbin 我是在這找到了 看unity安裝路徑刘永基on2014 年 8 月 6 日 at 下午 4:35said:求大神指点,如果是调用有回调的intent在untiy3d怎样监听回调?比如说我调用startactivityforresult(); 在android可以在onactivityresult()里处理。但是在u3d里应该怎么办?张洁勇on2014 年 7 月 30 日 at 下午 5:03said:我也是这个问题,商城中点击购买,进入支付宝sdk界面,支付完毕后点退出,没有回到商城界面,却重启icyorangeon2014 年 7 月 3 日 at 下午 4:15said:= =打包那里没看懂啊,windows平台应该怎么打包啊。只说了mac闫烁on2014 年 6 月 30 日 at 下午 8:50said:这个里面activity之间的切换好慢啊,什么原因?yynon2014 年 6 月 27 日 at 上午 9:52said:java.lang.runtimeexception: unable to instantiate activity componentinfo{com.intersave.woh/com.intersave.woh.mainactivity}:java.lang.classnotfoundexception: didn’t find class “com.intersave.woh.mainactivity”on path: dexpathlist[[zip file "/data/app/com.intersave.woh-1.apk"],nativelibrarydirectories=[/data/app-lib/com.intersave.woh-1, /vendor/lib, /system/lib]]大大你好,自己写了个测试jar的工程可以正常运行,之后把plugins整个文件夹拷到项目工程里一运行就报如上错误是什么原因呢lcd 年 6 月 21 日 at 上午 1:18said:按照大师的步骤,终于成功了!unity工程压缩了一下,下载地址:/s/1pj0szsf(运行结果没有添加图片)子风藤on2014 年 6 月 19 日 at 上午 6:19said:error building player: commandinvokationfailure: failed to re-package resources. see the console for details.e:androidadtsdkbuild-toolsandroid-4.4.2aapt.exe package –auto-add-overlay -v -f -m -j gen -m androidmanifest.xml -s “res” -i “e:/android/adt/sdk/platforms/android-19android.jar” -f bin/resources.ap_stderr[resvaluesstyles.xml:7: error: error retrieving parent for item: no resource found that matches the given name 'theme.appcompat.light'.resvalues-v11styles.xml:7: error: error retrieving parent for item: no resource found that matches the given name 'theme.appcompat.light'.resvalues-v14styles.xml:8: error: error retrieving parent for item: no resource found that matches the given name 'theme.appcompat.light.darkactionbar'.]雨松老师您好,我在eclipse中打包了后在unity中发布时一直报这个错误是什么原因呢lcd 年 6 月 20 日 at 上午 11:58said:我也刚刚遇到了这个问题,在网上找了一圈,发现可能是android的版本过高引起的。你可以在创建时选择低一些的版本,并且在eclipse中新建时不勾选 theme 这个选项。对于已经创建好的项目,你可以把main.xml中的这一行删除掉,没有什么影响的子风藤on2014 年 6 月 23 日 at 上午 8:37said:非常感谢,终于解决了,我的世界任我飞on2014 年 6 月 1 日 at 上午 3:16said:我测试call函数时抛出的异常:unityengine.androidjavaexception: java.lang.runtimeexception: can’t create handler inside thread that has not called looper.prepare()
at unityengine.androidjnisafe.checkexception () [0x00000] in :0
at unityengine.androidjnisafe.callvoidmethod (intptr obj, intptr methodid, unityengine.jvalue[] args) [0x00000] in :0
at unityengine.androidjavaobject._call (system.string methodname, system.object[] args) [0x00000] in :0
at unityengine.androidjavaobject.call (system.string methodname, system.object[] args) [0x00000] in :0
at unitytoandroid.ongui () [0x00000] in :0我的世界任我飞on2014 年 6 月 1 日 at 上午 3:25said:现在确定jc和jo都不为空,就是call函数这里出了问题,但是不知道怎么改,求momo指点迷津……我的世界任我飞on2014 年 6 月 1 日 at 上午 8:18said:貌似跟线程有关,跟looper有关系,在被call的函数里使用looper可以call出对话框了,但是我掌握不好,总是出现程序无响应跟死机一样的情况……我的世界任我飞on2014 年 6 月 1 日 at 上午 2:03said:我想要的效果其实挺简单,就是在unity的界面中点击一个按钮后弹出一个android的alertdialog,所以这里想用call来实现它,但call不出来,我先查一下你说的那个问题看看……我的世界任我飞on2014 年 5 月 31 日 at 上午 8:12said:我的call函数调用不了我的自定义函数是怎么回事呢?以下是那两个函数:********************************c#中的*************************************androidjavaclass jc = new androidjavaclass(“com.unity3d.player.unityplayer”);androidjavaobject jo = jc.getstatic(“currentactivity”);jo.call(“startalertdialog”);********************************java中的*************************************public void startalertdialog(){ showdialog(dialog_welcome);
//调用oncreatedialog}我的世界任我飞on2014 年 5 月 31 日 at 上午 11:14said:为啥我自己定义的函数call不出来,求解释啊……雨松momoon2014 年 5 月 31 日 at 下午 1:20said:你看看 jc 和 jo 是不是等于null 了。。我的世界任我飞on2014 年 6 月 1 日 at 上午 2:48said:我试了一下,结果是“都不为空”,貌似就是call未执行,这是我的脚本:
if(guilayout.button(“修改系统时间”,guilayout.height(100)))
androidjavaclass jc = new androidjavaclass(“com.unity3d.player.unityplayer”);
androidjavaobject jo = jc.getstatic(“currentactivity”);
if(jc==null&&jo==null)
stringtoedit = “jc和jo都为空”;
}else if(jc==null)
stringtoedit = “jc为空”;
}else if(jo==null)
stringtoedit = “jo为空”;
stringtoedit = “都不为空”;
jo.call(“startmyalertdialog”);
stringtoedit += “,而且call函数执行了”;
}这肿么处理?求教……我的世界任我飞on2014 年 5 月 30 日 at 上午 9:41said:问题解决了,程序像momo的案例那样正常运行,真开森,是因为我的intent里面多打了一个s进去,真坑爹的错误,害我费了一整天时间……我的世界任我飞on2014 年 5 月 30 日 at 上午 8:47said:我已经配置了,可我的主activity还是找不到,在eclipse环境中测试发现根本程序都没有进去主activity的oncreat方法中,这是为啥呢,5555……我的世界任我飞on2014 年 5 月 30 日 at 上午 8:15said:我的应用安装后桌面上找不到,只能在setting里找到,没有启动和关闭,只有一个卸载可以操作,肿么回事呢?我的世界任我飞on2014 年 5 月 30 日 at 上午 8:16said:在unity中报这个异常:unable to find unity activity in manifest. you need to make sure orientation attribut is set to portrait manually.但我明明已经设置过了……我的世界任我飞on2014 年 5 月 30 日 at 上午 7:03said:jdk1.7做这个有问题么?我的世界任我飞on2014 年 5 月 30 日 at 上午 1:53said:momo老大,还有个问题求教,继承unityplayeractivity类后程序无法在模拟器中测试,那我run as的时候出现“conversion to dalvik format failed with error 1”的错误是正常的吗?如果不正常,是什么问题,咋解决啊?我的世界任我飞on2014 年 5 月 30 日 at 上午 3:03said:我把android工程clean了一下,然后就能在eclipse中正常编译了,此问题解决了;另外,我把导入unity中的libs文件夹删掉了,apk文件也能正常导出了,但现在又出新问题了,我将apk文件安装到手机上后,我找不到我安装的应用,就是找不到启动这个应用的快捷图标,但我能在系统卸载应用的界面找到这个应用,不过只能卸载,没法做其他操作。不知道怎么回事,求大神指点……(我在manifest文件中是配置过了的,下面我贴出我的manifest.xml)&?xml version=”1.0″ encoding=”utf-8″?>我的世界任我飞on2014 年 5 月 29 日 at 上午 11:23said:momo,帮我看看我的unity与android传数据的问题吧,导不出apk文件,我用的unity4.3.2和jdk7,安卓开发用的adt-bundle-windows-x86_64-,头很大啊!以下是我的三个源文件:1、 mainactivity.javapackage com.example.import android.os.//import android.app.//import android.view.import android.content.import android.content.import com.unity3d.player.public class mainactivity extends unityplayeractivity { context mcontext =
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
mcontext =
public void startactivity(string name){
intent intent = new intent(mcontext,newactivity.class);
intent.putextra(“name”, name);
this.startactivity(intent);
}2、newactivity.javapackage com.example.import com.unity3d.player.import android.app.import android.os.import android.view.import android.view.view.import android.widget.import android.widget.import android.widget.public class newactivity extends activity { @override
public void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
textview text = (textview)this.findviewbyid(r.id.textview1);
text.settext(this.getintent().getstringextra(“name”));
final edittext edit = (edittext)this.findviewbyid(r.id.edit);
button close = (button)this.findviewbyid(r.id.button0);
close.setonclicklistener(new onclicklistener() {
public void onclick(view v) {
unityplayer.unitysendmessage(“main camera”,”messgae”,edit.gettext().tostring());
newactivity.this.finish();
}}3、unitytoandroid.using system.public class unitytoandroid : monobehaviour { private string stringtoedit = “如果您修改了系统时间,您将在这里看到修改后的反馈!”; // update is called once per frame void update ()
//当用户按下手机的返回键或home键退出游戏
if (input.getkeydown(keycode.escape)||input.getkeydown(keycode.home) )
application.quit();
} } void ongui() {
if(guilayout.button(“请点击我修改系统时间”,guilayout.height(100)))
//传入参数,调用主activity的startactivity方法
androidjavaclass jc = new androidjavaclass(“com.unity3d.player.unityplayer”);
androidjavaobject jo = jc.getstatic(“currentactivity”);
jo.call(“startactivity”,”application is running”);
stringtoedit = guilayout.textfield (stringtoedit, guilayout.width(300),guilayout.height(100)); } void messgae(string str) {
stringtoedit = }}我的世界任我飞on2014 年 5 月 29 日 at 上午 11:16said:unity4.3.2无法导出apk文件,我这是什么错误?error building player: commandinvokationfailure: unable to convert classes into dex format. see the console for details.d:program filesjavajdk1.7.0_45binjava.exe -xmx1024m -dcom.android.sdkmanager.toolsdir=”d:/program files/adt-bundle-windows-x86_64-/sdktools” -dfile.encoding=utf8 -jar “d:/program files (x86)/unity/editor/data/buildtargettools/androidplayersdktools.jar” -stderr[unexpected top-level exception:java.lang.illegalargumentexception: already added: lcom/unity3d/player/a$1; at com.android.dx.dex.file.classdefssection.add(classdefssection.java:122) at com.android.dx.dex.file.dexfile.add(dexfile.java:161) at com.mand.dexer.main.processclass(main.java:685) at com.mand.dexer.main.processfilebytes(main.java:634)我的世界任我飞on2014 年 5 月 29 日 at 上午 10:15said:为什么我继承自unityplayeractivity的oncreate()方法是protected的而不是public的?you永恒的爱on2014 年 4 月 18 日 at 上午 9:32said:雨松大哥,你好!我是用的window环境下,第一步引入unity的接口就卡住了,unity里面怎样才能生成classes.jar,然后这一步“显示包内容”->contents->playbackengines->androidplayer->bin->classes.jar怎么没找到呢。李人广on2014 年 3 月 25 日 at 上午 8:01said:这个传值每次只能传一个字符串过去吗?滕二少on2014 年 4 月 2 日 at 上午 8:03said:可以传多个参数,比如jo.call(“init”,appid,appkey);然后,对应的java函数,也是一样init(string appid,string appkey)兰花草on2013 年 12 月 17 日 at 上午 2:40said:雨松大哥,我按照上述,然后加了写自己的东西,编译安卓测试的时候 error building player: commandinvokationfailure: unable to convert classes into dex format. see the console for details.c:program filesjavajdk1.7.0_45binjava.exe -xmx1024m -dcom.android.sdkmanager.toolsdir=”f:/adt-bundle-windows-x86_64-/adt-bundle-windows-x86_64-/sdktools” -dfile.encoding=utf8 -jar “d:/unity/editor/data/buildtargettools/androidplayersdktools.jar” -stderr[
出现这样的报错,是为什么啊布on2013 年 12 月 24 日 at 下午 3:53said:你装了sdk吗?breezeeon2014 年 2 月 13 日 at 上午 7:43said:直接生成lib的jar就可以了,工程设为lib大力煎饺on2013 年 12 月 17 日 at 上午 2:27said:momo大神 ,为什么我在eclipse里面继承第三方的jar包,但是build之后 bin/classes下面就是集成不进去呢挨踢工人-尼贝安卓on2013 年 11 月 27 日 at 上午 2:53said:问题已解决,原来是android里面报了ui刷新线程的问题,果然好久么搞android了,犯了这么傻x的问题,感觉momo提供的文档,一如既往的支持!!!!挨踢工人-尼贝安卓on2013 年 11 月 27 日 at 上午 2:38said:请教下momo,我使用的unity4.2.1f4版本,我是按照你的文档一步步写代码执行的,我是在windowsxp下打包jar的,可是我最后在真机上执行,报出了以下的错误:11-27 10:15:20.751: i/unity(400): (filename: ./runtime/exportgenerated/androidmanaged/unityenginedebug.cpp line: 54)11-27 10:15:21.241: i/unity(400):
at unityengine.androidjnisafe.checkexception () [0x00000] in :0 11-27 10:15:21.241: i/unity(400):
at unityengine.androidjnisafe.callvoidmethod (intptr obj, intptr methodid, unityengine.jvalue[] args) [0x00000] in :0 11-27 10:15:21.241: i/unity(400):
at unityengine.androidjavaobject._call (system.string methodname, system.object[] args) [0x00000] in :0 11-27 10:15:21.241: i/unity(400):
at unityengine.androidjavaobject.call (system.string methodname, system.object[] args) [0x00000] in :0 研究了好久还是么能解决,希望momo能指点下。竹子uuon2013 年 11 月 12 日 at 下午 1:34said:error building player: ioexception: tempstagingareapluginsclasses.jar already exists@雨松momo竹子uuon2013 年 11 月 12 日 at 下午 1:35said:雨松老师 请帮忙看看是怎么回事pingback:perlengkapan bayiton2013 年 11 月 9 日 at 上午 9:17said:jc = new androidjavaclass(“com.amare.ar.mainactivity”);这句报了一个我没看懂的问题~exception:jni:init’d androidjavaclass with null ptr!求大神指教菜鸟o(∩_∩)o小许on2013 年 10 月 24 日 at 上午 7:38said:怎么实现程序后台运行 在状态栏显示图标呢?工卒on2013 年 10 月 19 日 at 下午 5:45said:这个方法在java中相当于你只得到了这个类的class对象 , 并没有生成实体,调用方法当然报错工卒on2013 年 10 月 18 日 at 下午 4:02said:非常感谢, 写得很用心,楼主辛苦了~~我命由我on2013 年 10 月 18 日 at 上午 7:24said:我也终于在win7下搞定了,谢谢雨松大大了(t_t),我之前的问题:安装后弹出来说找不到activity。后来我怀疑是打包方式的问题,果然,应该这样做:1、在eclipse里选中工程右键export->java->jar打包后放进unity工程的bin目录下。2、test.cs文件里在win7有两个问题:input.getkeydown(keycode.escape) ?? input.getkeydown(keycode.home)的”||”换一下,还有把中文注释删除了,不然进去了也会弹出来。公布出来希望大家也能在win7下解决掉,o(∩_∩)o谢谢~蛋疼on2013 年 10 月 25 日 at 上午 11:06said:xp也一样,话说我压根就没见过 ?? ,貌似在哪种语言中也没有这种写法,有中文注释出错是因为你没有设置编码。我命由我on2014 年 4 月 2 日 at 下午 2:07said:你是用我的方法打包还是雨松的?飓风小子on2013 年 10 月 17 日 at 上午 9:25said:没学过android 对java也看不懂,勉强看完此篇原理大概清楚,但就是看不懂java的代码和android开发布局xml最后unity3d的test脚本能看懂人生箴言on2013 年 10 月 16 日 at 下午 1:25said:谢谢···案例已经完整执行成功了!张超on2013 年 10 月 10 日 at 上午 7:27said:我想请问 如果这个 android 工程 可以在使用其他android 项目作为库吗? 我项目引用了库,就不能打包了王而银on2013 年 9 月 25 日 at 上午 5:50said:毫无头绪,过来请教,希望能得到解答。eclipse下工程引用了其他工程作为库,但是这个在eclipse编译环境下才可以,unity想要实现这样的效果就得生成引用库的jar包以及把引用库中的res资源全部整合进asset/plugins/android/res下,问题是在eclipse下生成的r.java中资源id值与unity导出apk生成的r.java的资源id值不相同,导致运行时会报资源找不到的问题。还有一个问题是我并没有把引用库中所有的res内容都整合进unity中,因为会一直报failed to re-package resources with the following parameters:这样的错误, 网上找了一圈,试了些方法,都不行,望momo大神提点王而银on2013 年 9 月 25 日 at 上午 5:51said:版本是unity3.5.6的王而银on2013 年 9 月 25 日 at 下午 1:31said:找到问题原因了, 第一个是因为库工程引用顺序问题导致的资源id值改变,整个项目的资源id值要适配后面加入的库工程的id值。 第二个问题归根结底是资源文件没有整合好 导致的。胡勇on2013 年 10 月 10 日 at 上午 9:52said:我做插件时遇到过类似问题,建议你仔细查看unity打包时所生成的临时文件,你仔细核对能发现问题所在的。王而银on2013 年 10 月 23 日 at 上午 8:46said:额,谢了,搞定了。“failed to re-package resources with the following parameters:”这个错误,当初一直不知道是啥问题,因为unity 控制台给的信息有限,必须要打开完整的日志文件才能看到具体问题,一般都是一些相关的资源没加进去的原因。秦远枫on2013 年 9 月 24 日 at 上午 8:22said:我想请问 如果这个 android 工程 可以在使用其他android 项目作为库吗? 为啥我设置其他我项目作为库,应用一运行就提示已停止运行仗剑走天涯on2013 年 9 月 8 日 at 上午 8:37said:找了几天,发现问题,jar -cvf class.jar * 在windows不行,之前用eclipse的export,发现打出来的class.jar少了几个.class。仗剑走天涯on2013 年 9 月 9 日 at 上午 2:16said:jar的id在unity侧都读不到,只好自己代码写布局,布局里的listadapter替换成baseadapter,暂时可以了,另外所有功能界面可以写在unityactivity这里面,这样界面就可以不离开unity显示了阿飞on2013 年 9 月 6 日 at 下午 6:39said:momo,为什么我自己测试的代码有问题?button close = (button)this.findviewbyid(r.id.button0);close.setonclicklistener(new onclicklistener() //testactivity.java:22,提示这句出错了,如果我去掉这句以及以下的代码界面就可以正常显示出来,一添加button的listener就出错,谢谢啦{ @override public void onclick(view v) {
testactivity.this.finish(); }});09-07 02:28:42.761: i/activitymanager(220): starting: intent { cmp=com.sallylove.boxingmania2/.testactivity } from pid
02:28:42.791: d/phonewindow(1489): couldn’t save which view has focus because the focused view com.unity3d.player.unityplayer$17@ has no id.09-07 02:28:42.931: d/unity(1489): ondetachedfromwindow09-07 02:28:43.051: d/androidruntime(1489): shutting down vm09-07 02:28:43.051: w/dalvikvm(1489): threadid=1: thread exiting with uncaught exception (group=0×-07 02:28:43.061: e/androidruntime(1489): fatal exception: main09-07 02:28:43.061: e/androidruntime(1489): java.lang.runtimeexception: unable to start activity componentinfo{com.sallylove.boxingmania2/com.sallylove.boxingmania2.testactivity}: java.lang.nullpointerexception09-07 02:28:43.061: e/androidruntime(1489):
at android.app.activitythread.performlaunchactivity(activitythread.java: 02:28:43.061: e/androidruntime(1489):
at android.app.activitythread.handlelaunchactivity(activitythread.java: 02:28:43.061: e/androidruntime(1489):
at android.app.activitythread.access$1500(activitythread.java:123)09-07 02:28:43.061: e/androidruntime(1489):
at android.app.activitythread$h.handlemessage(activitythread.java:939)09-07 02:28:43.061: e/androidruntime(1489):
at android.os.handler.dispatchmessage(handler.java:99)09-07 02:28:43.061: e/androidruntime(1489):
at android.os.looper.loop(looper.java:130)09-07 02:28:43.061: e/androidruntime(1489):
at android.app.activitythread.main(activitythread.java: 02:28:43.061: e/androidruntime(1489):
at java.lang.reflect.method.invokenative(native method)09-07 02:28:43.061: e/androidruntime(1489):
at java.lang.reflect.method.invoke(method.java:507)09-07 02:28:43.061: e/androidruntime(1489):
at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:847)09-07 02:28:43.061: e/androidruntime(1489):
at com.android.internal.os.zygoteinit.main(zygoteinit.java:605)09-07 02:28:43.061: e/androidruntime(1489):
at dalvik.system.nativestart.main(native method)09-07 02:28:43.061: e/androidruntime(1489): caused by: java.lang.nullpointerexception09-07 02:28:43.061: e/androidruntime(1489):
at com.sallylove.boxingmania2.testactivity.oncreate(testactivity.java:22)09-07 02:28:43.061: e/androidruntime(1489):
at android.app.instrumentation.callactivityoncreate(instrumentation.java: 02:28:43.061: e/androidruntime(1489):
at android.app.activitythread.performlaunchactivity(activitythread.java: 02:28:43.061: e/androidruntime(1489):
… 11 more09-07 02:28:43.091: w/activitymanager(220):
force finishing activity com.sallylove.boxingmania2/.testactivity09-07 02:28:43.101: w/activitymanager(220):
force finishing activity com.sallylove.boxingmania2/.mainactivity09-07 02:28:43.261: d/ak): compass close阿飞on2013 年 9 月 7 日 at 上午 6:06said:下载momo的工程文件,然后里面的android代码,我自己按照你的博客重建了工程,生成class.jar,放到bin下,但是一点击按钮就退出。直接用momo的class.jar就没问题,奇怪。。。一叶浮萍入梦on2013 年 8 月 27 日 at 上午 5:25said:momo,您好,我们现在有一个小团队在开发unity3d的游戏,遇到一个棘手的问题,unity3d和android通信时,从android页面返回unity3d时,有时会黑屏,问题在哪呢???张杰on2013 年 8 月 19 日 at 上午 5:21said:momo,你好!我想做个从u3d直接调用android的弹窗,按照上面的方法,总会隐藏当前u3d的activity,我做了悬浮也不管用,请问有什么方式可以解决这个问题么?欧天窗on2013 年 8 月 27 日 at 上午 2:35said:我知道 嘿嘿moon2013 年 7 月 30 日 at 上午 9:34said:如果java工程里有第三方的jar包,应该怎么打包呢?可以直接复制到unity工程里面吗?胡勇on2013 年 6 月 28 日 at 上午 2:45said:非常感谢雨松给我们的指导,摸索了并实验了2天,总算全部搞定了,我也出现了在座各位提出的类似问题,跟大家分享下解决方案。androidmanisest.xml中的包名最好都写绝对路径,这样bundle identifier就不用强制写你的包名了。之前看到有人提了关于androidmanisest.xml冲突问题,一般我们做untiy 工程主启动文件是com.unity3d.player.unityplayerproxyactivity所以没法用androidjavaobject jo = jc.getstatic(“currentactivity”); 方法来获取当前activity。unable to find field id for“方法名”(static)这类的错误无非就是2种情况:1.androidjavaclass jc = new androidjavaclass(“包名+.主activity”);
包名+.主activity写错了。2.jc.callstatic(“函数名”,参数,参数);函数名或里面的参数写的不正确。胡勇on2013 年 6 月 28 日 at 上午 2:45said:如果大家要写广告或iap之类的插件的话,可以看下我的方法。可以直接写一个静态的方法,在unity 中调用。调用方法:androidjavaclass jc = new androidjavaclass(“包名+.主activity”);jc.callstatic(“函数名”);由于继承了unityplayeractivity可以用下面的方法来获取currentactivity
private static activity getcurrentactivity()
if (m_currentactivityfieldunityplayer != null)
return (activity)m_currentactivityfieldunityplayer.get(m_classunityplayer);
catch (exception e)
log.d(“samsungadhubactivity”, “adhub no activity!”);
} public static void startactivity0(string name)
m_classunityplayer = class.forname(“com.unity3d.player.unityplayer”);
m_currentactivityfieldunityplayer = m_classunityplayer.getfield(“currentactivity”);
catch (exception e)
log.d(“samsungadhubactivity”, “generic exception on instance setup!”);
mcontext = mainactivity.getcurrentactivity();}胡勇on2013 年 7 月 9 日 at 上午 7:27said:我自己制作完成了三星的广告uniyt3d插件和三星iap2.0的uniyt3d插件,欢迎交流qq胡勇on2013 年 8 月 15 日 at 上午 1:29said:samsung iap plugin for unity 经过1个多月的审核总算在unity asset store 上架了。希望大家支持啊,如果购买的话可以在readme.txt中获取我的邮箱,发邮件给我我可以免费赠送samsung ad plugin(三星广告插件)。https://www./#/content/10028胡勇on2013 年 11 月 19 日 at 上午 3:28said:另外出售ios,google,amazon iap,facebook 和twitter分享插件,adconoly 和vungle广告插件flurry数据统计等插件mr.ideron2013 年 9 月 9 日 at 上午 12:43said:那如果不能用androidjavaobject jo = jc.getstatic(“currentactivity”); 方法来获取当前activity的话 那应该用什么呢?谢谢~杨毓炜on2013 年 6 月 27 日 at 上午 4:02said:遇到一个jni的错误 有时间希望你帮我看下 我看了你文章根据你文章的来写 在unity3.x运行没问题 到4.0后就报unable to find field id for “currentactivity”(static)天界 - 小菜on2013 年 10 月 28 日 at 上午 5:05said:注意 unity包名 和 android包名一致,注意两个非主activity 要继承的是activity,不是unity那个了4.x版本无关,都可以,交流unity加我qq
pingback:sarung tangan bayistar smson2013 年 6 月 20 日 at 下午 1:18said:点击第一个按钮后,跳转到activity1,这个过程中有一个很短暂的黑屏,不知道是否跟手机有关系,试了很多次都有这个问题。我是小毛兵on2013 年 6 月 3 日 at 上午 2:11said:unity3d调用android java代码
代码作为插件为什么调用的时候会闪屏一下,或者说黑屏一下?star smson2013 年 6 月 20 日 at 下午 1:19said:你是不是也有黑屏的问题,很短暂的?解决了吗?我是小毛兵on2013 年 5 月 31 日 at 上午 7:06said:momo,想问一下 test.cs这个脚本用js怎么实现啊aleraleron2013 年 5 月 29 日 at 上午 9:05said:momo哇,我按你的步骤做完后,在真机上启动时,首先会有个带标题(应用的名称)的白页面,然后才是unity的splash image页面,最后是unity里那个带按钮的界面。我用你上传的工程(应该是十九那个)打出的apk,在真机上启动时就没有那个白界面,怎么让它不出现第一个那个带标题的白界面啊。。。叫我小棍儿on2013 年 5 月 30 日 at 上午 2:57said:在继承了unityplayeractivity的类,也就是雨松momo所说的unitytestactivity类,在menifest文件中的标签中加上android:theme=”@android:style/theme.notitlebar.fullscreen”属性就可以了。aleraleron2013 年 5 月 30 日 at 上午 7:08said:谢谢!原来在eclipse里改了,却没替换到unity里叫我小棍儿on2013 年 5 月 30 日 at 上午 9:56said:呵呵,解决了就好。白的飘逸on2013 年 5 月 28 日 at 上午 2:50said:momo大神,依旧会报错呢?jni: unable to find field id for ‘currentactivity’ (static)unityengine.androidjavaobject:getstatic(string)test:ongui() (at assets/test.cs:30)用momo大神的工程包也是这样,我自己按照上述步骤,也生成的插件,还是同上的错误,研究了不少时间,还是没有解决~~~遗忘的化尘on2013 年 6 月 25 日 at 上午 9:12said:我也想知道!!!!求解释啊天界 - 小菜on2013 年 10 月 28 日 at 上午 5:06said:注意 unity包名 和 android包名一致,注意两个非主activity 要继承的是activity,不是unity那个了4.x版本无关,都可以,交流unity加我qq
麦洛on2013 年 5 月 27 日 at 上午 8:13said:你好,我在android项目整合了unity3d项目,新写了一个unityactivity,这个activity继承unityplayeractiviy,然后在android项目中的某一个页面中进入这个unityactivity,当我退出这个unityactivity时,整合程序就crash掉了,后来发现是因为unityplayeractiviy中是因为调用了unityplayer.quit()方法。只要一调用这个方法,整个应用程序都崩溃了。楼主有什么好的解决方法么?雨松momoon2013 年 5 月 28 日 at 上午 2:41said:你这个问题我还真没遇到过, 因为我以前也做过activity的切换,不知道你为什么会出这个错误?菜鸟on2013 年 5 月 26 日 at 下午 2:06said:momo…求解。。那个 .calss 打包成jar的,是不是要在苹果系统下的啊?windows下怎么操作啊?谢谢。。。菜鸟on2013 年 5 月 26 日 at 上午 8:35said:momo,为什么我的会报错呢?研究了很久,jni: unable to find field id for ‘currentactivity’ (static)unityengine.androidjavaobject:getstatic(string)test:ongui() (at assets/test.cs:30)白的飘逸on2013 年 5 月 28 日 at 上午 2:49said:我也是一样的啊,用momo大神的工程包也是这样,我自己按照上述步骤,也生成的插件,还是同上的错误,研究了不少时间,还是没有解决~~~遗忘的化尘on2013 年 6 月 25 日 at 上午 9:17said:解决没???解决了说下解决方法啊一叶浮萍入梦on2013 年 6 月 26 日 at 上午 8:59said:首先要确定绑定的android sdk是没问题的。。然后去真机上测试,模拟器不行。。遗忘的化尘on2013 年 6 月 25 日 at 上午 9:16said:你的解决没??我的也是这个问题,求个解决办法一叶浮萍入梦on2013 年 6 月 26 日 at 上午 8:59said:首先要确定绑定的android sdk是没问题的。。然后去真机上测试,模拟器不行。。天界 - 小菜on2013 年 10 月 28 日 at 上午 5:07said:注意 unity包名 和 android包名一致,注意两个非主activity 要继承的是activity,不是unity那个了4.x版本无关,都可以,交流unity加我qq
赵远on2013 年 5 月 22 日 at 上午 9:01said:求大神发表下 最新unity4.1如何利用导出的eclipse工程
做交互啊延澈左on2013 年 5 月 22 日 at 上午 6:02said:有三个问题想问:1.windows下,能像博主说的那样,把android class打包成.jar放到plugin中用吗?2.plugin->android下都copy哪些android工程中的文件?看到博主demo中,bin文件夹如果也是自己创建出来的话,那只有配置文件和只有res文件夹是从android工程中copy过来的了。3.我自己的程序运行到真机上,一出来就是android的界面样式,没有出unity的任何东西,这是什么情况呢?撕扯滴青春on2013 年 5 月 8 日 at 下午 1:13said:那个button01多大了一个0,去掉问题还是存在撕扯滴青春on2013 年 5 月 8 日 at 下午 12:54said:我用的是unity4.1.2直接导出的eclipse工程,unity中直接把上面的c#拖到摄像头上了,函数换成了弹窗,放在public class newunityproject9nativeactivity extends nativeactivity这个activity中
public void _pressbutton0(){
alertdialog.builder(this)
.settitle(“标题” )
.setmessage(“简单消息框0″ )
.setpositivebutton(“确定” ,
} public void _pressbutton1(){
alertdialog.builder(this)
.settitle(“标题” )
.setmessage(“简单消息框1″ )
.setpositivebutton(“确定” ,
.show(); }·c#中
androidjavaclass jc = new androidjavaclass(“com.unity3d.player.unityplayer”);
androidjavaobject jo = jc.getstatic(“currentactivity”);
jo.call(“_pressbutton01″);但是点击第一个按钮直接报错强制退出程序,单机第二个没反应,求指点哪里错了,或者是不能这样子用白的飘逸on2013 年 5 月 30 日 at 上午 6:20said:我是把“unity中直接把上面的c#拖到摄像头上”直接输出,按理说,应该就是momo大神上面的功能,但是真机运行程序就直接报错强退程序了。zzon2013 年 5 月 7 日 at 下午 4:56said:我还要用到高通的插件,其中也一个androidmanifest.xml文件,与这个有冲突,应该怎么解决,能否提供个思路,谢谢雨松momoon2013 年 5 月 8 日 at 上午 3:28said:解决冲突呗。zzon2013 年 5 月 11 日 at 下午 4:03said:不知道怎么解决?小小on2013 年 10 月 30 日 at 上午 7:35said:请问你的问题解决了吗打啊on2013 年 11 月 10 日 at 下午 12:30said:没解决,呵呵呵airdamperon2013 年 4 月 25 日 at 上午 5:26said:我在嵌入eclipse工程后用unity打包放到真机上后在打开程序的时候都会先出现eclipse下的一个样式之后才显示unity默认的那个登录画面,我试了很多也没找到原因。但是使用你的demo就不会有这样的现象,我想知道问题出在哪里。我大部分的测试都是改变eclipse中的样式和创建工程时候的参数。小强on2013 年 4 月 23 日 at 上午 6:41said:调用那个方法 启动一个activity 报启动的那个activity为null
代码报那个按钮为null 什么原因呢pingback:unity3d研究院之与android相互传递消息 | 细胞kumo可爱多on2013 年 4 月 11 日 at 上午 6:30said:untiy发布android的时候不是可以自己产生一个android的eclipse工程吗? 干嘛自己创建一个?雨松momoon2013 年 4 月 14 日 at 下午 12:14said:unity4才支持 导出android 工程,以前时不支持的。。 这个作法在unity4中可以使用的kumo可爱多on2013 年 4 月 15 日 at 上午 5:41said:哦 明白了,我是从4开始学习的~ 谢谢momo~黄杰on2013 年 4 月 18 日 at 上午 1:00said:那为什么我发布成eclipse工程之后不能在虚拟机上面跑呢?跑就直接秒退了,另外如果是需要将unity项目嵌入进安卓中呢?该怎么调用呢?在线等解答啊。。。黄杰on2013 年 4 月 18 日 at 上午 1:01said:那为什么我发布成eclipse工程之后不能在虚拟机上面跑呢?跑就直接秒退了,另外如果是需要将unity项目嵌入进安卓中呢?该怎么调用呢?在线等解答啊。。。kumo可爱多on2013 年 4 月 19 日 at 下午 6:23said:android的虚拟机好像不支持硬件加速的或者是不支持gpu模拟的,和xcode的模拟器比起来差的不是一点, 调试的话不管事ios还是android一旦发布了只能通过log了 不可能断点调试的~黄杰on2013 年 4 月 22 日 at 上午 1:17said:好吧子程子on2013 年 3 月 27 日 at 上午 7:07said:文章介绍了unity调用activity的方法,那么请问在java中如何回调回unity中呢?雨松momoon2013 年 3 月 28 日 at 上午 2:28said:看下一篇吧。。老臣on2013 年 3 月 27 日 at 上午 4:03said:雨松老师你好我遇到一个unity打包apk问题第三方jar包目录结构
com… 包名存放class
assets 文件夹
xml文件eclipse 生成的apk
assets和**.xml 在apk里面unity
assets和**.xml 都不在了 assets 我目前解决是copy到plugins/android/assets/下面可以解决**.xml 目前不知道如果让unity打包到里面去雨松momoon2013 年 3 月 27 日 at 上午 6:18said:是的 unity对 ios 和 android 的路径都挺混乱的, 是得放在plugins/android路径下。unity 会把asset路径下的资源文件打包成二进制。。所以你找不到了。。老臣on2013 年 3 月 27 日 at 上午 6:42said:那这个应该如何做可以让第三方jar包找到自己的资源呢?我现在用unity导出eclipse项目来进行导出apk是可以运行这样比较的麻烦jdz_zlfon2013 年 3 月 27 日 at 上午 1:33said:我也遇到安装在真机上,然后直接秒退了,运行瞬间就退出了。
查找错误中…….雨松momoon2013 年 3 月 27 日 at 上午 2:20said:加油, 你行的。。。jdz_zlfon2013 年 3 月 27 日 at 上午 3:27said:雨凇老师,您好!谢谢您的鼓励,这个问题解决了。但是我还是不知道为什么,刚开始我在工程中导入了mobile开发的unity3d包,然后c#脚本是直接复制您的。然后就出现闪退了。然后我以为是中文字符的问题,我就把“第一个 activity”—->”first activity”。运行成功后,我又改回来了,感觉不是中文字符的问题。最后,我总结了,凡是不要走捷径,特别是做编程开发,踏踏实实,才能获得成功!(随便瞎掰总结下)最后,我想问个问题,androidjavaobject jo = jc.getstatic(“currentactivity”);这里面的参数“currentactivity”是不是系统定义好的,我们不能随便改吧?(我还是学生,刚刚接触unity3d)。希望老师给解答,谢谢老师。雨松momoon2013 年 3 月 27 日 at 上午 3:43said:是这样的, unity打包成android其实也是一个activity 。这里参数的currentactivity 就是得到unity当前的activity 。
androidjavaobject jo = jc.getstatic(“currentactivity”);这一句实际上就是获取一个java的对象,这个参数是可以改动的。。引用下面api中的内容
function start() {
var jo = new androidjavaobject(“android.os.message”);
var valuestring = jo.get.(“what”);
}参数就是类型,根据类名可以得到这个对象。。green* wateron2013 年 3 月 27 日 at 上午 4:55said:哦,有点明白了。谢谢老师。王2娜on2013 年 3 月 4 日 at 上午 7:39said:momo请问,unity项目可以导入两个android项目调用吗如何调用呢?androidjavaobject jo = jc.getstatic(“currentactivity”);参数传主activity的名字就可以吗?求教雨松momoon2013 年 3 月 5 日 at 上午 5:52said:这里不可以。。匿名on2013 年 2 月 26 日 at 上午 8:12said:momo老师你好!我也遇到了大多数人遇到的问题,程序安装后,打开会秒退,不知道什么原因,我觉得可能是打jar包(win7系统)的时候出错了。问一下,这部分内容有没有官方文档可参考呢?你研究这部分内容有没有参考什么资料?雨松momoon2013 年 2 月 28 日 at 上午 10:00said:你去unity圣典上看看吧, 不过官方的资料都挺早的。。无言 年 2 月 25 日 at 上午 10:35said:点击完openactivity那二个按钮没有反应,是怎么回事?雨松momoon2013 年 2 月 28 日 at 上午 10:00said:淡定 淡定!!无言 年 2 月 25 日 at 上午 6:30said:你好,雨松,我没有搞过android,所以问一下,windows下 怎么打 jar那个包?雨松momoon2013 年 2 月 25 日 at 上午 7:29said:windows下用的是dll 。lonelinesson2013 年 2 月 27 日 at 下午 1:27said:什么意思?windows下要打成dll吗?dll的包要怎么打?王2娜on2013 年 2 月 22 日 at 上午 8:21said:谢谢雨凇!全部搞定雨松momoon2013 年 2 月 24 日 at 上午 9:58said:搞定了就好 蛤蛤王2娜on2013 年 2 月 21 日 at 上午 11:06said:请问下主activity中是不能写setcontentview(r.layout.activity0);这句话吗,雨松momoon2013 年 2 月 22 日 at 上午 5:27said:写了的话unity3d的东西就没了。。。王2娜on2013 年 2 月 21 日 at 上午 6:34said:你好,再问下,真机上运行出来主界面了,点击主界面的东西跳转到其他界面,这个方法也还要在c#里面调用吗,要怎么写呢,我现在点击跳转到下一个界面就直接退了王2娜on2013 年 2 月 20 日 at 下午 4:04said:雨凇,请问下,导入导入到unity的时候除了src其他的文件去哪不导入进去吗,其他的文件应该不只是res吧,看到你的只有res文件,而且除了src文件外有bin的,就不需要新建了吗。完了在真机上测试直接闪退了,为什么呢,是哪里导入到unity的时候出错了吗雨松momoon2013 年 2 月 21 日 at 上午 2:08said:src 全部build成bin王2娜on2013 年 2 月 21 日 at 上午 6:35said:我只把res文件,还有manifest拖到unity里面了,然后新建bin文件把jar包放进去了。好像跟你的不对??但是可以执行出来主界面,再往后就跳退了焦哥消失很久了on2013 年 7 月 20 日 at 上午 2:31said:我的也和你这个时候一样啊、能告诉我是怎么解决的吗?王2娜on2013 年 2 月 20 日 at 上午 9:39said:jni: unable to find field id for ‘currentactivity’ (static)unityengine.androidjavaobject:getstatic(string)test:ongui() (at assets/test.cs:26),是哪里出错了呢雨松momoon2013 年 2 月 20 日 at 上午 10:09said:currentactivity 没找到吧。 仔细检查一下中间的步骤。。天界 - 小菜on2013 年 10 月 28 日 at 上午 5:07said:注意 unity包名 和 android包名一致,注意两个非主activity 要继承的是activity,不是unity那个了4.x版本无关,都可以,交流unity加我qq
王2娜on2013 年 2 月 20 日 at 上午 9:08said:在问下这个在unity测试pc上可以看到结果吗,还是必须要在真机上测试????雨松momoon2013 年 2 月 20 日 at 上午 10:09said:得在真机看 模拟器上应该也可以,我没试过。王2娜on2013 年 2 月 20 日 at 上午 8:23said:鱼松请问下,我要调用主activity中的void方法,在c#中构造java对象, androidjavaclass jc = new androidjavaclass(“com.unity3d.player.unityplayer”);23
androidjavaobject jo = jc.getstatic(“currentactivity”);24
jo.call(“方法名”);前两句中的参数是什么意思呢,是固定的吗,如果调用主activity中void 方法名,要怎么传参怎么调用呢,弄了好久每看明白里面的参数是什么意思,求解。谢谢!雨松momoon2013 年 2 月 20 日 at 上午 10:09said:jo.call(“startactivity1″,”第二个activit”);调用主activiey 中的 void startactivity1(string str)方法用这个做例子。 第一个参数就是方法名称, 第二个参数 就是字符串。当然你也可以写别的。。liuhanxuon2013 年 2 月 17 日 at 上午 6:32said:你好,大神,我想问一下在u3d里怎么打开一个网页啊,我看了一个插件awesomium,发现它用不了。。。。雨松momoon2013 年 2 月 18 日 at 上午 10:10said:我只做过 ios 和 android 打开网页的方法。。写插件就可以实现的。 你说的是那个平台?sunyuon2013 年 1 月 28 日 at 上午 5:25said:在 unity中打开 active a, 安卓端,在 active a 中打开 active b.b 调 unity 中的方法可以成功。但 unity 调不了 b 中的方法,而且在关闭 activeb 之前,a 中的方法也不可调用。有解决办法吗?unity 调 a 时是:androidjavaobject jo = jc.getstatic(“currentactivity”)但调b 时不知道getstatic中传什么参数了。wuyingchao1177atsinacnon2012 年 12 月 25 日 at 上午 2:58said:雨松大哥,我继承了unityactivity,就不能使用本身的activity了是吧,可是不用以后为什么progressdialog就不能用了呢??大哥遇到过吗雨松momoon2012 年 12 月 25 日 at 上午 7:36said:我没遇到过,, progressdialog 我没在unity中做过。。不好意思哈vincenton2012 年 12 月 18 日 at 下午 1:12said:请问,unity for android
成熟吗?雨松momoon2012 年 12 月 19 日 at 上午 3:07said:挺成熟的。。kevenon2012 年 12 月 17 日 at 上午 4:11said:先谢谢雨松的文档给予了我很大帮助,另外想请问下,现在设置了自己的activity为主入口,那么u3d里调用安卓api的方法(例如切换横屏竖屏)都用不了了,怎么办?feng21eon2012 年 12 月 15 日 at 上午 7:50said:你好,请问下unity的包名有办法不一样吗?每次导出来的apk都必须跟包名相同,有办法不相同吗?我看友盟提供的unity的插件是不需要相同的,但是不知道怎么实现allenon2012 年 12 月 6 日 at 上午 2:51said:雨松,进入unity之后android的menu和back按钮都用不了,我看退出都是在c#用input.getkeydown(keycode.escape)来完成。在unity下有可能实现按下menu键,弹出android下设计好的menu菜单功能么?雨松momoon2012 年 12 月 6 日 at 上午 4:45said:可以的,, 因为android的setting菜单也可以是代码弹出来的么, 通过传递消息的形式弹出。。。allenon2012 年 12 月 7 日 at 上午 1:30said:写一个函数接口,在unity下调用,然后android弹出菜单,就是并不是用之前android自己底下的点击menu键弹出菜单。是这个意思吧?joycecuion2012 年 12 月 5 日 at 上午 6:37said:我也想知道,我的androidmanifest.xml中启动的activity非unitytestactivity,也是这样的,我不能把它设置成主的的activity,可是要怎么找到呢,gcj5 年 11 月 30 日 at 上午 6:47said:我这里出现一个错误 jni: unable to find field id for ‘currentactivity’(static) ,我想问一下 androidjavaobject jo = jc.getstatic(“currentactivity”);这句代码中的currentactivity参数是固定的吗,getstatic方法的字面意思理解应该是取得一个静态的字段值吧
不知道我的程序那里有问题
是不是我生成的jar文件有问题
请指教一下 谢谢!雨松momoon2012 年 12 月 3 日 at 上午 8:06said:参数是可变的, 你可以查一下官方文档。。 currentactivity 就是打开当前的activity刘岐on2012 年 11 月 30 日 at 上午 3:06said:momo你用的是什么版本的eclipse啊先在版本的弄以上代码各种错新手求帮助雨松momoon2012 年 11 月 30 日 at 上午 4:30said:我是mac下的eclipse刘岐on2012 年 12 月 3 日 at 上午 4:01said:我不想问系统,我想问eclipse的版本,现在最新的eclipse和你这个生成的东西不一样了雨松momoon2012 年 12 月 5 日 at 上午 8:47said:我的是mac eclipse 3.5仗剑走天涯on2013 年 9 月 8 日 at 上午 11:35said:确实,这里回复的很多人估计都没自己写代码试过。我用自带工具或者fatjar工具打包classes.jar也不行。textview,button死活findviewbyid取不到id。向雨松学习on2012 年 11 月 7 日 at 上午 8:06said:请问为什么我打包出来,icon 还有项目名称都变成 android插件的了。如何保留unity的设置雨松momoon2012 年 11 月 7 日 at 上午 11:01said:你把untiy插件里面的icon删掉就可以了侯金学on2012 年 11 月 8 日 at 上午 1:54said:momo,按照你的这种思路,我调用第三方广告,已经成功了,现在想把它做成一个x.unitypackage类型的插件,该怎么做?你有这种插件吗?能否发我一份?谢谢。雨松momoon2012 年 11 月 8 日 at 上午 2:27said:不好意思我没做过这样的插件。侯金学on2012 年 11 月 13 日 at 上午 6:36said:你好,momo,问个问题,如果一个unity项目中想放两个这样的插件,我把两个不同android项目中编译好的jar包都放到bin目录下,然后在unity项目中调用,这个时候发现编译不通过。这个该怎么解决?4热提问on2012 年 11 月 14 日 at 下午 12:38said:sb,自己不会动脑子啊会飞的鱼on2013 年 10 月 10 日 at 上午 7:25said:如果android项目引用了第三方库,那么怎么进行处理呢,为什么我不能打包了呢?向雨松学习on2012 年 11 月 8 日 at 上午 9:34said:我是想保留untiy设置里面的icon,把android插件里面的icon删除就变成没有icon。向雨松学习on2012 年 10 月 31 日 at 上午 8:52said:问下 用unity打包出来 项目名称都变成android项目里面设置的了?怎么解决这个问题wwjdon2012 年 10 月 24 日 at 下午 12:10said:/documentation/scriptreference/androidjavaobject.getstatic.html?from=androidjavaclass使用这个方法会报错momo你是否也碰到过?wwjdon2012 年 10 月 24 日 at 上午 7:18said:momo, 我从unity场景退出时候如何能调用到unityplayeractivity的onstop(),ondestroy()?我的unityplayeractivity和你的一样没有layout只是接收数据从蓝牙,然后unity界面调用数值,我在关闭程序时候用的application.quit(); 但是我的unityplayeractivity并没停止工作,蓝牙还在连接着。雨松momoon2012 年 10 月 20 日 at 上午 9:45said:做一个透明的activityjoycecuion2012 年 12 月 5 日 at 上午 3:06said:我想问下,这个透明的activity只的是插件的这个么activitywwjdon2012 年 10 月 18 日 at 上午 8:49said:木有搞定啊,momo求助。1,我将class.jar放入工程中新建文件夹lib下,add to build path 或者add user lib 再引入这个jar两种效果一样。java.lang.runtimeexception: unable to instantiate activity componentinfo;
classnotfoundexception:com.unityactivity.unityactivity 2,我将class.jar放进工程的libs文件夹下, add to build path 或者add user lib 再引入这个jar两种效果一样。报错:10-17 20:15:34.975: e/unity(6189): unable to locate player settings. bin/data/settings.xml10-17 20:15:34.985: d/androidruntime(6189): shutting down vm10-17 20:15:34.985: w/dalvikvm(6189): threadid=1: thread exiting with uncaught exception (group=0x-17 20:15:34.985: e/androidruntime(6189): fatal exception: main10-17 20:15:34.985: e/androidruntime(6189): java.lang.unsatisfiedlinkerror: couldn’t load mono: findlibrary returned null10-17 20:15:34.985: e/androidruntime(6189):
at java.lang.runtime.loadlibrary(runtime.java:429)10-17 20:15:34.985: e/androidruntime(6189):
at java.lang.system.loadlibrary(system.java:554)10-17 20:15:34.985: e/androidruntime(6189):
at com.unity3d.player.unityplayer.(unknown source)10-17 20:15:34.985: e/androidruntime(6189):
at 折磨半个月了,纠结wwjdon2012 年 10 月 19 日 at 上午 3:14said:momo给点建议吧雨松momoon2012 年 10 月 20 日 at 上午 9:45said:仔细检查一下你的代码。。wwjdon2012 年 10 月 22 日 at 下午 2:48said:momo我把代码附上了,就是最简单的一个验证,没有什么内容,难度。根据网上的帖子,说是包名或者路径错误,但是我找了几遍都没问题fisher彪on2012 年 10 月 15 日 at 上午 3:38said:用这种方法添加google的admob后怎么运行起来就只显示广告,应用本身的内容显示不出来了?sesron2012 年 9 月 16 日 at 上午 11:21said:怎么在4.1的系统上运行不正常,首先会出现一个有u3d图标的界面,然后才跳到程序界面,点击一个按钮,刚刚进入activity01,但是又直接退出了activity01,回到unitytestactivity中,难道是系统的原因吗?雨松momoon2012 年 9 月 16 日 at 上午 11:34said:把u3d升到最新版本试试。sesron2012 年 9 月 17 日 at 上午 3:55said:还是不行。。。。。。
。雨松momoon2012 年 9 月 17 日 at 上午 4:49said:那就再查一下代码吧, 我当时做的时候还没有安卓4.1呢 呵呵秦_ 年 7 月 8 日 at 上午 7:56said:还想再问一句,用这个方式实现的功能,导出文件成在苹果平台上是不是也可以运行呢?雨松momoon2012 年 7 月 8 日 at 上午 11:23said:不行 ,导出在苹果得用类似的另外一种方式。秦_ 年 7 月 8 日 at 上午 7:42said:我下载了包,可是没有有执行成功。提示错误:jni: unable to find method id for ‘startactivity0′unityengine.androidjavaobject:call(string, object[])test:ongui() (at assets/test.cs:33)另外,文章图中圈出的plugins目录同我导入的目录机构和内容基本一致,但是导入后显示的文件名前面没有小图标,是不是我导入的有问题呢?雨松momoon2012 年 7 月 8 日 at 上午 11:26said:你是用wind导出的还是 mac 这个例子是在mac下写的 , 你是下载后直接打包导出android吗?秦_ 年 7 月 8 日 at 上午 11:59said:我是在windows下的unity3.5.0f5版环境下操作的。我是下载了你这里提供的包“android.unitypackage”,然后assets->import package->custom package
方式导入的,然后执行。雨松momoon2012 年 7 月 8 日 at 下午 12:37said:那就有点奇怪了。。 按照错误的提示 是说没有找到 startactivity0 ()方法。matrixon2012 年 6 月 27 日 at 上午 10:02said:博主,这个代码能在unity里直接运行看效果么,我放真机里可以通讯,但在unity里直接运行就告诉我找不到field id “currentactivity”,不知道是我配置问题,还是没办法unity直接运行的雨松momoon2012 年 6 月 28 日 at 下午 1:18said:这样的做法似乎有点狠, 呵呵。。pingback:unity3d研究院之与android相互传递消息(十九) & t客网 ︱ techpotarcheron2012 年 6 月 14 日 at 上午 8:40said:你好, 我把程序放進了android機運行後, 第二個activity直接出現了, 而不是unity的gui, 請問是要設定嗎?雨松momoon2012 年 6 月 14 日 at 上午 8:56said:activity 和 gui没有关系。 你下载源码看看ar_koolon2012 年 5 月 31 日 at 上午 3:07said:hello博主,按步骤写了上面程序但在调用jo.call(“startactivity1″,”第二个activit”);的时候出现下面错误getmethodid(“startactivity1″, “(ljava/lang/)v”) failed!,可能那里出了问题?cs中代码:void ongui(){if(guilayout.button(“open activity04″,guilayout.height(100))){androidjavaclass unityactivity = new androidjavaclass(“com.unity3d.player.unityplayer”);androidjavaobject currentactivity = unityactivity.getstatic(“currentactivity”);currentactivity.call(“startactivity1″,”第一个activity”);}}王军on2012 年 5 月 24 日 at 上午 8:43said:支持啦,希望继续更新!你研究的已经比较深了!雨松momoon2012 年 5 月 24 日 at 上午 8:48said:感谢支持, 有时间要常来喔 嚯嚯!人生on2012 年 5 月 6 日 at 上午 6:26said:希望继续更新..支持momo小武on2012 年 5 月 3 日 at 上午 5:58said:写的很不错,支持ar_koolon2012 年 5 月 31 日 at 上午 9:48said:感谢,问题找到是在androidmanifest.xml中启动的activity非unitytestactivity,那么currentactivity中就找不到startactivity1方法,有什么办法能解决吗matrixon2012 年 6 月 28 日 at 上午 6:21said:哦 原来如此。今天我又把我原来的android游戏 重新打成jar包 和unity交互,用unity的按钮呼出我的游戏activity,基本还正常,只是游戏被强制全屏了。我原来游戏的分辨率是320 480的,现在放在540 960的手机上被强制全屏 原来的触点就对不上了,虽然不是什么大问题,不过我不知道能不能保持我原来游戏的分辨率,这样可以增强unity和android之间的耦合。做起事来方便一些急on2012 年 9 月 19 日 at 上午 2:19said:我用call(“methed”,new string【】{“haha”})传递数组,怎么报错啊getmethedid(…….)failed,int型数组没问题急on2012 年 9 月 19 日 at 上午 2:21said:传递参数,int型数组没问题,byte型也没问题,char型数组能调到方法,报空指针,string型数组,调不到方法,报错getmethedid(ljava。long。string v)failed雨松momoon2012 年 9 月 19 日 at 上午 3:08said:直接传字符串 然后强转 如果还不行 就使用.so进行交互雨松momoon2012 年 9 月 19 日 at 上午 3:17said:我没用这种方法传递过数组 如果是大量数据 你还是用.so的方式传递吧急on2012 年 9 月 19 日 at 上午 8:47said:谢谢,经测试,c#脚本传参数到java层,string数组传递失败,报i错:获取方法id失败,char数组,可以获取方法,但参数接收不到,java层返回数据到c#脚本,返回类型为char型数组,直接报错:什么通道粉碎,程序关闭,别的都正常。不理解为什么,如果大神以后研究清楚了,恳求相告,邮箱雨松momoon2012 年 10 月 23 日 at 上午 4:08said:那里有错误呢??wwjdon2012 年 10 月 23 日 at 上午 7:34said:找到问题了,是我打包路径错了,我在.class的目录下打包的,应该在com文件夹那里。。。。一个小疏忽,断断续续弄了三周。雨松momoon2012 年 10 月 24 日 at 上午 5:37said:解决了就好 加油哈!我是小毛兵on2013 年 6 月 8 日 at 上午 4:22said:我已经实现了调用,但是在unity调用android时,就像切换界面一样又一个黑屏启动的时间过程,效果不好,我的世界任我飞on2014 年 5 月 31 日 at 上午 7:42said:谢谢momo酱,我按你提供的思路才弄出来的,呵呵……闫烁on2014 年 6 月 30 日 at 下午 9:32said:“open activity”按钮点击之后 1秒多完成切换,”关闭这个activity按钮“点击之后切换时间长达2秒左右,我的机子三星note1,这个小程序不至于啊。分类: |}

我要回帖

更多关于 unity xml 读写 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信