c语言写桌面程序unity,Unity和iOS原生界面交互示例

注意上面的Main方法中出现的UnityAppController,该类就是作为控制类来实现Unity在iOS上显示的功能,在Main方法中就是将该控制器作为参数传递,即Main方法之后就会进入该类执行。

所以这是我们进入到UnityAppController.mm,来查看该类中的方法执行顺序,可以看到这里的代码结构和OC的一般类的代码结构类似,除此之外还有一些C语言程序,作为相对底层中Unity与iOS交互的桥梁,不用管。我们需要关注的是:UnityAppController.mm中函数执行的顺序以及我们能够在哪里加上我们自己的代码实现”项目入口”的修改,从而做到整个程序一上来先显示我们自己的View,然后通过自定义事件再来跳转到Unity部分。所以整个项目看起来就像把Unity导出的工程剖开,将我们自定义的部分”塞”进去,从而实现iOS与Unity3d的交互。

操作步骤

通过UnityAppController.mm类中方法的执行顺序可以看出,在执行完StartUnity时,才让Unity界面显示出来,所以这个方法就是在Xcode中Unity界面的入口,所以这里我们可以通过修改这个入口,从而实现对Unity界面显示的控制。

1、在Xcode工程中创建一个OC的类,分别为HomeViewController,EnterIUnityViewController,以及单例类MyDataManager

2、各个类的作用,首先解释一下单例类MyDataManager,在该单例中实现存放一些全局变量,来判断是否进行跳转的判断,以及在该单例中还声明了存放UIViewController和UIWindow变量,因为实现修改程序入口的本质就是对window进行修改。

PS:因为有同学一直问这里单例类里实现的代码,所以这里更新下,将单例类中的.h文件和.m文件的代码截图放在这里。

5524d9e9befd

.h文件

5524d9e9befd

.m文件

而HomeViewController是自定义的一个来,该类只是简单地提供一个iOS的原生界面,在该界面上防止按钮,实现向EnterUnityViewController跳转,这里使用的模态。

5524d9e9befd

修改startUnity方法中代码

EnterViewController中主要实现点击进入Unity界面的方法,同时在该类中实现进入到Unity界面时,在Unity界面上添加返回到之前界面按钮的方法。在该方法里要判断是不是第一次启动Unity,如果是第一次启动Unity界面的话,需要添加返回按钮,如果不是的话,就通过单例中保存的Unity的viewController取出来进行展示。具体实现如下

5524d9e9befd

添加的返回按钮的方法如下

5524d9e9befd

3、如果是第一次启动Unity界面的话,还是需要到Unity自动生成的UnityAppController中进行修改它的入口函数的,在入口函数中进行判断,代码如下:

5524d9e9befd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/392964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浏览器中插入富文本编辑器

常用的富文本编辑器有CKEditor、UEEditor、TinyEditor、KindEditor等、以下以kindeditor编辑器的使用为例。 1.官网下载KindEditor编辑器http://kindeditor.net/down.php, 当前最新版本为4.1.11,解压缩后放入项目的static目录,作为js插件引用…

获取Extjs文本域中的内容

经常在Ext.select()和Ext.query()等问题上纠结,今天终于有了点新认识: 需求,假设我们的页面上有个panel ,其id为clusterstab_edit_details,这个panel的内部有个textarea,这个textarea的name为editDetails_Description,那么我们有多少方法可以…

Asp.NetCoreWebApi - RESTful Api

REST 常用http动词 WebApi 在 Asp.NetCore 中的实现3.1. 创建WebApi项目.3.2. 集成Entity Framework Core操作Mysql 3.2.1. 安装相关的包(为Xxxx.Infrastructure项目安装)3.2.2. 建立Entity和Context3.2.3. ConfigureService中注入EF服务3.2.4. 迁移数据库3.2.5. 数据库迁移结果…

android动画影子效果,Android TV常用动画的效果,View选中变大且有阴影(手机也能用)...

因为电视屏幕比较大,而我们看电视时距离电视有一定距离,这样就需要动画效果比较明显,这个动画就是应用最广泛的,因为很酷,呵呵,你懂得,看了就知道。效果如下图:public class MainAct…

linux 高可用----keepalived+lvs

