android和unity3d
2017-07-21 13:57:53 ethuangfen 阅读数 144
unity3d在发布到android平台后,如果Resolution and Presenttation 中的设置和AndroidManifest.xml中的设不一样,则有可能会发生打开即闪退的现象。所以Resolution and Presenttation 中的设置要和AndroidManifest.xml中的设置一致,如:要保持一致。
2013-08-21 13:35:38 Henry_Wu001 阅读数 665

1)File

1.1)build and setting

选择 platform  android


1.2)player setting

设置Bundle Identifier:com.Company.

ProductName 中的Company 改掉



2)Inspector

add component

new script(c#,jscript, boo)


3)File

build and run

File --》build and setting --》build 仅生成apk


二)输入相关

http://docs.unity3d.com/Documentation/Manual/Input.html#AndroidInput

Adding new Input Axes

If you want to add new virtual axes go to the Edit->Project Settings->Input menu



resource:

http://holistic3d.com/?p=343

http://catlikecoding.com/unity/tutorials/runner/

http://wiki.etc.cmu.edu/unity3d/index.php/Mobile_device_input

http://www.revelopment.co.uk/tutorials/unitytutorials/73-howtorotateanobjectbytouch


2012-08-19 01:08:35 gongzibai 阅读数 1014
//纵向滑动条数值
var verticalValue : int = 0;


//横向滑动条数值
var horizontalValue : float = 0.0f;


function OnGUI ()
{
    //计算滑动进度
    verticalValue = GUI.VerticalSlider (Rect (25, 25, 30, 100), verticalValue, 100, 0);
    horizontalValue = GUI.HorizontalSlider(Rect (50, 25, 100, 30), horizontalValue, 0.0f, 100.0f);
    //将滑动进度显示在屏幕中
    GUI.Label(Rect(10, 150, Screen.width, 30), "纵向滑动条当前进度: " + verticalValue +"%");
    GUI.Label(Rect(10, 180, Screen.width, 30), "横向滑动条当前进度: " + horizontalValue +"%");
}

2012-11-30 18:55:18 ldghd 阅读数 1775

 

 

 

调用中国移动服务和android汉字问题

 

 

 

开发环境:

 

Eclipse3.4 adt12 jdk6 Androidsdk2.2

 

Unity3.4 windows7

 

测试设备:

 

HTC Desire HD

 

 

本文要涉及到的几个重点问题

 

1、 unity里怎么使用java插件

 

2、 unity android中怎么接受汉字

 

3、 unity调用Android应用程序的步骤

 

说明一点:这里我们要调用的手机应用程序是发信息的apk程序。

 

unity里怎么使用java插件

 

unity里面能使用插件这是unity人都知道的,相信大家都了解过iTween、iGUI、EZGUI等插件,但我们这里要说的是我们自定义的来供我们开发使用的插件。Unity支持基于C,C++或Objctive-C语言的插件。插件允许你的代码调用本地代码库。这使得Unity可以整合其他中间件库或者遗留的游戏代码。插件是Pro版独有特性。对于桌面系统的构建,插件仅仅能在独立版中运行。而构建网页版本时由于安全问题会被禁用。鉴于这里我们主要是研究unity访问android的应用程序,所以我将只提及java代码写出来的插件(编译后的class文件打成的jar包)。

 

具体关于插件的内容请参看官方手册:

 

http://unity3d.com/support/documentation/Manual/Plugins.html

 

E文差的同学可以看这里:

 

http://game.ceeger.com/Manual/Plugins.html

 

基础内容就说这么多,下面开始我们的具体内容:

 

首先在Eclipse中新建一个Android工程,这个没有什么说的。创建完项目之后要做的有两点:

 

1、将Unity中关于编译Android程序的jar包导入到我们的项目中,具体右击项目选择Properties:

这里unityclasses.jar就是unity 提供的编译Android游戏所需要的jar包,它位于%unity_home%\Editor\Data\PlaybackEngines\androidplayer\bin\classes.jar

2、我们新建的项目默认继承自Activity,这里将其修改为继承自UnityPlayerActivity,并去掉setContentView(R.layout.main);

[java] view plaincopy

