‘壹’ Unity5怎么读取到Resources文件下的XML文件啊
XmlDocument xml = new XmlDocument();
xml.Load(Application.dataPath+"/Resources/"+"new.xml");
XmlNode root = xml.DocumentElement;
‘贰’ unity读取txt 还是xml 好读
读取txt快捷方便,数据小适用,读取xml严谨规整,数据大适用
‘叁’ unity哪一个路径在安卓中是可以读写的
光有这个路径是不行的,还要在unity3d中的player设置里面,在android那个选项卡下面,有个internal给改成SDCard就可以读写了。 拓展:在plugins的android下建立AndroidManifest.xml然后配置android的设置
‘肆’ unity怎么调用android
方法/步骤
1
首先我们要创建一个android项目
步骤阅读
2
因为项目需要使用Unity提供的接口,所以需要将接口classes.jar引入至当前工程但中。接口包的所在地,打开Finder->应用程序->Unity->点击Unity图标,鼠标右键选择“显示包内容”->Contents->PlaybackEngines->AndroidPlayer->bin->classes.jar
。接口包引入工程后,开始编写java代码。
3
UnityTestActivity是主Activity,Unity程序一起动就会调用这个Activity,它是在AndroidManifest.xml中配置的。它需要继承UnityPlayerActivity,然而它就是刚刚我们引入的classes.jar包中提供的接口类。UnityTestActivity对外提供了两个方法接口,StartActivity0(String
name) 方法与StartActivity1(String
name)方法,这两个方法是在Unity中使用C#脚本调用的,意思是调用后程序将打开一个新的Activity,参数name也是由C#脚本传递过来的,接着将传递的String参数继续传递给新打开的Activity。
步骤阅读
4
接下来就是设置xml文件和布局文件了。对于会android编程的同学就很熟悉了。
5
把写好的java代码发布成jar包。接下来就创建unity工程,Unity工程中文件夹的结构如下,Plugins->Android的名称不能修改,必需保持一致。接着把Eclipse中Android的工程文件拷贝至这里,除了Android工程中的src文件夹,将其它文件夹全部拷贝至Plugins->Android文件夹中。最后在Plugins->Android文件夹中创建bin文件夹,然后将刚刚生成的.jar文件拷贝进来,jar的名称可以随便修改,但是jar包里面必须是com->xys->你的class文件,否则运行程序后提示找不到类文件。
步骤阅读
6
接下来就是如何在C#中调用android的方法的代码了。
加入如下代码。
AndroidJavaClass jc = new
AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo =
jc.GetStatic<AndroidJavaObject>("currentActivity");
jo.Call("StartActivity0","第一个Activity");
先得到AndroidJavaClass,然后得到AndroidjavaObject就是当前Activity的对象,也就是我们在上面创建的主UnityTestActivity.JAVA。拿到它的对象后调用jo.Call()参数1表示调用UnityTestActivity.JAVA类中的方法名称,参数2表示该方法传递过去的参数。如下图所示:“第一个Activity”与“第二个Activit”就是我在C#中传递过去的字符串。
7
发布成android平台apk
‘伍’ unity读取数据库的内容生成xml文件保存本地
首先一个根节点
表中每一行对应为一个子节点
Id,Problem,ABCD四个选项,均作为其子节点(尽量不要有过多的属性,用节点去描述),正确答案作为属性
比如:
<problem>
<question1 answer='A是正确答案' >
<question>问题内容</question>
<A>选项A</A>
<B>选项B</B>
<C>选项C</C>
<D>选项D</D>
</question1>
...
</problem>
‘陆’ unity怎么获取 android onactivityresult
[java] view plain
Intent intent = new Intent(this, LoginActivity.class);
startActivityForResult(intent, LOGIN_REQUEST);
[java] view plain
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
ZLog.i(TAG, "onActivityResult: requestCode="+ requestCode +", resultCode="+ resultCode);
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == LOGIN_REQUEST) {
ZLog.i(TAG, "requestCode");
if (resultCode == LOGIN_RESULT) {
ZLog.i(TAG, "resultCode");
this.onCreateOptionsMenu(this.mMenu);
}
}
}
LoginActivity.java
[java] view plain
setResult(MainActivity.LOGIN_RESULT);
finish();
后来谷歌一番之后,找到了问题所在,是 onActivityResult 和 AndroidManifest.xml 中 activity 的 launchMode 配置有冲突造成的。
解决办法:
需要返回 result 的 activity 不能使用:
[html] view plain
android:launchMode="singleTask"
android:launchMode="singleInstance"
甚至有人说 singleTop 也会冲突,那就只好用默认的 standard 了,至于原理我没空深入去研究了。
经试验,设置为默认的 standard 后确实就正常了,暂时就这样解决吧。
‘柒’ 关于Unity部署安卓程序时读取配置文件的问题
放在Unity项目中名为StreamingAssets文件夹中的任何文件将会被一字不差地复制到目标机器上的特定文件夹里
MAC/Win: path = = Application.dataPath + "/StreamingAssets";
iOS: path = Application.dataPath + "/Raw";
Android: path = "jar:file://" + Application.dataPath + "!/assets/";