zoukankan      html  css  js  c++  java
  • Unity调用安卓Android的Toast

    需求:在游戏中弹窗消息,调起安卓的Toast

    项目中需要做Unity和安卓交互时,经常需要通过安卓Toast来做简单的输出,以便于测试。

    方法一:Unity中,C#主导

    // Unity调用安卓的土司
    public static void MakeToast(string info)
    {
        AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast");
        currentActivity.Call("runOnUiThread", new AndroidJavaRunnable(() => {
            Toast.CallStatic<AndroidJavaObject>("makeText", currentActivity, info, Toast.GetStatic<int>("LENGTH_LONG")).Call("show");
        }));
        
        /*
        // 匿名方法中第二个参数是安卓上下文对象,除了用currentActivity,还可用安卓中的GetApplicationContext()获得上下文。
        AndroidJavaObject context = currentActivity.Call<AndroidJavaObject>("getApplicationContext");
        */
    }

    这段代码也是Unity调用安卓(C#主导)的经典例子。项目中可用同样方法来寻找包,找到类成员,调用函数并传参。

    方法二:Android Studio中,Java主导

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.Toast;
    
    public class MainActivity extends UnityPlayerActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //setContentView(R.layout.activity_main);
        }
    
        // 该方法由Unity调用
        public void makeToast(final String msg){
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG);
                }
            });
        }
    }

    该方法需要将安卓项目导出aar包,作为插件导入到Unity的Assets目录中,来给Unity使用。


    更多参考:

  • 相关阅读:
    在虚拟机VM中安装的Ubuntu上安装和配置Hadoop
    初识Hadoop
    Hold住:坚持的智慧
    《人生若只如初见》读后感
    EAS部署:linux 下安装EAS后启动不了服务
    修改Tomcat默认端口
    IntelliJ IDEA工具使用总结
    Mac OSX 包管理工具
    Mac 下安装、卸载Java 7
    MySQL快速命令
  • 原文地址:https://www.cnblogs.com/guxin/p/unity-call-android-toast.html
Copyright © 2011-2022 走看看