什么是高可用? HA(high availability)即高可用性;就是在高可用集群中发生单点故障时,能够自动转移资源并切换服务,以保证服务一直在线的机制。 LVS LVS:(linux virtual server&#…

用户配置相关文件

用户配置相关文件小总结 /etc/passwd 记录用户相关的信息 /etc/shadow 密码影子文件 /etc/group 记录用户组相关的信息 /etc/gshadow 密码影子文件(组密码) /etc/passwd 文件中各段的内容 第1段:用户名 第…

华为5c android n风格,华为荣耀畅玩5C的屏幕怎么样

华为荣耀畅玩5C的屏幕怎么样屏幕方面,华为荣耀畅玩5C采用了5.2英寸1080P级别GFF贴合屏幕,塑料边框采用了弧面状的设计,握感比较舒适。华为荣耀畅玩5C采用了双主天线的设计,分别在上下的塑料区域。此外,边框以及后盖的上…

spring解析配置文件(三)

一、从XmlBeanDefinitionReader的registerBeanDefinitions(doc,resource)开始 1 protected int doLoadBeanDefinitions(InputSource inputSource, Resource resource) 2 throws BeanDefinitionStoreException { 3 try { 4 …

使用kibana和elasticsearch日志实时绘制图表

前言: 此文接的是上篇,上次的内容是,用python操作elasticsearch存储,实现数据的插入和查询。 估计有些人一看我的标题,以为肯定是 logstash kibana elasticsearch的组合。这三个家伙也确实总是勾搭在一块。 其实logst…

android 网络调试 源代码,Android源代码调试环境搭建

我们在调试Android应用程序的时候,有时候遇到一些莫名其妙的问题,因此我们需要查看Android内部是如何调用的。我们都知道Android是一个伟大的开源项目,因此debug的时候肯定是支持源代码级别调试的。采用源代码调试,一方面有利于发…

如何使用HTTP压缩优化服务器

鉴于互联网上的宽带有限,网络管理人员任何旨在加速接入速度的努力都是有价值的。其中的一个方法就是通过HTTP压缩技术实现接入速度的加速,它通过减少在服务器和客户端之间传输的数据量,显著地提高网站的性能。数据压缩本身并不新鲜。但是&…

OpenGL研究3.0 多边形区域填充

OpenGL研究3.0 多边形区域填充 DionysosLai(906391500qq.com)2014-06-22 所谓多边形区域填充。就是将多边形内部区域,所有已相同色块填充。注意:这里讨论的多边形是简单多边形(即不考虑诸如五角星这样的相交多边形)。简单多边形&a…

ping、网络抖动与丢包

基本概念: ping: PING指一个数据包从用户的设备发送到测速点,然后再立即从测速点返回用户设备的来回时间。也就是俗称的“网络延迟” 一般以毫秒(ms)计算 一般PING在0~100ms都是正常的速度,不会有较为明显的卡顿。 测试…

[luoguP2801] 教主的魔法(二分 + 分块)

传送门 以为对于这类问题线段树都能解决,分块比线段树菜,结果培训完才知道线段树是一种特殊的分块方法,有的分块的题线段树不能做,看来分块还是有必要学的。 对于这个题,先分块,然后另开一个数组对于每个块…

鸿蒙系统适配开发,捕获科技拟建立鸿蒙开发组 为区块链钱包客户适配鸿蒙系统做筹备...

遭遇美国“实体清单”封杀的第85天,华为“鸿蒙”横空出世!8月9日下午,在华为全球开发者大会上,当余承东正式宣布鸿蒙系统(Harmony OS)发布的时候,全场掌声雷动!世界上第一个由中国企业自主研发的全平台微内…

关于VCP(Virtual Com Port)拓展的调试经历(一)

* The Overview 前日,接到老板部署的任务,将现有的基于STM32L151与L432的LoRaWAN程序中添加USB CDC(Communication Device Class)功能,并枚举为VCP(Virtual Com Port)用以替代以往的串口打印。很疑惑为什么以前架构代码的时候没有添加进去。。…

三星s6 android 8.0,再见Android 8.0,三星s6全系列系统都停止了,第一代国王已经倒下了吗?...

对于Android用户而言,最令人兴奋的事情是系统更新,因为该更新意味着更流畅的体验和更加用户友好的功能. 但是,旧的三星S6并不是那么幸运,并且不再错过Android 8.0.三星s6的全系列指的是三星s6,三星s6 edge,…

Exchange 2010无法安装问题解决方法

当你在活动目录(AD)森林中安装多台全局编录服务器(GC)之后,默认情况下你会发现在AD站点里面自动生成二条站点连接,从上面的截图可以看到目前在AD森林的Default-First-Site-Name(默认站点)里面有6台GC。 从上面的截图可以看到目前只有一台叫做Sh-Site1GC(全局编录服务器)是处于运…

一加6android9玩飞车掉,解锁新速度:一加6T深度评测

解锁新速度:一加6T深度评测2019-11-02 14:28:595点赞2收藏4评论创作立场声明:我们只谈智能硬件,向改变生活的智能硬件Say“嗨”!作为安卓旗舰机成员,一加这个品牌在玩机一类的同学手里可是大放光彩,各种刷机…

探讨跨域请求资源的几种方式

[转自:http://www.cnblogs.com/dojo-lzz/p/4265637.html] 什么是跨域JSONPproxy代理corsxdr由于浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。具体可以查看下表(来源) JSONP 这种…