Unity—Android通讯

来源:互联网 发布:神奈川县湘北赤木数据 编辑:程序博客网 时间:2024/05/21 19:35


-----------------------Unity 调用 android项目中的方法:--------------------------------------
--unity调android 本人目前发现android主activity必须继承UnityPlayerActivity
方式一:
--unity中:
private AndroidJavaClass ajc;
private AndroidJavaObject ajo;


void Awake(){
ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
ajo = ajc.GetStatic<AndroidJavaObject>("currentActivity");
}

void OnGUI(){
if(GUI.Button(new Rect(100,100,200,200),"按钮名")){
if(ajo != null){
ajo.Call("test"); --无参调用
ajo.Call("test","参数"); --有参调用
}
}
}
--Android中
public void test(){
Log.i("我被调用了");
}

public void test(String args){
Log.i("unity传来的参数是:"+args);
}
--------------------------------------------------------------------------------------------
方式二:
--unity中:
private AndroidJavaClass ajc;


void Awake(){
ajc = new AndroidJavaClass("com.sdk.api.sdkApi");--包名+类名
}

void OnGUI(){
if(GUI.Button(new Rect(100,100,200,200),"按钮名")){
if(ajc != null){
ajc.CallStatic("test"); --无参调用
ajc.CallStatic("test","参数"); --有参调用
}
}
}
--Android中
package com.sdk.api;
public class sdkApi {
public static void test(String s){
Log.i("unity传进来的参数是", s);
}

public static void test(){
Log.i("我被调用了");
}
}
------------------------Android 调用 unity项目中的方法:------------------------------------------------------------------------
--unity中:
void CallBack(String str){
Debug.Log("Unity中的方法被调用"+str);
}
--Android中:
import com.unity3d.player.UnityPlayer;

private static String gameObj = "Main Camera"; --脚本所在物体名

UnityPlayer.UnitySendMessage(gameObj,"CallBack","参数");

-----------------------------------------------------------------------------------------------------

Init() --sdk初始化
Logic()--sdk登录函数
LogOut()--sdk登出函数
Pay() --支付
GameCenter() --社区

流程:
--初始化--登录:{打开社区,支付,退出}

1.客户端-----(请求自己的订单号)------>游戏服务器
2.客户端-----(打开充值,附带参数(订单号))------>SDK服务器
3.SDK服务器----(支付成功)----->游戏服务器
4.游戏服务器------(支付成功 加金币)-------->游戏客户端

0 0