AR--小Demo--伴旅

来源:互联网 发布:linux dns安装 编辑:程序博客网 时间:2024/05/23 02:10

抽点时间出来研究AR,完成下两个月前自己的一个idea,可惜的是到现在它已经再没必要做下去,没了意义,当初的激情已经不再。扩展还是很容易,毕竟留了接口。

说真的AR入门还是很简单,缺的的是idea.

如果想把Ar融入到游戏中貌似还是有点难,想到的就只有卡牌。

1.界面。
开始
拍照

支持触摸缩小放大模型

简单的点击模型互动


熟悉unity 动画系统


一。准备
1.登陆https://developer.vuforia.com/注册账号
2.http://www.arvrschool.com/read.php?tid=325&fid=21准备工作
二。导入模型在ARCamera里面有一项 Data Set Load Behaviour 选择下面的Load Data Set starvuforia Activate
三。开始界面。
四。主界面
1.拼UI,确定功能。
在MainStage里面负责监听AR的出现和消失事件,主要是显示主界面和隐藏主界面。
2.设计配置表,主要是为了以后维护简单只需要改配置表换资源就OK,扩展耶很容易.这步很重要。程序读取配置表自动生成选择界面UI.写配置实用Excel-->xml ,程序步骤:读取Xml解析所有数据


需求难点:1.识别出来图片时候要显示UI,没识别出来隐藏UI.
解决: DefaultTrackableEventHandler 是发现和丢失的函数
 2.UI界面没有显示出来。
  解决:选中UI的摄像机clear Flags-->Depth only, Depth 改后渲染就是它深度在ArCamera之上2
 3.自动生成UI排列,需要的是脑力。
 4.导出excle-->Xml http://zzfei.com/excel-to-xml/ 注意源xml格式

//平台路径

    public string PathRes()
     {
         string localPath =
         #if UNITY_EDITOR
          "file://" + UnityEngine.Application.streamingAssetsPath;
        #elif UNITY_ANDROID
          UnityEngine.Application.streamingAssetsPath;
        #endif


         return localPath;
     }

//解析我自己的配置文件xml
    public void ParseXml(WWW filePath, string SingleNode)
    {


            XmlDocument xmlDoc = new XmlDocument();
            Debug.Log(filePath.text);
            xmlDoc.LoadXml(filePath.text);
            XmlNodeList nodeList = xmlDoc.SelectSingleNode(SingleNode).ChildNodes;
            foreach (XmlElement xe in nodeList)
            {
                ModeData temp = new ModeData();
                int key = 0;
                foreach (XmlElement x1 in xe.ChildNodes)
                {
                    if (x1.Name == "ModeID") {
                        temp.ModeID = int.Parse(x1.InnerText);
                        key = temp.ModeID;
                    }
                    if (x1.Name == "StaticAutoType") temp.Type_Big = (int.Parse(x1.InnerText) == 1 ? StaticAutoType.Auto : StaticAutoType.Static);
                    if (x1.Name == "SubdivideType")
                    {
                        switch (x1.InnerText.ToString())
                        {
                            case "Anim":
                                temp.Type_little = SubdivideType.Anim;
                                break;
                            case "Person":
                                temp.Type_little = SubdivideType.Person;
                                break;
                            case "Traffic":
                                temp.Type_little = SubdivideType.Traffic;
                                break;
                            case "Military":
                                temp.Type_little = SubdivideType.Military;
                                break;
                            default:
                                break;
                        }  
                    }


                    if (x1.Name == "Name") temp.Name = x1.InnerText.ToString();
                    if (x1.Name == "ModePath") temp._modePath = x1.InnerText.ToString();
                    if (x1.Name == "HeadPath") temp._headPath = x1.InnerText.ToString();
                    if (x1.Name == "ChineseSound") temp.ChineseSound = x1.InnerText.ToString();
                    if (x1.Name == "EnglishSound") temp.EnglishSound = x1.InnerText.ToString();
                    if (x1.Name == "_callSound") temp._callSound = x1.InnerText.ToString();
                    if (x1.Name == "RunStr") temp.RunStr = x1.InnerText.ToString();
                    if (x1.Name == "WalkStr") temp.WalkStr = x1.InnerText.ToString();
                    if (x1.Name == "RelaxStr") temp.RelaxStr = x1.InnerText.ToString();
                }
                _allModes.Add(key, temp);
            }
       // }
        Debug.Log("Count : " + _allModes.Count);
        foreach (KeyValuePair<int,ModeData> temps in _allModes)
        {
            Debug.Log("_modePath : " + temps.Value._modePath);
        }
        //ModuleManager.Instance.AddModule(ModuleType.MainModule, new GameEvent(MainNotice.SHOW_MAIN));
        StageManager.Instance.EnterStart();
    }

链接: http://pan.baidu.com/s/1sj8BzKp 密码: jzae




0 0