總結接入u3d項目出現的問題(把Unity工程導出google project的形式)

? ? 1 通過控件裝載u3d視圖來控制顯示和隱藏視圖在u3d 5.6之前的版本是行的通的 u3d 5.6的版本(u3d的視圖渲染機制改變,視圖會強制性的展示);

? ? 2 現在項目的布局是android這邊有層原生控件,u3d的視圖會強制性的渲染在視圖上方u3d 5.6的解決辦法目前是把u3d的布局偏移一個屏幕的距離(也可以選擇把 u3d的視圖大小設置為寬和高都為0 ? ? ? ? ? ? ?來達到隱藏的效果,不過還原大小的時候會有個視圖渲染加載過程默認會顯示主題);

? ? 3 首先是交互 是對應u3d包名下面對應的一個類 對應的方法名字里面(參數一般為json用來數據交互) 值得注意的是方法要全是靜態的,并且有參數的, 里面對應有unityContext,unityActivity是對應安卓 ? ? ? ? 的上下文和activity, ? ? 并且請不要換上AppCompatActivity因為u3d導出的工程版本 ? ? ? ? ?偏低所以不支持這個。

? ? 4 然后就是對應的u3d新加方法的話需要導一次包在讓安卓這邊接入,取巧的方法就是替換libs下面的對應生成的jar包,并且替換assets下面緩存的文件

? ? 5 Unity工程假如添加jar包的話打包出來的因為是eclise工程所以項目結構層級是和gradle工程是不一樣的。如果出現第三方的工程引用需要自己手動導入到gradle工程里面

? ? 6 Unity 5.6后面的版本是可以導出gradle工程但是層級關系會有問題比如項目的gradle和工程的gradle在一個gradle下面

? ? 7 在Unity頁面打開新的activity會使Unity頁面進入onStop()方法,所以接口的數據傳輸進入暫停。

? ? 8 發給U3d的消息 UnityPlayer.UnitySendMessage("這個是和u3d定義好的名字","這個是方法名","這個是要傳的數據")?

? ? 9 在app下面的build.gradle中加入sourceSet{ main{ jniLibs.srcDirs=[libs] } }里面會出現版本不支持

? ? 10 接入過來的Unity工程 把入口的acivity改為UnityActivity?

? ? 1 不管是網易云或者是聲網的sdk 都存在u3d背景音樂出不來的情況 網易云的話是是進入會議室就直接不停的拿聲音管理的這個服務 以至于根本沒有聲音 但是偶爾的一次測試發現 黑屏以后就可以聽 ? ? ? ? 到背景音樂了

? ? 2 聲網的sdk初始化的時候joinChannel(String channelkey,String channelName,String optionalInfo,int optionalUid) 當optionalUid設置為0時會返回一個對應的32位整數,尷尬的是Ios這邊是生成64位 ? ? 的整數,所以后臺在介入的話會出現數據匹配不上 這邊的解決方法就是自己把返回的Uid 在轉成64位整數

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容