导航:首页 > 操作系统 > unity3dandroidxml

unity3dandroidxml

发布时间:2022-08-24 17:10:08

1. 新手,初学Unity3d,想用Unity3d发布android的apk,但是老是报如下错误 :见问题补充

这种情况可能是因为sdk升级造成的,新版本的android sdk和旧版的更改不少,结构都变了了,特别是你如果用老版本的unity(3.x),就会和出现这种情况,你可以找找老版本的sdk试试,或者用最新的unity

2. unity3d是否能在android的sdcard目录创建文件和文件夹

可以。在unity3d中的player设置里面,在android那个选项卡下面,有个internal给改成SDCard就可以读写了。
自己一般在plugins的android下建立AndroidManifest.xml然后配置android的设置

3. Unity3d开发安卓游戏嵌入有米广告的问题

安卓游戏的开发,你可以在应用宝里面搜索一下开发制作的教程呢
有了开发制作的教程,相信你操作起来会更简单的
应用宝里面的资源很多,除了有大量的APP应用可以免费下载
还有很多游戏的教程和攻略呢,都是很不错的,免费下载呢
在手机上打开应用宝软件搜索你所需要的教程,找到下载就可以了。
也可以通过手机连接电脑端的应用宝软件来下载的,打开PC端的应用宝软件——手机应用。
可以通过搜索你所需要的游戏教程进行下载呢,都是很方便的。还望采纳

4. 如何进行Unity3D与Android消息传递

Unity与Android的相互调用及消息传递主要采取中间件的方式。

帮你归类一下,大致如下:

  1. 创建java项目

  2. 在Java项目中引入Unity提供的classes.jar包

  3. 编写你自己的Java文件,同时引入com.unity3d.player.UnityPlayerActivity包

  4. 修改Manisest.xml文件

  5. 将项目导出Jar文件

  6. 在Unity中创建Plugins/Android目录,将导出的Jar文件和Manisest.xml复制到Android目录下

  7. 修改Unity中导出项目的包名

  8. 在项目中创建并实例化AndroidJavaClass对象,并实例化参数com.unity3d.player.UnityPlayer包

  9. 同时创建并实例化AndroidJavaObject对象,实例化参数为currentActivity

  10. 最后可以使用实例化的AndroidJavaObject.Call来调用Java中写好的公有方法。

5. 如何在Unity3D实现Admob

Unity3d已经支持android,如何在程序里加入admob?
在https://github.com/ 中找到一些方法,并下载了一个unitypackage,把android项目的包名改成unitypackage里的包名。

用eclipse新建一个项目UnityAd,导入admob.jar包的GoogleAdMobAdsSdk-4.1.0.jar和Unity3d程序目录下的
然后编写一个Activity继承UnityPlayerActivity。

Java代码
<!-- base permission -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

<!-- base permission for location-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<!-- base permission required by chartboost and -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<!-- permission required by mmedia -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature android:name="android.hardware.microphone" android:required="false" />

AndroidManifest.xml写成:
Xml代码
android:value="8115000" />
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:theme="@android:style/Theme.Translucent"/>

<!-- Amazon Mobile Ads -->
<activity android:name="com.amazon.device.ads.AdActivity"
android:configChanges="keyboardHidden|orientation|screenSize"/>

<!-- InMobi -->
<activity android:name="com.inmobi.androidsdk.IMBrowserActivity"
android:configChanges="keyboardHidden|orientation|keyboard|smallestScreenSize|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:hardwareAccelerated="true" />

1.找到UnityAd项目目录,把bin文件夹下的com文件夹打成jar包,jar包名为com.hsj.test.jar,将这个jar包拷贝到unity项目目录下的Assets\Plugins\Android\bin中。

2.把UnityAd项目目录下的res文件夹和AndroidManifest.xml文件拷贝到unity项目目录下的Assets\Plugins\Android。

3.在unity项目目录下的Assets\Plugins\Android中新建libs目录,把GoogleAdMobAdsSdk-4.1.0.jar拷贝到libs目录中。

4.在unity3d程序里可以看到。
5.用unity3d Build android 安装包。
6.把安装包放到虚拟机或真机上运行。
希望可以帮助到你,更多unity,就在纳金论坛。

6. unity工程是怎么在android上运行的

