资源简介

Unity5.6终于支持NavMesh动态烘培啦!

资源截图

代码片段和文件信息

using UnityEngine;
using UnityEngine.AI;
using System.Collections;
using System.Collections.Generic;
using NavMeshBuilder = UnityEngine.AI.NavMeshBuilder;

// Build and update a localized navmesh from the sources marked by NavMeshSourceTag
[DefaultExecutionOrder(-102)]
public class My_LocalNavMeshBuilder : MonoBehaviour
{
    // The center of the build
    public Transform m_Tracked;

    // The size of the build bounds
    public Vector3 m_Size = new Vector3(80.0f 20.0f 80.0f);

    NavMeshData m_NavMesh;
    AsyncOperation m_Operation;
    NavMeshDataInstance m_Instance;
    List m_Sources = new List();

    private MeshFilter mf;
    private Mesh m;

    //IEnumerator Start()
    //{
    //    while (true)
    //    {
    //        UpdateNavMesh(true);
    //        yield return m_Operation;
    //    }
    //}

    void Start()
    {
        mf = GetComponent();
        m = mf.mesh;
    }

    void Update()
    {
        if(Input.GetKey(KeyCode.A))
        {
            bake();
        }

        if(Input.GetKey(KeyCode.D))
        {
            drawNavMesh();
        }
    }

    private void bake()
    {
        m_NavMesh = new NavMeshData();
        m_Instance = NavMesh.AddNavMeshData(m_NavMesh);
        if (m_Tracked == null)
            m_Tracked = transform;
        UpdateNavMesh(false);
    }

    private void drawNavMesh()
    {
        NavMeshTriangulation nt = NavMesh.CalculateTriangulation();
        m.vertices = nt.vertices;
        m.triangles = nt.indices;
    }

    //void OnEnable()
    //{
    //    // Construct and add navmesh
    //    m_NavMesh = new NavMeshData();
    //    m_Instance = NavMesh.AddNavMeshData(m_NavMesh);
    //    if (m_Tracked == null)
    //        m_Tracked = transform;
    //    UpdateNavMesh(false);
    //}

    //void OnDisable()
    //{
    //    // Unload navmesh and clear handle
    //    m_Instance.Remove();
    //}

    void UpdateNavMesh(bool asyncUpdate = false)
    {
        NavMeshSourceTag.Collect(ref m_Sources);
        var defaultBuildSettings = NavMesh.GetSettingsByID(0);
        var bounds = QuantizedBounds();

        if (asyncUpdate)
            m_Operation = NavMeshBuilder.UpdateNavMeshDataAsync(m_NavMesh defaultBuildSettings m_Sources bounds);
        else
            NavMeshBuilder.UpdateNavMeshData(m_NavMesh defaultBuildSettings m_Sources bounds);
    }

    static Vector3 Quantize(Vector3 v Vector3 quant)
    {
        float x = quant.x * Mathf.Floor(v.x / quant.x);
        float y = quant.y * Mathf.Floor(v.y / quant.y);
        float z = quant.z * Mathf.Floor(v.z / quant.z);
        return new Vector3(x y z);
    }

    Bounds QuantizedBounds()
    {
        // Quantize the bounds to update only when theres a 10% change in size
        var center = m_Tracked ? m_Tracked.position : transform.position;
        r

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-04-19 14:54  NavMeshComponents\
     目录           0  2017-04-19 14:54  NavMeshComponents\Assets\
     文件       27353  2017-04-19 14:54  NavMeshComponents\Assets\DemoScene.unity
     文件         174  2017-04-19 14:28  NavMeshComponents\Assets\DemoScene.unity.meta
     目录           0  2017-04-19 13:48  NavMeshComponents\Assets\Examples\
     文件        3497  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Cube.prefab
     文件         179  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Cube.prefab.meta
     目录           0  2017-04-19 13:48  NavMeshComponents\Assets\Examples\Editor\
     文件        4425  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Editor\NavMeshPrefabInstanceEditor.cs
     文件         262  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Editor\NavMeshPrefabInstanceEditor.cs.meta
     文件         191  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Editor.meta
     目录           0  2017-04-19 13:48  NavMeshComponents\Assets\Examples\Materials\
     文件        2867  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\brightgreen.mat
     文件         179  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\brightgreen.mat.meta
     文件        2867  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\brown.mat
     文件         179  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\brown.mat.meta
     文件        3947  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\crosshair.mat
     文件         179  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\crosshair.mat.meta
     文件        2865  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\floor.mat
     文件         179  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\floor.mat.meta
     文件        2867  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\green.mat
     文件         179  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\green.mat.meta
     文件        2863  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\grey.mat
     文件         179  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\grey.mat.meta
     文件        1036  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\modify_crosshair.png
     文件        1184  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\modify_crosshair.png.meta
     文件        2863  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\red.mat
     文件         179  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\red.mat.meta
     文件        2849  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\yellow.mat
     文件         179  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials\yellow.mat.meta
     文件         191  2017-04-03 17:57  NavMeshComponents\Assets\Examples\Materials.meta
............此处省略871个文件信息

评论

共有 条评论