查看: 2819|回复: 8
打印 上一主题 下一主题

[经验分享] unity调用android的方法

[复制链接]

1240

主题

11

听众

6720

积分

版主

Rank: 7Rank: 7Rank: 7

纳金币
5474
精华
6

荣誉管理 论坛元老 突出贡献 优秀版主

跳转到指定楼层
楼主
发表于 2017-8-9 11:21:58 |只看该作者 |倒序浏览
unity调用android的方法
我们需要在运行起来Unity引擎之后,调用Java类中的方法获取怪兽的姓名,就需要Uniy调用Android的方法。
unity调用java方法一共有四种形式,分别是:
        1.没有返回值的普通方法

AndroidJavaObject jo = new AndroidJavaObject("android.content.res.Configuration");
jo.Call("setToDefaults");
        2.带有返回值的普通方法
AndroidJavaObject jo = new AndroidJavaObject("java.lang.String", "some string");

int hash = jo.Call<int>("hashCode");
        3.没有返回值的静态方法
AndroidJavaObject jo = new AndroidJavaObject("android.os.Binder");

jo.CallStatic("flushPendingCommands");
        4.带有返回值的静态方法
AndroidJavaObject jo = new AndroidJavaObject("java.lang.String");

string valueString = jo.CallStatic<string>("valueOf", 42.0);
        我们往游戏对象上绑定一些操作–Operate.cs :
using UnityEngine;

using System.Collections;

public class Operate : MonoBehaviour
{

        public Transform target;

        public UILabel label;

        public bool flag = true;

        /// <summary>
        
/// 定义旋转速度
        
/// </summary>
        
public float RotateSpeed=45;

        
// Use this for in  itialization
        
void Start ()
        {

                //Debug.Log("hello");
               
this.name = "Manager";
GetData ();
        
}
        
/// <summary>

        /// 通过调用android中的方法获取name,并为label赋值
        
/// </summary>
        
void GetData()
        {

                AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");

                AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject> ("currentActivity");  

                string name = jo.Call <string>("getName", "成功调用android方法");

                label.text = name;
        
}


        // Update is called once per frame
        
void Update ()
        {

                //target.Rotate (Vector3.up * Time.deltaTime * RotateSpeed);
        
}
        
void OnClick()
        {

                Screen.orientation = ScreenOrientation.Landscape;

                if (flag)
                {

                        target.localScale = new Vector3 (0.5f, 0.5f, 0.5f);

                        flag = false;

                        //label.text = "123456";

                }
                else
                {

                        target.localScale = new Vector3 (0.75f, 0.75f, 0.75f);

                        flag = true;

                        //label.text = "000000";

                }

        }

        /// <summary>
        
/// 顶掉之前的scene
        
/// </summary>
        
void Unload()
        {

                Application.LoadLevel (1);

                AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");

                AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject> ("currentActivity");  

                jo.Call ("makePauseUnity");
        
}

        
/// <summary>

        /// 放大
        
/// </summary>
        
void ZoomIn()
        {

                target.localScale = new Vector3 (0.75f, 0.75f, 0.75f);
        
}


        /// <summary>

        /// 缩小

        /// </summary>
        
void ZoomOut()
        {

                target.localScale = new Vector3 (0.5f, 0.5f, 0.5f);

        }

}

代码和场景编写好之后,就可以使用unity到处apk文件运行了。不过我们需要在eclipse中进行二次开发,所以需要到处android工程。
在导出的时候,可以选择导出”Google Android Project”。

在导出android工程或apk之前,需要在”Player Settings”进行一些配置:

assets文件下面是unity的一些资源文件,包括场景和渲染的文件。
libs下面当然就是jar包和so文件了。
src下面包含三个java类。建议使用UnityPlayerActivity.java
打开UnityPlayerActivity之后,会发现里面有一个对象时UnityPlayer的实例,我们做android中嵌套U3D场景的时候,就是把这个实例当成一个view添加到我们的布局中。
你已经有android工程了,此时只需要把assets的文件和libs的包拷贝到你的项目中去,在把需要配置的类在AndroidManifest.xml中配置一下。
没有工程,那么只需要把unity导出的工程导入你的IDE中即可。
看一下MainActivity的布局:
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:background="#E0EEE0"

        android:gravity="center_horizontal"

        androidrientation="vertical" >


        <!-- 3D视图区域 -->


        <LinearLayout

                android:id="@+id/u3d_layout"

                android:layout_width="match_parent"

                android:layout_height="300dp"

                android:background="#a6a9af"

                androidrientation="vertical" >

        </LinearLayout>


        <!-- 放大 -->


        <Button

                android:id="@+id/zoom_in_btn"

                android:layout_width="200dp"

                android:layout_height="wrap_content"

                android:layout_marginTop="20dp"

                android:padding="10dp"

                android:text="放大" />


        <!-- 缩小 -->


        <Button

                android:id="@+id/zoom_out_btn"

                android:layout_width="200dp"

                android:layout_height="wrap_content"

                android:layout_marginTop="20dp"

                android:padding="10dp"

                android:text="缩小" />


        <!-- 全屏 -->


        <Button

                android:id="@+id/u3d_fullscreen_btn"

                android:layout_width="200dp"

                android:layout_height="wrap_content"

                android:layout_marginTop="20dp"

                android:padding="10dp"

                android:text="全屏" />


</LinearLayout>

游客,如果您要查看本帖隐藏内容请回复
游客,如果您要查看本帖隐藏内容请回复




分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

dnsao    

0

主题

3

听众

1146

积分

助理设计师

Rank: 4

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2017-8-19 10:57:54 |只看该作者
感谢分享
回复

使用道具 举报

0

主题

7

听众

1548

积分

助理设计师

Rank: 4

纳金币
45
精华
0
板凳
发表于 2017-8-20 23:03:37 |只看该作者
看看 谢分享
回复

使用道具 举报

1

主题

6

听众

8524

积分

高级设计师

Rank: 6Rank: 6

纳金币
2
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2017-8-21 10:22:54 |只看该作者
unity调用android的方法
回复

使用道具 举报

0

主题

2

听众

1752

积分

助理设计师

Rank: 4

纳金币
19
精华
0
5#
发表于 2017-9-18 11:52:45 |只看该作者
unity调用android的方法
回复

使用道具 举报

2

主题

8

听众

787

积分

初级设计师

Rank: 3Rank: 3

纳金币
10
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

6#
发表于 2017-9-19 15:22:52 |只看该作者
谢谢奉献
回复

使用道具 举报

Kasug    

0

主题

2

听众

962

积分

初级设计师

Rank: 3Rank: 3

纳金币
151
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

7#
发表于 2018-1-11 11:15:21 |只看该作者
感谢分享
回复

使用道具 举报

0

主题

2

听众

440

积分

设计实习生

Rank: 2

纳金币
10
精华
0
8#
发表于 2018-2-8 12:46:04 |只看该作者
学习一下
回复

使用道具 举报

0

主题

2

听众

978

积分

初级设计师

Rank: 3Rank: 3

纳金币
1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

9#
发表于 2018-2-8 14:10:55 |只看该作者
2222222222222222222222
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-18 07:44 , Processed in 0.120544 second(s), 34 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部