首先我们要创建一个android项目 因为项目需要使用Unity提供的接口,所以需要将接口classes.jar引入至当前工程但中。接口包的所在地,打开Finder->应用程序->Unity->点击Unity图标,鼠标右键选择“显示包内容”->Contents->PlaybackEngines->AndroidPlayer->bin->classes.jar 。接口包引入工程后,开始编写JAVA代码。 UnityTestActivity是主Activity,Unity程序一起动就会调用这个Activity,它是在AndroidManifest.xml中配置的。它需要继承UnityPlayerActivity,然而它就是刚刚我们引入的classes.jar包中提供的接口类。UnityTestActivity对外提供了两个方法接口,StartActivity0(String name) 方法与StartActivity1(String name)方法,这两个方法是在Unity中使用C#脚本调用的,意思是调用后程序将打开一个新的Activity,参数name也是由C#脚本传递过来的,接着将传递的String参数继续传递给新打开的Activity。 接下来就是设置xml文件和布局文件了。对于会android编程的同学就很熟悉了。 把写好的java代码发布成jar包。接下来就创建unity工程,Unity工程中文件夹的结构如下,Plugins->Android的名称不能修改,必需保持一致。接着把Eclipse中Android的工程文件拷贝至这里,除了Android工程中的src文件夹,将其它文件夹全部拷贝至Plugins->Android文件夹中。最后在Plugins->Android文件夹中创建bin文件夹,然后将刚刚生成的.jar文件拷贝进来,jar的名称可以随便修改,但是jar包里面必须是com->xys->你的class文件,否则运行程序后提示找不到类文件。 接下来就是如何在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

7. 如何给unity3d工程加入依赖的android工程

有些sdk的接入是提供jar包,这样的可以简单地将jar包制作成android plugin,加入到unity工程中,打包成apk输出。
而还有一些sdk,则是提供了一个lib工程。在sdk提供的文档里说明,要在android工程中,通过添加依赖的方式来添加。但是对于unity工程,这个就有点不一样。
经过多次试验,需要步骤:
1. 将sdk工程整个工程目录【注1】,加到plugins/android/%sdk name%目录下
2. 同时导出jar包,将jar包放置到plugins/android/libs目录中。
3. 然后可以选择制作android plugin的方式,或者直接在unity3d中进行调用。
【注1:具体包含的内容为:res/目录 libs/目录 assets/目录 AndroidManifest.xml .classpath project.properties .project proguard-project.txt 以及其他,依具体情况而定】
说一下在试验过程中遇到的一个奇怪的现象。在上面的步骤中,如果跳过步骤2,使用unity3d直接生成apk(情况a),与导出eclipse工程,再使用ecliipse生成apk(情况b),会出现两种不一样的情况。在情况a中,若调用sdk的接口,会收到classnotfound的异常,而情况b则可以正常通过。通过查看unity工程/Temp/StagingArea/目录,猜测,unity只是对plugins/android/%sdk name%目录下的资源文件进行处理,而src目录下的java文件并不处理。

8. Unity与Android的通信问题:Unity中调用Android的jar包后,Unity生成的apk安装后找不到可运行的程序...

将Unity3D安装目录下的Unity\Editor\Data\PlaybackEngines\androidplayer\release\bin\classes.jar
拷贝到Android工程的libs文件夹里:
Unity3D:[3]Unity3D与Android交互的问题
右键单击classes.jar选择Build Path里面的Add to Build Path:
Unity3D:[3]Unity3D与Android交互的问题
Unity3D:[3]Unity3D与Android交互的问题
在MainActivity中继承UnityPlayerActivity。删除多余的方法,仅保留onCreate方法中的super.onCreate语句,如下:
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
添加要在unity中调用的方法,这里添加一个带一个参数的方法StartActivity来调用Android的Activity从而运行Android的代码。还添加了一个有返回值的方法GetInt,用来测试在Unity中获取android中方法的返回值。(貌似只能有一个UnityPlayerActivity,而且这个Activity不能是调用第三方SDK方法的Activity。UnityPlayerActivity只能作为Unity和Android交互的一个接口,在这里面再去调用其他的Activity)
package com.example.unitydemo;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

import com.unity3d.player.UnityPlayerActivity;

public class MainActivity extends UnityPlayerActivity {
private Context mContext = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
}

