iOS與unity3D簡單互動

來源:互聯網
上載者:User
一.小記

最近公司有個需求,需要用unity3D建立3D模型,並且實現切換功能,由於做開發時間不算長,又沒有接觸過unity3D, 所以只能一頭霧水去網上尋找資料,也看了雨松MOMO的文章,不過都是幾年前的了,有些東西已經不適用了,只能邊看邊研究,今天終於有點眉目了,可以在unity3D匯出的iOS工程檔案的基礎上,對3D建模的頁面進行修改,並能夠執行一些操作了。


二.實現細節

unity3D 版本: 5.3.4

Xcode    版本: 7.3.1

首先就是需要做unity3D的人員將相應的模型上綁定好指令碼,並告知你模型或者說要操作的對象的名稱和要調用的方法名稱,這裡由於我要實現的是切換攝像機的角度,所以名稱為mycamera(我希望是駝峰命名myCamera,可惜unity3D那邊不是我寫的,就不要在意這些細節了,自己注意就好),匯出的時候在playerSetting中做好各種設定,選擇使用模擬器調試、SDK版本什麼的,這裡就不贅述了。

匯出的包如果是壓縮後傳過來的,那麼解壓後需要稍等一會才能看見檔案夾中的xcodeproj檔案,不知道什麼原因可能是檔案太大了吧......

開啟xcodeproj檔案,首先編譯一下試試,很大可能報一個錯誤
編譯報錯

意思是說MapFileParser.sh檔案沒有許可權執行,這樣我們進入中端,給予這個檔案許可權
給MapFileParser.sh許可權

這樣,報錯就能夠成功解決了,再次運行就會出現沒有加工處理過的原生的unity3D的內容了
比如像這個杯子的3D模型

檔案能正常編譯運行,我們就可以進行下一步了。

我們在匯出的工程中自己添加檔案MyViewInit
添加自己的檔案

在檔案中寫入自己想要實現的代碼
MyViewInit.h
MyViewInit.m
MyViewInit.m

當一個簡單的介面搭建好之後,我們就要先測試一下是否能夠添加到U3D模型介面,在工程檔案夾中找到Classes檔案夾,點擊展開,找到UnityAppController.mm檔案,該檔案是U3D工程的開機檔案
找到UnityAppController.mm檔案

在檔案的最上部分,匯入自己寫的檔案的標頭檔

#import "MyViewInit.h"

找到方法
didFinishLaunching

在方法最底部添加布置UI的代碼
布置UI

其中UnityGetGLViewController() 是U3D模型視圖中的根視圖控制器

(如果在老版本的unity3D中可能需要對此變更)

然後就可以點擊運行進行測試了,不出什麼意外的話,就可以顯示在模型視圖上了
添加UI控制項後的視圖

怎麼樣,效果立竿見影吧。

下面進行最重要的一步,向U3D模型發送訊息,回到MyViewInit.m檔案,為兩個button添加的點擊事件完成實現,別忘了在.h檔案聲明
實現button點擊事件

為了防止發生小意外找不到錯誤,可以先在這裡列印,看看按鈕是否響應點擊事件,如果能成功列印,那就萬事大吉了。

這裡要著重說一點,雨松MOMO在他的一篇文章中講述了這方面的內容,他使用的是繼承自UIViewController的檔案,並使用對象方法來寫UI和點擊事件,不知道為什麼,添加的UI空間可以顯示,但是button不響應點擊事件,我還暫時沒有深究原因,待後續更新。

在點擊事件中,使用U3D已經寫好的方法

UnitySendMessage("mycamera", "changeModel", "");

第一個參數 填寫接受方法的物品或者模型名稱。

第二個參數 填寫方法名字。

第三個參數 填寫要傳的參數,沒有要傳的參數直接寫"",這裡不能寫nil,會crash。

這樣再次運行,就可以啦,我這裡實現的是點擊按鈕切換模型

------------------------------------------------------------------------------------------------------------------------------------------------------------

2017年03月10日09:49:20  更新

------------------------------------------------------------------------------------------------------------------------------------------------------------

有很多朋友會問,自己添加的點擊事件不響應,執行個體方法不響應,但是類方法卻響應。這裡其實是在程式啟動並執行時候,你所添加button的視圖控制器被U3D的系統方法替換掉了,導致按鈕被釋放,所以肯定也不會有事件響應了,下圖注釋的部分就是U3D系統替換你的ViewController的方法。


所以想要保證視圖控制器不被釋放,在建立的時候要加一個static即可解決。


需要demo的可以加我 歡迎支援

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.