Unity广度优先搜索子物体

来源:互联网 发布:淘宝一两元怎么赚钱 编辑:程序博客网 时间:2024/06/05 17:17

深度优先搜索相对简单一点,就不说了,不过广度也有其用处,比如想找到一个人物骨骼的一个节点,在比较浅的层级时,用深度搜索可能是很浪费的

当然,这个改改条件,用在其它地方也是可以的。。。

上代码,顺便试试代码块

/// <summary>/// 广度搜索/// </summary>public class BTFind {    Transform root;    Queue queue;    public BTFind(Transform root) {        this.root = root;        queue = new Queue();    }    /// <summary>    /// 按名字查找    /// </summary>    /// <param name="objName">名字</param>    /// <param name="st">类型,名字相等或包含0为相等,1为包含</param>    /// <returns></returns>    public Transform FindByName(string objName, int st) {        queue.Clear();        queue.Enqueue(root);        return search(queue, objName, st);    }    private Transform search(Queue q, string name, int st) {        Transform t = (Transform)queue.Dequeue();        switch (st) {            case 0:                if (t.name == name)                    return t;                break;            case 1:                if (t.name.Contains(name))                    return t;                break;            default:                if (t.name == name)                    return t;                break;        }        if (q.Count <=0 && t.childCount <= 0)            return null;        foreach (Transform ct in t) {            queue.Enqueue(ct);        }        return search(q, name, st);    }}

0 0
原创粉丝点击