总结接入u3d项目出现的问题(把Unity工程导出google
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位整数