Unity WebGL发布H5接入360渠道网页SDK

涉及到的知识点包含:

1、Lua -> C# -> JavaScript 通讯链 jslib实现

2、JavaScript -> C# -> Lua 通讯链 unityInstance.SendMessage();实现

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ChannelMessage : MonoBehaviour
{
    public delegate void LuaDelegate(string msg);
    // 添加一个字典来存储多个回调
    private static Dictionary<string, LuaDelegate> luaCallbacks = new Dictionary<string, LuaDelegate>();
    
    // 注册回调方法
    public static void RegisterCallback(string eventName, LuaDelegate callback)
    {
        luaCallbacks[eventName] = callback;
    }
    
    // 触发回调
    private void TriggerCallback(string eventName, string message)
    {
        if (luaCallbacks.ContainsKey(eventName) && luaCallbacks[eventName] != null)
        {
            luaCallbacks[eventName](message);
        }
    }
    // Start is called before the first frame update
    void Start()
    {
        Object.DontDestroyOnLoad(gameObject);
    }
    // js回调登录结果
    public void OnLogin(string iaaq)
    {
        Debugger.Log("OnLogin iaaq " + iaaq);
        Constant.IAAQ = iaaq;
    }
    // 
    /// <summary>
    /// js回调支付结果
    /// </summary>
    /// <param name="result">success支付成功,其余失败</param>
    public void OnPaySuccess(string result)
    {
        Debugger.Log("OnPaySuccess " + result);
        TriggerCallback("pay", result);  // 触发支付回调
    }
    // js回调支付结果
    public void OnPayFail(string result)
    {
        Debugger.Log("OnPayFail " + result );
        TriggerCallback("pay", result);  // 触发支付回调
    }
    /// <summary>
    /// js回调广告播放结果
    /// </summary>
    /// <param name="result">inited:初始化完成 success:播完广告成功,其余失败</param>
    public void OnAdPlay(string result)
    {
        Debugger.Log("OnAdPlay " + result);
        TriggerCallback("ad", result);   // 触发广告回调
    }
}
Lua 复制代码
-- 在Lua中注册回调
function OnPayCallback(msg)
    framework.Logger.log("支付回调: " .. msg)
    -- 处理支付结果
end

function OnAdCallback(msg)
    framework.Logger.log("广告回调: " .. msg)
    -- 处理广告结果
   
end
CS.ChannelMessage.RegisterCallback("pay", OnPayCallback)
CS.ChannelMessage.RegisterCallback("ad", OnAdCallback)
相关推荐
归真仙人13 小时前
【UE】Lightmass可执行文件已经过时
ue5·游戏引擎·ue4·虚幻·unreal engine
scott.cgi18 小时前
Unity直接编译Java文件作为插件,导致失败的两个打包设置
java·unity·unity调用java·unity的java文件·unity的android插件·unity调用android·unity加载java代码
WiChP1 天前
【V0.1B9】从零开始的2D游戏引擎开发之路
c++·游戏引擎
游乐码1 天前
Unity坦克案例疑难记录(一)
unity·单例模式
小贺儿开发1 天前
Unity3D 编辑器对象锁定工具
unity·编辑器·编程·工具·对象·互动·拓展
AI前沿资讯2 天前
一站式 AI 3D 创作首选:V2Fun—— 直连 Unity + 多人动捕双核心,重塑轻量化生产管线
人工智能·3d·unity
winlife_2 天前
Unity 域重载会清空一切:Editor 工具如何让状态在重载后续命
unity·游戏引擎
深度森林2 天前
无人机“路径规划”高价值专利案例:基于抗干扰粒子群优化的无人机路径规划方法
游戏引擎·cocos2d
小贺儿开发2 天前
Unity3D 串口通信上位机联调系统
unity·串口·协议·数据·通信·传输·互动
tedcloud1232 天前
ppt-master部署教程:快速搭建智能演示文稿系统
服务器·人工智能·系统架构·游戏引擎·powerpoint