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.pswp.cn/news/392964.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392964.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392964.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oracle審計實施

1、語句審計 Audit session; Audit session By ; 與instance連接的每個會話生成一條審計記錄。審計記錄將在連接時期插入并且在斷開連接時期進行更新。 保留有關會話的信息比如連接時期斷開連接時期處理的邏輯和物理I/O,以及更多信息將存儲在單獨一條審計 記錄中…

JPDA 架構研究5 - Agent利用環境指針訪問VM (內存管理篇)

引入: 我們在前面說到JVMTI的客戶端Agent,又提到Agent通過環境指針來訪問VM。這里就來看看環境指針到底有多大的訪問VM的能力。 分類1:內存管理 a.Allocate. 分配內存 jvmtiError Allocate(jvmtiEnv* env,jlong size,unsigned char** mem_ptr) size:分配…

leetcode94. 二叉樹的中序遍歷(dfs)

給定一個二叉樹,返回它的中序 遍歷。示例:輸入: [1,null,2,3]1\2/3輸出: [1,3,2]代碼 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/ class …

vtk刪除一個actor_如何構建一個基于actor的簡單區塊鏈

vtk刪除一個actorScalachain is a blockchain built using the Scala programming language and the actor model (Akka Framework).Scalachain是使用Scala編程語言和參與者模型( Akka Framework )構建的區塊鏈。 In this story I will show the development process to build…

java枚舉的簡單介紹

1.枚舉,enum關鍵字,相當于public final static. 2.舉例: 首先定義了一個名為spiciness的枚舉類型。 public enum Spiciness {NOT, MILD, MEDIUM, HOT, FLAMING } 再來測試一下enum,這個測試方法表明它有tostring()方法&#xff0…

瀏覽器中插入富文本編輯器

常用的富文本編輯器有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,那么我們有多少方法可以…

android觸摸指紋會觸發按鍵功能,Android P新特性:利用觸摸指紋識別器能阻止手機息屏...

設想你正在閱讀手機上的文章,突然間顯示屏變暗了一點。顯然,你設置的30秒或1分鐘超時息屏對于常規使用來說還可以,但對于閱讀純文本片段,還遠遠不夠。因此,這時你會輕觸屏幕,可能會上下滑動,以防…

leetcode37. 解數獨(hashmap+回溯)

編寫一個程序,通過已填充的空格來解決數獨問題。 一個數獨的解法需遵循如下規則: 數字 1-9 在每一行只能出現一次。 數字 1-9 在每一列只能出現一次。 數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次。 空白格用 ‘.’ 表示。 Note: 給定的數獨序…

malloc、calloc、realloc和alloca各種的區別

需要先包含頭文件 #include"malloc.h"malloc是標準的在堆中開辟新的空間比如char *pt(char *)malloc(10*sizeof(char));需要free(p)才會釋放空間calloc也是開辟空間,但是使用方式不一樣比如char *pt(char *)calloc(100, sizeof(char));然后用calloc開辟的…

如何對第一個Vue.js組件進行單元測試

by Sarah Dayan通過莎拉達揚 In Build Your First Vue.js Component we made a star rating component. We’ve covered many fundamental concepts to help you create more complex Vue.js components.在“ 構建您的第一個Vue.js組件”中,我們制作了星級評分組件…

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…

leetcode226. 翻轉二叉樹(dfs)

翻轉一棵二叉樹。示例:輸入:4/ \2 7/ \ / \ 1 3 6 9 輸出:4/ \7 2/ \ / \ 9 6 3 1代碼 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode righ…

Java BigDecimal Rounding Mode

UP        往絕對值大了取 DOWN      往絕對值小了取 CEILING     往值大了取 FLOOR      往值小了取 HALF_UP     不管正負,四舍五入 HALF_DOWN  不管正負,五舍六入 HALF_EVEN    整數部分為奇數:四舍五入…

如何成為一名有效的軟件工程師

by Luis Santiago路易斯圣地亞哥(Luis Santiago) 如何成為一名有效的軟件工程師 (How to become an effective software engineer) When I first started my journey as a software engineer I quickly noticed the great amount of cognitive load involved when working on …

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 …