开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

问答求助

关注:387

当前位置:游戏蛮牛 技术专区 问答求助

_____________________________________________________________________________________________________________
问答求助版块规则:

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 562|回复: 6

[基本操作] 根据XML配置的父子关系在unity中生成父子关系的对象

[复制链接]  [移动端链接]
7日久生情
2342/5000
排名
528
昨日变化
1

28

主题

673

帖子

2342

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
4392
好友
30
蛮牛币
5645
威望
0
注册时间
2013-9-23
在线时间
619 小时
最后登录
2017-1-20

社区QQ达人

发表于 2016-8-9 16:13:24 | 显示全部楼层 |阅读模式
5蛮牛币
各位大大,如何根据XML中配置的层级关系,在unity中生成对应层级关系的对象,搞了一天了,没搞定,特在此求助一下是简单配置表:
搜狗截图16年08月09日1607_1.png

需要在unity中生成一个格式:
搜狗截图16年08月09日1611_2.png

求支招

回复

使用道具 举报

排名
361
昨日变化

5

主题

356

帖子

2173

积分

Rank: 11Rank: 11Rank: 11Rank: 11Rank: 11

UID
31708
好友
2
蛮牛币
5263
威望
0
注册时间
2014-6-28
在线时间
617 小时
最后登录
2017-1-18

活力之星

QQ
发表于 2016-8-9 16:13:25 | 显示全部楼层
[C#] 纯文本查看 复制代码
string xml = "<root><node name = \"a\"><pos x = \"0\" y = \"10\" z = \"0\"/><node name = \"b\"/></node></root>";
    void Start()
    {
        XmlDocument document = new XmlDocument();
        document.LoadXml(xml);

        XmlNodeList nodeLists = document.FirstChild.ChildNodes; //第一个child 是 root

        ReadNode(nodeLists, new GameObject("Root").transform);
    }

    string str = "";
    void ReadNode(XmlNodeList InList, Transform InParent)
    {
        str += "--";
        if (null == InList)
        {
            return;
        }

        foreach (XmlNode node in InList)
        {
            string name = node.Name;
            if ("pos" == name)
            {
                float x = float.Parse(node.Attributes["x"].Value);
                float y = float.Parse(node.Attributes["y"].Value);
                float z = float.Parse(node.Attributes["z"].Value);

                InParent.localPosition = new Vector3(x, y, z);
            }
            //             else if ("" == name)
            //             { }
            else if (node.Name == "node")
            {
                GameObject go = new GameObject(name);
                go.transform.parent = InParent;
                go.transform.localPosition = Vector3.zero;

                ReadNode(node.ChildNodes, go.transform);
            }
        }
    }


忘了你还有属性~

回复

使用道具 举报

7日久生情
2342/5000
排名
528
昨日变化
1

28

主题

673

帖子

2342

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
4392
好友
30
蛮牛币
5645
威望
0
注册时间
2013-9-23
在线时间
619 小时
最后登录
2017-1-20

社区QQ达人

 楼主| 发表于 2016-8-9 17:08:06 | 显示全部楼层
怎么没人回答呢,

回复

使用道具 举报

6蛮牛粉丝
1112/1500
排名
1200
昨日变化
4

11

主题

156

帖子

1112

积分

Rank: 6Rank: 6Rank: 6

UID
8852
好友
2
蛮牛币
1886
威望
0
注册时间
2013-11-25
在线时间
277 小时
最后登录
2017-1-20
发表于 2016-8-10 09:21:29 | 显示全部楼层
本帖最后由 乐依忆 于 2016-8-10 09:23 编辑

获取xml的transform然后transform.parent就可以了吧,还有你的问题是读取xml不成功还是在unity不会设置子父关系

回复

使用道具 举报

7日久生情
2342/5000
排名
528
昨日变化
1

28

主题

673

帖子

2342

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
4392
好友
30
蛮牛币
5645
威望
0
注册时间
2013-9-23
在线时间
619 小时
最后登录
2017-1-20

社区QQ达人

 楼主| 发表于 2016-8-10 11:02:12 | 显示全部楼层
乐依忆 发表于 2016-8-10 09:21
获取xml的transform然后transform.parent就可以了吧,还有你的问题是读取xml不成功还是在unity不会设置子父 ...

xml有transform?能读取成功,不知道怎根据xml的层级在unity中生成对应的层级

回复

使用道具 举报

排名
361
昨日变化

5

主题

356

帖子

2173

积分

Rank: 11Rank: 11Rank: 11Rank: 11Rank: 11

UID
31708
好友
2
蛮牛币
5263
威望
0
注册时间
2014-6-28
在线时间
617 小时
最后登录
2017-1-18

活力之星

QQ
发表于 2016-8-10 12:08:41 | 显示全部楼层
[C#] 纯文本查看 复制代码
    string xml = "<root><node name = \"a\"><node name = \"b\"/></node></root>";
	void Start () 
    {
        XmlDocument document = new XmlDocument();
        document.LoadXml(xml);

        XmlNodeList nodeLists = document.ChildNodes;

        ReadNode(nodeLists, null);
	}

    void ReadNode(XmlNodeList InList, Transform InParent)
    {
        if (null == InList)
        {
            return;
        }

        GameObject go;
        foreach (XmlNode node in InList)
        {
            go = new GameObject(node.Name);
            if(null != InParent)
                go.transform.parent = InParent;

            Debug.LogError(node.Name + " : " + node.Value);
            
            ReadNode(node.ChildNodes, go.transform);
        }
    }



随手写了一个,差不多就是这个意思~

回复

使用道具 举报

3偶尔光临
258/300
排名
6170
昨日变化
5

0

主题

27

帖子

258

积分

Rank: 3Rank: 3Rank: 3

UID
119541
好友
0
蛮牛币
314
威望
0
注册时间
2015-8-24
在线时间
102 小时
最后登录
2017-1-20
发表于 2016-12-7 11:36:46 | 显示全部楼层
我想找一个能显示在inspector面板中,结果发现这个是显示在层级面板的,不过还是很好的东西,谢谢了!
[发帖际遇]: 玲珑八音盒 发帖时在路边捡到 1 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表