欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Unity調(diào)用Android的Activity

之前http://shuxiayeshou.blog.51cto.com/4452347/1932216

目前成都創(chuàng)新互聯(lián)已為上千余家的企業(yè)提供了網(wǎng)站建設、域名、虛擬空間、綿陽服務器托管、企業(yè)網(wǎng)站設計、黃石網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

寫了關于Unity與Android結合所遇到的問題及解決方法

總結一下,Unity做一個簡單的場景,AndroidStudio建一個簡單的項目,其中MainActivity是要繼承自

UnityPlayerActivity的,這樣Unity程序可以調(diào)用Android端MainActivity的方法了

那如果Android項目中還有一個NewActivity,我們要通過Unity把他打開咋辦呢

以下用的例子也是從網(wǎng)上找的,但是運行有問題,我又進行了修改才可以用。

首先,在AndroidMenifest.xml中要把這個Activity加進去

<?xml version="1.0"encoding="utf-8"?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
   package="com.reach.test">

   <application
       android:allowBackup="true"
       android:icon="@mipmap/ic_launcher"
       android:label="@string/app_name"
       android:roundIcon="@mipmap/ic_launcher_round"
       android:supportsRtl="true"
       android:theme="@style/AppTheme"
       >
       <activityandroid:name=".MainActivity"
           android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
           <intent-filter>
               <actionandroid:name="android.intent.action.MAIN"/>

               <categoryandroid:name="android.intent.category.LAUNCHER"/>
           </intent-filter>
           <meta-dataandroid:name="unityplayer.UnityActivity"android:value="true"/>
       </activity>
       <activity android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
           android:name=".OpenActivity1">
       </activity>
   </application>

</manifest>

如上黃字部分

既然有這個OpenActivity1,那必然是有一個Java Class,OpenActivity1,繼承Activity

與MainActivity在同一路徑下

而且在layout文件夾下也有對應的xml部局文件,我命名為activity_new.xml

OpenActivity1的代碼為:

package com.reach.test;
/**
 * Created by Administrator on 2017/6/5.
 */
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class OpenActivity1 extends Activity{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_new);
        TextView text=(TextView)this.findViewById(R.id.textView1);
        text.setText(this.getIntent().getStringExtra("name"));
        Button close=(Button)this.findViewById(R.id.button0);
        close.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                OpenActivity1.this.finish();
            }
        });
    }
}

其中TextView什么的都是加在其上的組件,先不用管,最簡單的就是onCreate方法前兩行語句

而我們用于與Unity交互的MainActivity代碼如下

package com.reach.test;
import android.app.Activity;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;
import android.content.Context;
import android.content.Intent;
public class MainActivity extends UnityPlayerActivity {
    Activity mActivity=null;
    Context mContext=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mActivity=this;
        mContext=this;
        StartActivity1("我是通過安卓中顯示的Activity");
    }
    public void StartActivity1(String name)
    {
        Intent intent=new Intent(mContext, OpenActivity1.class);
        intent.putExtra("name", name);
        mActivity.startActivity(intent);
    }
}

其中StartActivity1方法用于打開OpenActivity1,先是app運行時由于在onCreate中最后一行調(diào)用了,所以一開始會先看到OpenActivity1(先不糾結這個)

總之,此方法就是打開OpenActivity1的,而且會在Unity中調(diào)用

那回頭看Unity

我們建一個腳本,叫Test.cs,隨便掛在場景中的某個GameObject上就行

代碼如下:

using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
        if (Input.GetKeyDown(KeyCode.Escape) || Input.GetKeyDown(KeyCode.Home) || Input.GetKeyDown(KeyCode.Menu))
        {
            Application.Quit();
        }
}
    private void OnGUI()
    {
        if(GUILayout.Button("Open Activity", GUILayout.Height(80)))
        {
            AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
            jo.Call("StartActivity1", "Unity中調(diào)出android的方法了");
        }
    }
}

主要看OnGui方法

里面畫出了一個按鈕,上面顯示Open Activity

下面三行代碼規(guī)定了按鈕點擊執(zhí)行的操作,點擊這個按鈕就會調(diào)用Android中的StartActivity1方法

調(diào)用OpenActivity1

前兩行基本是固定用法

第三行則是調(diào)用Android項目中MainActivity里的StartActivity1方法,也就是打開OpenActivity1

這里需要注意一點,就是第二行

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

這里用的是jc.GetStatic方法,是沒有問題的

而原例用的是jc.Get方法(后面的參數(shù)什么的都一樣),實際在Unity場景中點擊按鈕是沒有反應的

還有一點,原例中OpenActivity1所打開的也是MainActivity的layout,即

setContentView(R.layout.activity_main);

這樣做,運行App就閃退。

于是我增加了activity_new,并讓OpenActivity1對應于此layout

所以改成了

setContentView(R.layout.activity_new);

就OK了

分享文章:Unity調(diào)用Android的Activity
URL分享:http://chinadenli.net/article32/jeeppc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設、全網(wǎng)營銷推廣、手機網(wǎng)站建設、網(wǎng)頁設計公司、定制網(wǎng)站、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設計公司
欧美大胆美女a级视频| 日本深夜福利视频在线| 日韩中文字幕在线不卡一区| 少妇毛片一区二区三区| 少妇视频一区二区三区| 91精品国产综合久久不卡| 午夜精品一区二区三区国产| 国产内射在线激情一区| 日本国产欧美精品视频| 亚洲一区二区亚洲日本| 欧美成人黄色一区二区三区| 国产麻豆一区二区三区在| 91麻豆精品欧美视频| 99久久精品免费精品国产| 亚洲欧洲成人精品香蕉网| 亚洲在线观看福利视频| 成年人视频日本大香蕉久久| 丰满人妻一二三区av| 少妇人妻中出中文字幕| 亚洲熟女国产熟女二区三区| 亚洲国产精品无遮挡羞羞| 国产精品成人又粗又长又爽| 国产精品亚洲欧美一区麻豆| 偷拍美女洗澡免费视频| 人人妻人人澡人人夜夜| 日韩精品人妻少妇一区二区| 日本深夜福利视频在线| 亚洲中文字幕有码在线观看| 日韩精品少妇人妻一区二区| 欧美日韩国产免费看黄片| 99视频精品免费视频| 91蜜臀精品一区二区三区| 亚洲精品成人福利在线| 国产欧美日本在线播放| 日韩三极片在线免费播放| 久久综合日韩精品免费观看| 国产日韩久久精品一区| 国产精品亚洲欧美一区麻豆| 好吊一区二区三区在线看| 免费观看一区二区三区黄片| 精品老司机视频在线观看|