当前位置: 首页 > news >正文

iis网站没有属性宁波建设工程信息网

iis网站没有属性,宁波建设工程信息网,阿里云centos7 搭建wordpress,网站项目报价单模板本文适合的情况如下#xff1a; Unity客户端人员 与 IOS端研发人员合作的情况 目录 From U3D to iOS 实现原理 1.unity工程目录创建2个文件 NativeCallProxy.m、NativeCallProxy.h 并且放到Unity工程目录Plugins/iOS/unity_ios_plus目录下 2.创建C#调用脚本 定义对应.mm脚…本文适合的情况如下 Unity客户端人员 与 IOS端研发人员合作的情况 目录 From U3D to iOS 实现原理 1.unity工程目录创建2个文件 NativeCallProxy.m、NativeCallProxy.h 并且放到Unity工程目录Plugins/iOS/unity_ios_plus目录下 2.创建C#调用脚本 定义对应.mm脚本的 调用接口调用也如下 From U3D to iOS 实现原理 由于U3D无法直接调用Objc或者Swift语言声明的接口幸好U3D的主要语言是C#因此可以利用C#的特性来访问C语言所定义的接口然后再通过C接口再调用ObjC的代码对于Swift代码则还需要使用OC桥接。 下面演示利用C#的特性来访问C语言所定义的接口然后再通过C接口再调用ObjC的代码 1.unity工程目录创建2个文件 NativeCallProxy.m、NativeCallProxy.h 并且放到Unity工程目录Plugins/iOS/unity_ios_plus目录下 NativeCallProxy.m代码内容 #import Foundation/Foundation.h #import NativeCallProxy.h//固定写法 implementation FrameworkLibAPIidNativeCallsProtocol api NULL; (void) registerAPIforNativeCalls:(idNativeCallsProtocol) aApi {api aApi; } //固定写法结束 end//固定写法 extern C { //void showHostMainWindow(const char* color) { return [api showHostMainWindow:[NSString stringWithUTF8String:color]]; };//返回字符串的1个函数 const char* unityCallGetInitData(){NSString* str[api unityCallGetInitData];char* ret nullptr; // ret (char*)malloc([str length]1); // memcpy(ret, [str UTF8String], ([str length])1);ret (char*)malloc([str length]);memcpy(ret, [str UTF8String], [str length]);return ret; };//无返回的1个函数 void unityCallJumpLogin(){return [api unityCallJumpLogin]; };//无返回、传入字符串的函数 void unityCallJumpToRecharge(const char* gameStatus,const char* receOBName,const char* methodName){return [api unityCallJumpToRecharge:[NSString stringWithUTF8String:gameStatus] :[NSString stringWithUTF8String:receOBName] :[NSString stringWithUTF8String:methodName]];};void unityCallCloseVC(){return [api unityCallCloseVC]; };//隱私按鈕 void onPrivacyButton(){return [api onPrivacyButton]; }//儲值按鈕 const char* storedValue(){NSString* str[api storedValue];char* ret nullptr; ret (char*)malloc([str length]);memcpy(ret, [str UTF8String], [str length]);return ret; }//切换游戏 const char* ChangeGame(){NSString* str[api ChangeGame];char* ret nullptr;ret (char*)malloc([str length]);memcpy(ret, [str UTF8String], [str length]);return ret;}}//extern C { // //} NativeCallProxy.h代码内容 // [!] important set UnityFramework in Target Membership for this file // [!] and set Public header visibility//固定写法 #import Foundation/Foundation.h // NativeCallsProtocol defines protocol with methods you want to be called from managed protocol NativeCallsProtocol required// other methods 自定义方法 /**获取初始json数据:baseUrl、mac_id、gameType、jwt 【对应mm文件的自定义函数名】*/ -(NSString*)unityCallGetInitData; /**重新登录 【对应mm文件的自定义函数名的接口】*/ -(void)unityCallJumpLogin; /**跳充值页前保存数据充值页返回后把保存的数据发信息给unity 【对应mm文件的自定义函数名的接口】*/ -(void)unityCallJumpToRecharge:(NSString*) gameStatus :(NSString*) receOBName :(NSString*) methodName;//ios——关闭vc 【对应mm文件的自定义函数名的接口】 -(void)unityCallCloseVC;//隱私按鈕 【对应mm文件的自定义函数名的接口】 -(void)onPrivacyButton;//储值按钮 【对应mm文件的自定义函数名的接口】 -(NSString*)storedValue;//ch Game 【对应mm文件的自定义函数名的接口】 -(NSString*)ChangeGame;//自定义方法结束 end//以下为固定写法 __attribute__ ((visibility(default))) interface FrameworkLibAPI : NSObject // call it any time after UnityFrameworkLoad to set object implementing NativeCallsProtocol methods (void) registerAPIforNativeCalls:(idNativeCallsProtocol) aApi;end 勾选iOS平台 2.创建C#调用脚本 定义对应.mm脚本的 调用接口调用也如下 using System; using System.Collections; using System.Collections.Generic; using LitJson; using UnityEngine; using UnityEngine.UI; using System.Runtime.InteropServices; using UnityEngine.SceneManagement; //引入 这个命名空间让unity可以使用 Assets/Plugins/iOS 或 Android/ 这里的dll文件/// summary /// 呼叫安卓或 IOS 工具类 /// /summary public class CallAndroidOrIos :MonoBehaviour {public static CallAndroidOrIos instance;private void Awake(){instance this;}#region 关于IOS的操作/// summary/// 模拟 安卓或iOS ,DLL的类/// /summarypublic class NativeAPI{#if UNITY_EDITOR || UNITY_ANDROID/// summary/// 获取 IOS返回的 json数据 baseUrl、mac_id、gameType、jwt/// /summary public static string unityCallGetInitData(){return ;}/// summary/// 让IOS 呼叫重新登录/// /summary/// returns/returnspublic static void unityCallJumpLogin(){Debug.Log(呼叫 ios重新登录);}/// summary/// IOS充值的返回 /// /summary public static void unityCallJumpToRecharge(string gameStatus, stringreceOBName, string methodName){}/// summary/// 关闭当前 IOS活动页/// /summarypublic static void unityCallCloseVC(){}/// summary/// 隐私按钮/// /summarypublic static void onPrivacyButton(){}/// summary/// 储值被点击/// /summarypublic static string storedValue(){return ;}/// summary/// 切换G/// /summary/// returns/returnspublic static string ChangeGame(){return ;}#elif UNITY_IOS || UNITY_TVOS //定义对应.mm脚本的 调用接口-----------[DllImport(__Internal)]public static extern string unityCallGetInitData();[DllImport(__Internal)]public static extern void unityCallJumpLogin();[DllImport(__Internal)]public static extern void unityCallJumpToRecharge(string gameStatus, stringreceOBName, string methodName);[DllImport(__Internal)]public static extern void unityCallCloseVC();[DllImport(__Internal)]public static extern void onPrivacyButton();[DllImport(__Internal)]public static extern string storedValue();[DllImport(__Internal)]public static extern string ChangeGame(); #endif}#endregion/// summary/// 被安卓调用过来的 统一函数名称 Public void Give_AnCall(string value)/// /summarypublic const string Give_AnCall Give_AnCall;/// summary/// 当处于同一个物体的时候用来区分函数名称/// /summarypublic const string Give_AnCall2 Give_AnCall2;/// summary/// 关闭app当前页面/// /summarypublic void unityCallCloseActivity(){if (Application.platform RuntimePlatform.IPhonePlayer|| Application.platformRuntimePlatform.OSXEditor){Debug.Log(IOS 关闭当前Activity----------);NativeAPI.unityCallCloseVC();//关闭Ios 活动页}else{Debug.Log(关闭当前Activity----------);AndroidJavaClass activityClass new AndroidJavaClass(com.unity3d.player.UnityPlayer);//只能调用静态AndroidJavaObject s_ActivityContext activityClass.GetStaticAndroidJavaObject(currentActivity);//可以调用非静态s_ActivityContext.Call(unityCallCloseActivity);//关闭页面 }}/// summary/// 获取 玩家进入哪个游戏类型 [ 0是推币机 1是连连看 -1是未知类型]/// 并且获取到 baseURL mac_id jwt gameType/// /summary public IEnumerator unityCallGetInitData(ActionJsonData,string callBack){int Time 0;string strData;string Tips;try{if (Application.platform RuntimePlatform.IPhonePlayer){strData NativeAPI.unityCallGetInitData();}else{AndroidJavaClass activityClass;AndroidJavaObject s_ActivityContext;activityClass new AndroidJavaClass(com.unity3d.player.UnityPlayer); //只能调用静态s_ActivityContext activityClass.GetStaticAndroidJavaObject(currentActivity); //可以调用非静态strData s_ActivityContext.Callstring(unityCallGetInitData);}}catch (Exception e){Tips Error: e;if (callBack ! null){callBack(null, Tips);}//跳出协程的执行yield break;}while (string.IsNullOrEmpty(strData))//等待回调{yield return new WaitForSeconds(1);Time;if (Time 10){break; //跳出循环}}//还是没有 收到安卓返回数据 if (string.IsNullOrEmpty(strData)){if (callBack!null){Tips Get the Android Or IOS data timeout;//获取安卓数据超时callBack(null, Tips);} }else{JsonData jsonData JsonMapper.ToObject(strData);if (callBack!null){callBack(jsonData, successful); }}}/// summary/// 跳转到 充值界面 (1.当前游戏场景名称 2.物体名称 3.安卓返回参数到 哪个函数接收) /// /summary public void unityCallJumpToRecharge(string ScreenName, string receOBName, string methodName){if (Application.platform RuntimePlatform.IPhonePlayer){NativeAPI.unityCallJumpToRecharge(ScreenName,receOBName,methodName);//跳转到 充值}else{Debug.Log(呼叫 安卓跳转充值----------------);AndroidJavaClass activityClass new AndroidJavaClass(com.unity3d.player.UnityPlayer);//只能调用静态AndroidJavaObject s_ActivityContext activityClass.GetStaticAndroidJavaObject(currentActivity);//可以调用非静态s_ActivityContext.Call(unityCallJumpToRecharge,ScreenName,receOBName,methodName); }}/// summary/// 跳转到 重新登录界面/// /summarypublic void unityCallJumpLogin(){if (Application.platform RuntimePlatform.IPhonePlayer){NativeAPI.unityCallJumpLogin();//IOS 进入 重新登录页面}else{Debug.Log(跳转到重新登录的Activity--------------);AndroidJavaClass activityClass new AndroidJavaClass(com.unity3d.player.UnityPlayer);//只能调用静态AndroidJavaObject s_ActivityContext activityClass.GetStaticAndroidJavaObject(currentActivity);//可以调用非静态s_ActivityContext.Call(unityCallJumpLogin);activityClass null;s_ActivityContext null;}}/// summary/// 显示UnityLog到 安卓调试窗/// /summarypublic void unityCallPrintLog(string log){if (Application.platform RuntimePlatform.IPhonePlayer){//TODO }else{AndroidJavaClass activityClass new AndroidJavaClass(com.unity3d.player.UnityPlayer);//只能调用静态AndroidJavaObject s_ActivityContext activityClass.GetStaticAndroidJavaObject(currentActivity);//可以调用非静态s_ActivityContext.Call(unityCallPrintLog,log);}}/// summary 打开隐私按钮 /summarypublic void onPrivacyButton(){if (Application.platform RuntimePlatform.IPhonePlayer){NativeAPI.onPrivacyButton();}else{Debug.Log(打开隐私按钮);}}/// summary 打开储值 /summarypublic void storedValue(){if (Application.platform RuntimePlatform.IPhonePlayer){Debug.Log(ios打开储值:NativeAPI.storedValue()); }else{Debug.Log(打开储值按钮);if (Application.platform RuntimePlatform.WindowsEditor){//LogoGM.instance.HeroInfo_PlayCount(5);//默认给5个//LogoGM.instance.HeroInfoSave();//PC端 增加可玩次数保存}}}/// summary 查询是否切换游戏 /summary/// returns/returnspublic string ChangeGame(){if (Application.platform RuntimePlatform.IPhonePlayer){return IOS查询是否切换 NativeAPI.ChangeGame();}else{return PC查询游戏切换;}}/// summary/// IOS调用Unity的方法UnitySendMessage(物体名, 函数名, 回调字符串);/// /summary/// param namemsg/parampublic void ReceIosMsg(string msg){Debug.Log(IOS 回调的信息);/*//根据游戏的场景划分 确定回调逻辑int scenceId SceneManager.GetActiveScene().buildIndex;if (string.IsNullOrEmpty(msg)){Debug.Log(scenceId场景 收到IOS消息为空字符);}else{string strType;string strCode;//字符串转json对象JsonData jsonData JsonMapper.ToObject(msg);switch (scenceId){case 0://场景0try{strType jsonData[type].ToString();strCode jsonData[str].ToString();if (strTypeChuShiHua){int code int.Parse(strCode);if (code0)//非游戏 静止在这个界面{Debug.Log(scenceId场景收到非游戏Code,等待跳转);//SetOrientationPortrait();//设置为竖屏mSpr.gameObject.SetActive(false);TestUpsideDown(1);}else{Debug.Log(正常游戏);toMenu();}}else{Debug.Log(scenceId场景 收到的不是初始化字段:strType);}}catch (Exception e){Debug.LogError(string.Format({0} 场景 解析数据出错 原数据:{1},scenceId,msg));}break;case 1://场景1try{strType jsonData[type].ToString();strCode jsonData[str].ToString();if (strType APPStore_Scuess){//TODO 储值成功 添加可玩次数Debug.Log(储值成功);HeroInfo_PlayCount(9999);HeroInfoSave();//场景1的储值}else{Debug.Log(scenceId场景 收到的不是储值字段:strType);}}catch (Exception e){Debug.LogError(string.Format({0} 场景 解析数据出错 原数据:{1},scenceId,msg));}break;}}*/} }
http://www.dnsts.com.cn/news/66207.html

