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使用。
更多参考:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决