public void StartActivity(String name) {
Intent intent = new Intent(mContext, WelcomeActivity.class);
intent.putExtra("name", name);
this.startActivity(intent);
}

public int GetInt()
{
return 1;
}
}

9. 新手,用Unity3d发布android的apk老是报错!!求大神帮忙!!急

Android的SDK用以前的android-sdk-windows目录试试
如果不能解决的话,就是AndroidManifest.xml的配置问题,不知道你的配置文件内容,没法具体回答

10. 如何将unity模型导入android程序中

1.Android端代码可以在Eclipse中开发(AndroidStudio没有试,应该也可以)

2.Unity3D端代码要在Unity中开发

3.Android和Unity3D端,两边都需要加入一些代码从而可以使之关联交互。

4.将Android端代码编译成jar文件以插件形式放入到Unity端中

5.在Unity中将整个项目Build成apk文件,然后安装到手机或模拟器里运行

本文主要讲解1,2,3。对于4,5建议大家去看雨松MOMO的Unity博客的第17篇和第18篇。

UnityPlay:

在编写Android端和Unity3d端代码前,有必要先了解一下可以使两部分交互的类UnityPlay。

个人理解UnityPlay是个Unity提供给外部交互的一个接口类。

为什么是“个人理解”?这我不得不爆粗口了,TMD官网根本就没有相关的API和文档(如果大家有谁找到一定给我来一份,就当我骂自己了)。

在关联Android时,想拿到UnityPlay以及相关类的jar包可以从下面的地址找到:Unity安装路径\Editor\Data\PlaybackEngines\androidplayer\bin在bin文件夹下有一个classes.jar的jar文件,它就是我们想要的。

而在bin同目录下有一个src文件,点击到最后有3个类,分别是UnityPlayerActivity.java,UnityPlayerProxyActivity.java,UnityPlayerNativeActivity.java。前两个打开个后只有一行代码,说的是UnityPlayerActivity和UnityPlayerProxyActivity都继承自UnityPlayerNativeActivity。而打开UnityPlayerNativeActivity中居然有代码,而且我估计这应该是UnityPlayerNativeActivity的源码

由于关于UnityPlay的资料我只找到这么一个,所以我把UnityPlayerNativeActivity中的代码都贴出来,如果我注解有不对的地方希望大家指正。

/**
* UnityPlayerActivity,UnityPlayerProxyActivity都继承自UnityPlayerNativeActivity
* 而UnityPlayerNativeActivity继承自NativeActivity
* 在该类里定义了一些和ANDROID生命周期相同的回调方法,留给自定义的Activity子类重写。
*/
public class UnityPlayerNativeActivity extends NativeActivity
{
//UnityPlayer的引用,并且我们不能改变这个引用变量的名字,它被native code所引用
protected UnityPlayer mUnityPlayer;

protected void onCreate (Bundle savedInstanceState)
{
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
// 设置显示窗口参数
getWindow().takeSurface(null);
setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);
getWindow().setFormat(PixelFormat.RGB_565);

// 创建一个UnityPlayer对象,并赋值给全局的引用变量
mUnityPlayer = new UnityPlayer(this);
//为UnityPlayer设置一些参数
if (mUnityPlayer.getSettings ().getBoolean ("hide_status_bar", true))
getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

int glesMode = mUnityPlayer.getSettings().getInt("gles_mode", 1);
boolean trueColor8888 = false;
// UnityPlayer.init()方法需要在将view附加到layout之前调用。它将会调用native code
mUnityPlayer.init(glesMode, trueColor8888);

// 从UnityPlayer中获取到Unity的View视图
View playerView = mUnityPlayer.getView();
// 将Unity视图加载到根视图上
setContentView(playerView);
// 使Unity视图获取焦点
playerView.requestFocus();
}
protected void onDestroy ()
{
// 当Activity结束的时候调用UnityPlayer.quit()方法,它会卸载之前调用的native code
mUnityPlayer.quit();
super.onDestroy();
}

// 下面几个方法都是ANDROID相关回调方法,确保在ANDROID执行相应方法时UnityPlayer也需调用相应方法
protected void onPause()
{
super.onPause();
mUnityPlayer.pause();
}
protected void onResume()
{
super.onResume();
mUnityPlayer.resume();
}