相关文章:

  • 自己怎样建网站如何提高自己的营销能力
  • 建站培训班做兼职去什么网站
  • 安卓开发软件seo都用在哪些网站
  • 网站建设程序员做什么网站设计费报价表
  • 网站怎么做优化做一个展示型网站多少钱
  • 较好网站建设公司做移动网站优化排名首页
  • vR网站建设程序建网页的软件
  • 做企业网站找哪家大理建设工程信息网站
  • 烟台海阳市专业做网站网站建设方案 报价
  • 哪些平台制作网站网站建设的大功效
  • 静安做网站的公司app推广方案
  • 如何给网站做防盗链丽水网站建设微信推广
  • 网站建设服务采购方案后端开发是干什么的
  • 东莞效果好的营销型网站建设怎么随便搞个网站
  • wordpress固定链接设置以后404东莞公司seo优化
  • js建设网站外网赣州北京网站建设
  • 怎么寻求网站建设如何搭建aspx网站
  • 芜湖网站优化公司口碑好的做网站公司
  • 天津定制开发网站网站建设需要的软件
  • 德州口碑好的网站制作公司注册公司代理记账费用
  • php源码下载网站wordpress建的大型网站
  • 福建漳发建设有限公司网站知名的wordpress模板
  • 学做网站学费织梦网站入侵
  • asp网站免费模板下载网上申报食品经营许可证流程
  • 加强健康养老网站建设软件工程专业就业方向及前景分析
  • 什么是网站开发设计与实现网站建设制作宝塔面板
  • 滨海网站建设电子商务网站建设与管理考卷
  • 学校联系我们网站制作哪个网站做废旧好
  • 产品网站系统如何开微信小程序店铺
  • 南京网站制作公司电话wordpress5换回编辑器