android与unity交互_第1张图片 2017-3-6
这是一篇站在android角度写unity的文章。
最近与unity的约会过于频繁,导致矛盾出现。先来看下android与unity交互的操作,首先两者要在一起。
unity3d项目导入android studio

[1]android与unity的简单约定

1、android调用unity,展示unity的方法。UnityPlayer.UnitySendMessage() 参数1表示发送游戏对象的名称(由unity方给出,而且是固定的),参数2表示对象绑定的脚本接收该消息的方法(由unity方给出,而且是固定的),参数3表示本条消息发送的字符串信息(双方约定的,可以是一串字符,json数据等)

UnityPlayer.UnitySendMessage("Directional Light","ReceiveJson",data);

2、android下载unity文件并储存到本地,以供unity读取。

【1】android下载到的unity文件存储路径String path=getContext().getExternalFilesDir("")+"/"+fileName;【2】unity读取文件的路径 WWW download = WWW.LoadFromCacheOrDownload ("file://"+Application.dataPath + "/fileName", 1);      

3、android与unity互传数据格式的约定为json数据格式。

【1】创建javaBean类/** * 全部汇总给unity */public class TallScene {    private FirstScene firstScene;    private SecondScene secondScene;    private ThirdScene thirdScene;    private FourScene fourScene;    public TallScene(){        this.firstScene=new FirstScene();        this.secondScene = new SecondScene();        this.thirdScene = new ThirdScene();        this.fourScene = new FourScene();    }    public TallScene(FirstScene firstScene) {        this.firstScene = firstScene;    }    public FirstScene getFirstScene() {        return firstScene;    }    public void setFirstScene(FirstScene firstScene) {        this.firstScene = firstScene;    }    public SecondScene getSecondScene() {        return secondScene;    }    public void setSecondScene(SecondScene secondScene) {        this.secondScene = secondScene;    }    public ThirdScene getThirdScene() {        return thirdScene;    }    public void setThirdScene(ThirdScene thirdScene) {        this.thirdScene = thirdScene;    }    public FourScene getFourScene() {        return fourScene;    }    public void setFourScene(FourScene fourScene) {        this.fourScene = fourScene;    }}【2】构造json数据public class CreateJson {    //json对象    public static String createJson(TallScene scene) {        // TODO Auto-generated method stub        try {            // 第一个场景的json            JSONObject firstJson = new JSONObject();            firstJson.put("sexman", scene.getFirstScene().getSexman());            firstJson.put("sexwoman", scene.getFirstScene().getSexwoman());            // 第二个场景的json            JSONObject secondJson = new JSONObject();            secondJson.put("action", scene.getSecondScene().getAction());            secondJson.put("background", scene.getSecondScene().getBackground());            // 第三个场景的json            JSONObject thirdJson = new JSONObject();            thirdJson.put("background", scene.getThirdScene().getBackground());            thirdJson.put("action", scene.getThirdScene().getAction());            thirdJson.put("text", scene.getThirdScene().getText());            thirdJson.put("time", scene.getThirdScene().getTime());            // 第四个场景的json            JSONObject fourScene = new JSONObject();            fourScene.put("injection", scene.getFourScene().getInjection());            fourScene.put("text", scene.getFourScene().getText());            // 所有场景的json            JSONObject allSceneJson = new JSONObject();            allSceneJson.put("firstscene", firstJson);            allSceneJson.put("secondscene",secondJson);            allSceneJson.put("thirdscene",thirdJson);            allSceneJson.put("fourthscene",fourScene);            L.i("这个是所有场景的json", allSceneJson.toString() );            return allSceneJson.toString();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return "";    } }[3]实例化json数据,传送给unity TallScene scene = new TallScene();        scene.getFirstScene().setSexwoman(sex2);        scene.getFirstScene().setSexman(sex1);        scene.getSecondScene().setAction("secondanimation.assetbundle");        scene.getSecondScene().setBackground("");        scene.getThirdScene().setAction("ACHuge.assetbundle");        scene.getThirdScene().setBackground("BGYinXing.assetbundle");        scene.getThirdScene().setText("you are my heart!");        scene.getThirdScene().setTime("ACHuge.assetbundle");        scene.getFourScene().setText("自定义文字");        scene.getFourScene().setInjection("huapen.assetbundle");        String first=CreateJson.createJson(scene);        UnityPlayer.UnitySendMessage("Directional Light","ReceiveJson",first);

[2]总结

1、在实现二者间的交互过程中,需要双方都打印出log,这样才能更好的看出问题在哪。关键点一是调用的方法,二是传送的数据格式,三是文件存储的路径和读取的路径。
2、沟通很重要,文字表达要准确,是下载文件打印log就说下载文件,是读取文件就打印读取文件,即使方法名叫download,但以实现的功能为标准。
3、unity在android中调试会不停的更改unity的版本,这时你只需要按照unity3d项目导入android studio,在这个的基础上将main文件下assets文件和jniLibs文件delete,然后将新的unity3d项目libs文件里的三个文件拷贝到android下libs文件下覆盖掉原来的即可。

[3]分享

开学了,作为一名大三的学生,即将走出社会,有迷茫,有梦想,却困在其中走也走不出去。
最近看了一本书叫《因为痛,所以叫青春》,很喜欢里面的一句话

人生从不嫌弃太年轻或太老。

还有一句也很喜欢,不过我在后面加了句话

你就是人生的赢家!我没有统治世界的愿望,只有想要改变自己命运的决心,我想做人生的大赢家。

精心准备,等待属于我的时机出现,把握住每一个机会,你就是人生的赢家。

更多相关文章

  1. 修改android virtual device路径
  2. 每周总结20130821——android控件的尺寸、http文件上传
  3. Android调用系统自带的文件管理器进行文件选择并获得路径,android
  4. Android 文件的保存与读取之SDCard(SD卡)存储
  5. Android Studio共用Eclipse的Android项目文件
  6. Android布局文件中命名空间的解析

随机推荐

  1. Android(安卓)System Server大纲之Vibrat
  2. 实现Android(安卓)ListView 自动加载更多
  3. android各层调用关系,架构流程
  4. WebView Android(安卓)调用js且须要获取
  5. Android端JQueryMobile使用教程(二)
  6. android 测绘流程
  7. gridlayout 子view撑出屏幕
  8. Android系统手机端抓包方法
  9. Android获取IPV4的方法
  10. android带进度的文件上传