Text の複数 Outline のコンポーネントを作成しようとしていると
Outline が Text よりあとに描画されてしまっており、想定していた順番で描画されなかった
テスト
単純に考えると AddUIVertexTriangleStream
で渡した List の順番で描画されるはずなので
もとの頂点を最初と最後でどう違うか見てみる
左が最後に入れたもので、右が最初に入れたもの
これで List の順番で描画されることが確認できた
/// <summary> /// 最後に入れる /// </summary> public override void ModifyMesh(VertexHelper vh) { _vertexList.Clear(); vh.GetUIVertexStream(_vertexList); for (int i = 0; i < 6; i++) { var v = _vertexList[i]; v.color = Color.black; _vertexList.Add(v); } vh.Clear(); vh.AddUIVertexTriangleStream(_vertexList); } /// <summary> /// 最初に入れる /// </summary> public override void ModifyMesh(VertexHelper vh) { _vertexList.Clear(); _vertexList2.Clear(); vh.GetUIVertexStream(_vertexList); for (int i = 0; i < 6; i++) { var v = _vertexList[i]; v.color = Color.black; _vertexList2.Add(v); } _vertexList2.AddRange(_vertexList); vh.Clear(); vh.AddUIVertexTriangleStream(_vertexList2); }
解決方法
つまりBaseMeshEffect
に渡す List の先頭から順に描画されるので、後に描画したいものを後ろに入れてやればいい