コード例 #1
0
 protected void OnDestroy()
 {
     // 已知在Editor下结束游戏时m_TrailRenderer可能为null
     if (m_TrailRenderer != null)
     {
         m_TrailRenderer.OnTrailMeshWillRender -= OnTrailMeshWillRender;
         Destroy(m_TrailRenderer.gameObject);
         m_TrailRenderer = null;
     }
 }
コード例 #2
0
    protected void Awake()
    {
        // TEST 为了看效果临时写的
        RendererCamera.depthTextureMode = DepthTextureMode.Depth;

        m_TrailRenderer = new GameObject("(TrailRenderer)" + name).AddComponent <hwmTrailMeshRenderer>();
        m_TrailRenderer.OnTrailMeshWillRender += OnTrailMeshWillRender;

        #region Create Buffers
        // TODO 这里应该可以优化,减少Buffer数量
        // 魔法数字4: 一个Section是一个长方形Mesh,一个长方形4个顶点
        m_PositionBuffer = new Vector3[MaxSectionCount * 4];
        m_ColorBuffer    = new Color32[MaxSectionCount * 4];
        m_UVBuffer       = new Vector2[MaxSectionCount * 4];
        m_IndexBuffer    = new int[(MaxSectionCount - 1) * 6];
        for (int iIndex = 0; iIndex < MaxSectionCount - 1; iIndex++)
        {
            m_IndexBuffer[iIndex * 6]     = iIndex * 4;
            m_IndexBuffer[iIndex * 6 + 1] = iIndex * 4 + 1;
            m_IndexBuffer[iIndex * 6 + 2] = iIndex * 4 + 2;

            m_IndexBuffer[iIndex * 6 + 3] = iIndex * 4 + 2;
            m_IndexBuffer[iIndex * 6 + 4] = iIndex * 4 + 1;
            m_IndexBuffer[iIndex * 6 + 5] = iIndex * 4 + 3;
        }
        #endregion

        // Mesh要放在Create Buffer后面
        m_Mesh0     = CreateDefaultMesh();
        m_Mesh1     = CreateDefaultMesh();
        m_DummyMesh = new Mesh();

        m_TrailRenderer._MeshFilter.mesh             = m_DummyMesh;
        m_TrailRenderer._MeshRenderer.sharedMaterial = TrailMateiral;

        if (AutoEmittingWhenAwake)
        {
            StartTrail();
        }
    }