public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
mUnityPlayer.configurationChanged(newConfig);
}
public void onWindowFocusChanged(boolean hasFocus)
{
super.onWindowFocusChanged(hasFocus);
mUnityPlayer.windowFocusChanged(hasFocus);
}
public boolean dispatchKeyEvent(KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_MULTIPLE)
return mUnityPlayer.onKeyMultiple(event.getKeyCode(), event.getRepeatCount(), event);
return super.dispatchKeyEvent(event);
}
}
看完这个类后就知道了为什么在自定义的Activity中继承了UnityPlayerActivity等类以后,只要重写了onCreate并调用super.onCreate()方法后不需要任何其他的代码就会自动的显示出Unity3D的视图。因为初始化Unity视图的代码都在UnityPlayerNativeActivity父类中实现了。

ANDROID端代码:

在写ANDROID代码的时候,一定要导入Unity3D提供给我们的jar包,jar包的位置我在上面说了。引入jar包加入到buildpath中这些最基本的我就不多说了。

要想和Unity交互,我们就不能继承ANDROID提供给我们的Activity,我们需要继承刚才jar包中引入的Unity提供的Activity类,一共有这么3个:

UnityPlayerActivity,UnityPlayerProxyActivity,UnityPlayerNativeActivity。具体区别不知道,因为没有文档,没有API,没有源码(这里再次鄙视一下)。刚才我们看过UnityPlayerNativeActivity的代码(虽然很短,但我觉得这个就是源码),知道UnityPlayerActivity,UnityPlayerProxyActivity都是它的子类,而且最终父类为NativeActivity。所以我们继承Unity提供的最外层的子类是最好的选择,我这里选择的是UnityPlayerActivity,因为名字最简单,觉得该封装的都应该封装好了。

public class MainActivity extends UnityPlayerActivity {

private Button topButton;
private Button bottomButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// 设置test为我们的根布局
setContentView(R.layout.test);

// 通过刚才的源码分析,知道mUnityPlayer为一个全局的引用变量,而且已经在父类中设置好了,所以直接拿来用就可以了
View playerView = mUnityPlayer.getView();
// 将Unity的视图添加到我们为其准备的父容器中
LinearLayout ll = (LinearLayout) findViewById(R.id.unityViewLyaout);
ll.addView(playerView);

// 上面的button设置监听器
topButton = (Button) findViewById(R.id.topButton);
topButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
//发送消息给Unity端,该函数第一个参数为接受消息的类对象,第二个该类对象用接受消息的方法,第三个参数为传递的消息
//所以下面的意思就为:调用Main Camera下面的Previous方法,传送的消息为空
UnityPlayer.UnitySendMessage("Main Camera","Previous","");
}
});

// 为下面的button设置监听器
bottomButton = (Button) findViewById(R.id.bottomBtn);
bottomButton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
//调用Main Camera下面的Next方法,传送的消息为空
UnityPlayer.UnitySendMessage("Main Camera","Next","");
}
});
}
}
最后看一下Android端的布局文件,布局很简单,上下各有一个button按钮,两个按钮中间是Unity的视图。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Button
android:id="@+id/topButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:text="PREVIOUS" />

<LinearLayout
android:id="@+id/unityViewLyaout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottomBtn"
android:layout_below="@+id/topButton"
android:orientation="horizontal" >
</LinearLayout>

<Button
android:id="@+id/bottomBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="NEXT" />

</RelativeLayout>
Android端的代码就介绍完了,很简单。唯一的难点就是UnityPlayerActivity和UnityPlayer的使用。

阅读全文

与unity3dandroidxml相关的资料

热点内容
emerson服务器怎么短接启动 浏览:559
工控编程人员工资 浏览:397
速成意大利语pdf 浏览:250
连续加减乘除法的算法 浏览:652
用mfc编程实现dda算法 浏览:41
linux命令打开应用 浏览:146
改造后的程序员 浏览:270
数控编程变量 浏览:785
江门哪里有plc编程系统 浏览:378
安卓手机如何下载外服b站 浏览:700
pythonetree库 浏览:759
数据插值算法 浏览:723
澳大利亚加密货币逃税 浏览:484
pdf文档如何压缩 浏览:329
java单例模式线程安全 浏览:646
特种pdf 浏览:160
加油什么app划算 浏览:715
开服要什么样的服务器 浏览:33
pdf文件太大怎么压缩 浏览:29
UK开票显示文件夹不存在 浏览:668