【Unity】Unity项目转抖音小游戏(四)一些常用方法

1.初始化
SDK会在Unity启动前就初始化好,但是又有Init的接口,所以这里通过
StarkSDK.s_ContainerEnv 判断有没有初始化,没有的话就手动初始化

public override void Init(string code, Action callback)
        {
            Debug.Log("初始化抖音SDK");
            if (StarkSDK.s_ContainerEnv == null)
            {
                Debug.LogError("没有初始化完毕,设置回调");
                //base.Init(code, callback);
                //设置回调
                StarkSDK.API.SetContainerInitCallback((env) =>
                {
                    Debug.Log("抖音sdk init finish");
                    //callback?.Invoke();
                    Login(callback);
                });

                StarkSDK.Init();
            }
            else
            {
               
                Debug.Log("已经初始化了,直接回调");
                Login(callback);
                //callback?.Invoke();
            }

        }

2.登录
登录后可以获得一系列玩家数据,anonymousCode可以作为玩家的唯一ID
登录之后云函数才能获得对应的玩家OpenID

public void Login(Action action)
        {

                 StarkSDK.API.GetAccountManager().Login((code, anonymousCode, isLogin) =>
                 {
                     Debug.Log($"玩家已经登录:{code}, {anonymousCode}, {isLogin}");
                     isLogined = isLogin;
                     unionID = anonymousCode;
                     action?.Invoke();
                 }, (errormsg) =>
                 {
                     Debug.LogError($"玩家登录失败:{errormsg},用户无法使用存档");
                     isLogined = false;
                     unionID = SystemInfo.deviceUniqueIdentifier;
                     action?.Invoke();
                 }, false);
             
             
        }

3.设置剪贴板

        public override void Copy2ClipBoard(string val)
        {
            //base.Copy2ClipBoard(val);
            StarkSDK.API.GetStarkClipboard().SetClipboardData(val, (success, str) =>
            {
                if (!success) Debug.LogError("复制到剪贴版失败");
            });
        }

4.设置前后台切换监听

        public override void SetFocusListener(Action<bool> onFocus)
        {
            //base.SetFocusListener(onFocus);
            StarkSDK.API.GetStarkAppLifeCycle().OnShowWithDict = (param) =>
            {
                onFocus(true);
            };

            StarkSDK.API.GetStarkAppLifeCycle().OnHide = () =>
            {
                onFocus(false);
            };
        }

5.获取玩家信息

        public override void GetPlayerName(Action<string> callback)
        {
            base.GetPlayerName(callback);
            StarkSDK.API.GetAccountManager().GetScUserInfo((ref ScUserInfo user) =>
            {
                Debug.Log($"获取到玩家名:{user.nickName}");
                SystemHelper.PlayerInfo.GetPlayer().SetPlayerName(user.nickName);

            }, (error) =>
             {
                 Debug.Log($"获取玩家名字失败:{error}");
             });
        }

6.震动
WebGL下,传入参数大于400的话就是长震动,否则就是短震动

        static long[] virbrateLongParam = new long[] { 9999 };
        public override void VirbrateLong()
        {
            //base.VirbrateLong();
            StarkSDK.API.Vibrate(virbrateLongParam);
        }

        static long[] virbrateShortParam = new long[] { 10 };
        public override void VirbrateShort()
        {
            //base.VirbrateLong();
            StarkSDK.API.Vibrate(virbrateShortParam);
        }

7.云函数调用
云函数相关可以详见:【Unity】Unity项目转抖音小游戏(二)云数据库和云函数

        public override void CallCloudFunction(string functionName, string json, Action<string> success, Action<string> fail)
        {
            StarkSDK.API.GetStarkDouyinCloudManager().CallContainer(
                DYCloudID,
                DYServerID,
                functionName,
                new StarkDouyinCloud.Options()
                {
                    Method = "POST",
                    Data = json
                },
               (res) =>
               {
                   success?.Invoke(res.Data);
                   Debug.Log($"云函数{functionName}成功:{res.Data}");
               },
               (res) =>
               {
                   fail?.Invoke(res..ErrMsg);
                   Debug.LogError($"云函数:{res.StatusCode}失败,{res.ErrMsg}");
               }); ;
        }
### 使用 Unity 开发小游戏教程 #### 初始化项目配置 为了使Unity项目能够适配小游戏环境,需先完成基础配置工作。这包括但不限于创建新的Unity工程并调整其构建目标至适合WebGL或特定于小游戏的设定。由于小游戏运行在其特有的环境中,因此部分标准API可能无法直接使用。 #### 广告ID申请流程 对于希望集成广告服务的游戏而言,在开发前应按照官方指南完成广告ID的申请过程[^2]。此步骤确保后续可以合法地调用相关接口来展示广告内容给玩家,并借此获得收益分成的机会。 #### 文件存储机制概述 考虑到小游戏的独特性质——即它们是在宿主应用内执行而非独立安装的应用程序——所以传统意义上的持久化方案并不适用于此场景下。针对这种情况设计了一套专门用于处理这类轻量级应用程序的数据保存策略[^1]。具体来说就是利用浏览器缓存或是更高级别的KeyValue形式来进行简单信息记录;而对于较为复杂的需求,则可能会涉及到云端同步服务的支持。 #### SDK初始化示例代码 当准备就绪之后就可以着手编写实际逻辑了。下面给出一段关于如何初始化字节跳动提供的广告SDK的例子: ```csharp using UnityEngine; public class AdInitializer : MonoBehaviour { void Start() { // 创建用户配置对象实例 var userConfig = new ABUUserConfig(); // 启用日志功能以便调试期间查看输出 userConfig.logEnable = true; // 调用setupMSDK函数完成初始化操作 ABUAdSDK.setupMSDK(ABUAdPositionId.APP_ID, "msdk demo", userConfig); } } ``` 这段脚本展示了怎样通过`ABUUserConfig`类设置必要的参数选项,并最终触发`ABUAdSDK.setupMSDK()`方法启动整个框架的工作状态[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值