public class SMSActivity extends UnityPlayerActivity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

}

}

在UnityPlayerActivity的onCreate()方法中已经做好了针对unity自己游戏的view布局,这里我们将onCreate继承过来不能将他们的布局给重写掉,否则我们的游戏画面就看不到在unity中做出的绚丽游戏场景了。

准备工作完成了,下面来添加我们的发信息逻辑的具体方法:

[java] view plaincopy

//我这里所需要的参数是对方的手机号码和要发送的短信息的内容,

//在unity中调用该方法时传入这两个参数

public static void SMSSend(String number, String content){

SmsManager sms = SmsManager.getDefault();

sms.sendTextMessage(number, null, content, null, null);

}

这里需要注意的一点就是调用发信息的功能需要在Androidmanifest.xml中声明权限:

 

[html] view plaincopy

<uses-permission android:name="android.permission.SEND_SMS"/>

好了,我们在Eclipse中要做的工作就到这里了,接下来是把我们写好的Java代码编译成我们需要的插件jar文件。

打开cmd,进入到我们的项目bin\classes文件夹下执行:

jar cvf com.qyxls.sms.jar com\命令

这时候在bin\classes文件夹下会发现一个com.qyxls.sms.jar。这就是我们需要的插件了。(我也有试着从Eclipse中导出jar文件,但不知道为什么最后插件不能使用)

接下来是创建我们的Unity工程了,同样的,步骤不说。创建完成之后在Project视图中新建一个Plugins文件夹(注意名字不要错,起初我漏掉了一个s都调试了好半天的),再在新创建好的Plugins文件夹下创建一个Android文件夹,然后在Android文件夹下新建一个bin文件夹用来存放我们上一步骤中做出来的jar插件。最后不要忘了把Android项目中的配置文件Androidmanifest.xml文件要考到该目录下,这里面有我们添加的权限信息,不然运行unity程序发信息会报安全错误的。由于该文件中还用到一些资源,所以一并把res文件夹也全部拷贝到Android文件夹下,这样之后的目录结构如下示:

这个样子和Android的项目结构又差不多了吧。

 

接下来我们的工作重心转移到unity的代码编写上来。首先就是做出我们的一个测试界面,这个不多说,直接上代码(这个是很简单很简单的了)。

 

代码:

[csharp] view plaincopy

using UnityEngine;

using System.Collections;

 

public class Scripts : MonoBehaviour {

public GUISkin mySkin;

 

private string txtNumber = "";

private string txtMessage = "";

 

void OnGUI()

{

GUI.skin = mySkin;

 

GUI.Label(new Rect(40, 40, 100, 50), "电话号码");

txtNumber = GUI.TextField (new Rect (140, 40, 160, 30), txtNumber);

 

GUI.Label(new Rect(40, 80, 100, 50), "短信内容");

txtMessage = GUI.TextArea (new Rect (140, 80, 200, 160), txtMessage);

 

if(GUI.Button(new Rect(240, 250, 100, 40), "发送"))

{

 

}

}

 

}

按照上面的步骤做完的同学会发现:我运行到手机上的应用怎么没有Label和Button上的汉字提示呢?这里就是我们要提到的另一个重点:在Android手机上显示汉字的问题。

 

首先要使用中文就得有个中文字体了,我这个是用的Android手机上系统的默认字体DroidSansFallback.ttf。找不到字体的同学也可以去我们计算机C盘下去找一个中文字体来用,但要注意找的字体一定要是ttf格式的,这个是unity支持的。

 

找到字体后的导入方式是和其它资源导入一样的,可以新建一个Resources文件夹来放我们的中文字体,导入之后选中字体,在属性面板中要设置为unicode。

 

点击Apply后要等待好长一段时间等待unity生成这样的一张巨大的字体贴图:

 

从贴图尺寸和大小也可以看出,中文字体是很费资源的,这里也建议大家万不得已要用到中文字的话,尽量把需要的字做成图片来用,以达到节省我们宝贵的手机资源的目的。

 

这样之后我们要告诉unity我们所使用的中文字体:新建一个GUISkin,并将字体设置为我们刚刚导入并设置好的中文字体即可。

 

这样我们的应用就能显示和输入中文了。

 

