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)
相关推荐
步、步、为营1 小时前
.NET 的IOC框架Unity代码示例
unity·游戏引擎·.net
Magnum Lehar2 小时前
wpf游戏引擎的script实现
游戏引擎·wpf
留待舞人归5 小时前
【Unity优化】提高热更新和打包速度
游戏·unity·游戏引擎·unity3d·优化
tealcwu5 小时前
【Unity踩坑】Unity 6在Mac平台编译运行时去除‘trial version‘
macos·unity·游戏引擎
为你写首诗ge7 小时前
【热更新知识】学习一 Lua语法学习
unity·lua
为你写首诗ge8 小时前
【热更新知识】学习三 XLua学习
unity·lua
程序员小刘9 小时前
如何开始HarmonyOS 5与Godot引擎融合开发?
华为·游戏引擎·godot·harmonyos
T.D.C17 小时前
【动画】Unity2D骨骼动画-Animation2D
unity·动画
AgilityBaby17 小时前
Unity实现不倒翁
笔记·unity·c#·游戏引擎
新中地GIS开发老师18 小时前
三维GIS开发cesium智慧地铁教程(4)城市白模加载与样式控制
学习·arcgis·智慧城市·webgl·gis开发·webgis·地理信息科学