Unity-iOS和Unity互相传值-json格式

01 iOS把模型数据转成json,传值json数据给unity

import Foundation


class iOSDataModel: NSObject,Codable
{
    var key1 = "value1"
    var key2 = "value2"
    
    //转json字符串格式
    func toJsonString() -> String {
        let encoder = JSONEncoder()
        encoder.outputFormatting = .prettyPrinted
        let data = try! encoder.encode(self)
        return String(data: data, encoding: .utf8) ?? ""
    }
    
}

func showUnityView() {
        
        let iOSDataModelObject : iOSDataModel = iOSDataModel()
        
        let iOSToUnityString = iOSDataModelObject.toJsonString()
        
        print("iOSToUnityString = \(iOSToUnityString)")
        
        //iOS向Unity发送信息
        //Controller是unity启动Scene里的gameobject,可以是摄像机也可以是Canvas等。只要这个gameobject上挂上脚本,实现IOSToUnity
        //方法,就可以获得ios发过来的信息
        framework.sendMessageToGO(withName: "GameData", functionName: "IOSToUnity", message: iOSToUnityString)
        //显示unity画面
        framework.showUnityWindow()
    }

02 Unity接收到json数据,转换为模型数据

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class UnityDataModel
{
    public string key1 = "unity_value1";
    public string key2 = "unity_value2";
}

public void IOSToUnity(string str)
    {
        Debug.Log("Unity接收IOS信息 = " + str);
        //通过Newtonsoft.Json插件的JsonConvert.DeserializeObject方法,将json格式的string数据转换为model数据
        UnityDataModel unityDataModel = JsonConvert.DeserializeObject<UnityDataModel>(str);
        Debug.Log("unityDataModel.key1 = " + unityDataModel.key1);
        Debug.Log("unityDataModel.key2 = " + unityDataModel.key2);
    }

03 Unity把模型数据转换为json数据传给ios端

#if UNITY_IOS

            UnityDataModel unityDataModel = new UnityDataModel();
            //将model对象转换成json字符串
            string unityToiOSString = JsonConvert.SerializeObject(unityDataModel);
            //Unity发送信息给iOS
            UnitySendMessageToiOS(unityToiOSString);
            //unity程序关闭
            Application.Unload();
#endif

04 iOS端接收到json数据,转换为模型数据

    //unity的CSharp代码里调用Application.unload后会触发下面的方法
    func unityDidUnload(_ notification: Notification!) {
        print("ios获得的unity发来的信息 = \(String(describing: framework.myiOSGetMessage()))")
        if let getStringFromUnity = framework.myiOSGetMessage()
        {
            //使用SwiftyJSON框架把json格式的数据转换为model数据
            let dataFromUnity = JSON(getStringFromUnity)
            print("dataFromUnity = \(dataFromUnity)")
        }
 
        //点击Unity的Application.unload方法会进入到这个方法
        framework.unregisterFrameworkListener(self)
        //调用UnityViewController里的exitUnity方法
        delegate?.exitUnity()
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值