现在终于到了我们的核心:在unity中调用Java插件来实现我们需求的功能了。先来看一下核心代码:

 

[csharp] view plaincopy

private AndroidJavaClass ajc;

void Start ()

{

//通过unity提供的访问java插件的帮助类来找到我们的插件并创建对象

ajc = new AndroidJavaClass("com.qyxls.sms.SMSActivity");

}

void SendMsg(string number, string msg)

{

//调用插件中的SMSSend方法发送信息

ajc.CallStatic("SMSSend", new string[]{number, msg});

}

CallStatic这个函数需要两个参数,第一个是要调用的插件里的函数名,第二个是要调用的函数所需要的参数,要以数组的形式传入,参数可以是任意类型的。

 

其他的关于这个类的使用可以参照文档。

 

我们把SendMsg函数添加在发送按钮的响应事件里就可以了:

 

[csharp] view plaincopy

if(GUI.Button(new Rect(240, 250, 100, 40), "发送"))

{

if(txtNumber != "" && txtMessage != "")

{

SendMsg(txtNumber, txtMessage);

}

}

 

我们来看看效果,这里避免骚扰别人,并且再给我们的测试来一个反馈,我就麻烦一下一直为我们服务的中国移动了。

 

全段完整的代码如下:

 

[csharp] view plaincopy

using UnityEngine;

using System.Collections;

 

public class Scripts : MonoBehaviour {

public GUISkin mySkin;

 

private string txtNumber = "";

private string txtMessage = "";

 

private AndroidJavaClass ajc;

 

void Start ()

{

ajc = new AndroidJavaClass("com.qyxls.sms.SMSActivity");

}

 

void OnGUI()

{

GUI.skin = mySkin;

 

GUI.Label(new Rect(40, 40, 100, 50), "电话号码");

txtNumber = GUI.TextField (new Rect (140, 40, 160, 30), txtNumber);

 

GUI.Label(new Rect(40, 80, 100, 50), "短信内容");

txtMessage = GUI.TextArea (new Rect (140, 80, 200, 160), txtMessage);

 

if(GUI.Button(new Rect(240, 250, 100, 40), "发送"))

{

if(txtNumber != "" && txtMessage != "")

{

SendMsg(txtNumber, txtMessage);

}

}

}

 

void SendMsg(string number, string msg)

{

ajc.CallStatic("SMSSend", new string[]{number, msg});

}

 

}

到这里我们的工作就全部做完了,整个过程就是上面说明的这些了。

 

其实,要调用发信息的apk,还有一个更简单的方法的,就是利用Application类的OpenURL来调用:

 

Application.OpenURL("sms:");

 

这样会调出发短息的应用界面,而且里面还可以带参数的,但我们这里的重点是说如何使用Java插件的问题,那个方法就不做讨论了。

 

附上资源下载地址:

 

http://download.csdn.net/detail/qyxls/4158270

 

原文地址:http://blog.csdn.net/qyxls/article/details/7376891

声明: 本文由( liuxiaoni )原创编译,转载请保留链接: unity3d android 调用中国移动服务和android汉字问题

 

 

 

 

 

 

留言:

unity3d android 调用中国移动服务和android汉字问题:目前有9 条留言

  1. Generally I do not learn article on blogs, however I would like to say that this write-up very compelled me to try and do so! Your writing taste has been amazed me. Thanks, quite great article.
    [url=http://www.superclassicboots.com/ugg-5251-classic-short-c-11.html]UGG Classic Short[/url]
    UGG Classic Short

    2012-11-19 下午 10:40 [回复]
  2. Some truly great information, Glad I noticed this. “The world is the sum-total of our vital possibilities.” by Jose Ortega y Gasset.
    ugg bailey button

    2012-11-19 下午 10:41 [回复]
  3. Hey, you used to write fantastic, but the last few posts have been kinda boring?I miss your tremendous writings. Past few posts are just a little out of track! come on!
    ugg classic short

    2012-11-19 下午 10:41 [回复]
  4. Hello very nice site!! Man .. Excellent .. Wonderful .. I will bookmark your site and take the feeds also?I am|I’m} happy to seek out numerous useful information right here in the post, we need work out more techniques in this regard, thank you for sharing.
    How To Lose Stomach Fat Fast

    2012-11-20 上午 11:19 [回复]
  5. I believe this website contains some very fantastic information for everyone :D . “Experience is not what happens to you it’s what you do with what happens to you.” by Aldous Huxley.
    How To Lose Stomach Fat Fast

    2012-11-20 上午 11:19 [回复]
  6. Appreciate it for helping out, good info .
    Best Way To Lose Stomach Fat

    2012-11-20 上午 11:20 [回复]
  7. Very interesting details you have observed , appreciate it for posting . “There is nothing in a caterpillar that tells you it’s going to be a butterfly.” by Richard Buckminster Fuller.
    Ways To Lose Stomach Fat

    2012-11-20 上午 11:20 [回复]
  8. I have been absent for a while, but now I remember why I used to love this website. Thank you, I will try and check back more often. How frequently you update your site?
    Best Way To Lose Stomach Fat

    2012-11-20 上午 11:20 [回复]
  9. Very interesting info !Perfect just what I was searching for! “If you could choose one characteristic that would get you through life, choose a sense of humor.” by Jennifer Jones.
    Lose Stomach Fat Fast

    2012-11-20 上午 11:21 [回复]

 

 

 

 

 

 

2015-02-13 18:26:52 u010893023 阅读数 467

参考自unity官方文档,点击传送

方法1

首先在unity的assets目录下创建Plugins目录结构,具体如图


bin目录里面存放已经打包好了的xxx.jar包(这里也可以在Android目录下创建libs目录 存放打包好了的xxx.jar),关于如何把java代码打成jar包请看

当你把项目导出成android项目后如图:


unity中bin目录中的jar包已经被拷贝到项目中,如果你的jar涉及到 添加权限添加服务等 修改AndroidManifest.xml后复制到如下路径:


当你用unity再次打包android项目时 AdnroidManifest.xml就会覆盖默认的xml

下一步调用jni,unity已经帮你封装好了jni,只管自动化调用


android与Unity3d交互

阅读数 28

Unity3D与Android间的相互调用将Unity3D集成到Android项目中有好几种方式,这里说的是将Unity3D以module的方式集成到androidstudio开发的项目中。Unity3D与Android间的交互基本套路就是在android中调起Unity3D,Unity3D展示出效果后,Unity3D再调用android中协定好的方...

博文 来自: weixin_33971977

Unity3D在android下调试

阅读数 8991

一、工具准备1.JDK——由于android是基于Java平台开发的,jdk是必须要安装的。下载地址:http://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe2.AndroidSDK——这个就不多说了,要开发android

博文 来自: menuconfig

Unity3D Android 开发环境配置

阅读数 513

1.安装JavaJDK。(注意:Unity打包64位JDK。)2.配置安装jdk环境。1、在【我的电脑】上按右键,选择【属性】2、选择【系统属性】面板上面的【高级】选项,然后选择下面的【环境变量】3、在底部的【系统变量】列表中,查找变量名为“JAVA_HOME”的系统变量,如果没有,则点击【新建】按钮,在弹出的对话框里,变量名填入“JAVA_HOME”,在变量值里面填入jdk

博文 来自: ybhjx

Unity3D在android下调试

阅读数 1873

一、工具准备1.JDK——由于android是基于Java平台开发的,jdk是必须要安装的。下载地址:http://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe2.AndroidSDK——这个就不多说了,要开发and

博文 来自: huanran_li

Android Unity3D基础

阅读数 914

这是羽化第二篇博客,目前依旧菜鸟一只。最近在玩纷争2,回想小学打FF8的时候真是感慨万千,每当Eyesonme的旋律响起的时候,心里面就充满了回忆,也许时间一直在流逝,好玩的游戏会越来越多,人也慢慢在变,但有些东西在你心中永远无法取代。羽化是个忠实玩家,能做游戏开发是实现梦想第一步,希望大家也不要忘记自己的梦想。闲话扯了很多,好了开始进入正题,这次主要是给大家认识下Unity3D,具体怎么在A

博文 来自: IT___LaDeng
没有更多推荐了,返回首页