2D カード ゲームを作りたいので、
カードの階層関係を動的に変更する必要があり、
カードにテキストを付けるのが難しいのです。
テキストの階層表示関係を動的に変更する必要があるため
、最初は3DTextを選択しましたが、
テキストを中央揃えにするのは簡単ではないことがわかり、TextMeshProに切り替えました
ただし、レイヤーを表示したい場合にカメラの描画順を変更したい場合は、
Sorting Layer と Order Layer の値を変更する必要があり、
Sorting Layer が決定された後、それに従って順番に描画されます。レイヤーを注文します。
There is no value of Sorting Layer in the default inspector panel.
エディタにコードを追加して表示します (最初にエディタ フォルダを作成することを忘れないでください)。
using UnityEditor;
using UnityEngine;
/// <summary>
/// 显示Sorting Layer,Order In Layer
/// </summary>
[CustomEditor(typeof(MeshRenderer))]
public class MeshRenderEditor : Editor
{
MeshRenderer meshRenderer;
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
meshRenderer = target as MeshRenderer;
string[] layerNames = new string[SortingLayer.layers.Length];
for (int i = 0; i < layerNames.Length; i++)
{
layerNames[i] = SortingLayer.layers[i].name;
}
int layerValue = SortingLayer.GetLayerValueFromID(meshRenderer.sortingLayerID);
layerValue = EditorGUILayout.Popup("Sorting Layer", layerValue, layerNames);
SortingLayer layer = SortingLayer.layers[layerValue];
meshRenderer.sortingLayerName = layer.name;
meshRenderer.sortingLayerID = layer.id;
meshRenderer.sortingOrder = EditorGUILayout.IntField("Order In Layer", meshRenderer.sortingOrder);
}
}
ただし、ターゲットの 2 つの値を変更しても TextMeshPro レベルを動的に変更できないことが判明したため、実行時に対応するTextMeshPro
の下に新しいオブジェクトが生成されることがわかりました。
テキストの表示に影響を与える可能性があり、
対象オブジェクトで使用できる GetChild(0)
TextMeshPro を持つオブジェクトが作成された後に自動的に生成されるため取得されるため、元のオブジェクトの Awake では直接取得できないため
、初めてエラーが報告されないという状況を回避するには、エラーをキャッチしてみることだけが必要です。
中国語表示
中国語の Txt を設定してもフォントが使い物にならないので、次の 2 つの値を調整してください。うまくいかない場合は、最大値に変更してください。
MissingReferenceException: The object of type 'GameObject' has been destroyed が常に報告される
インポートした TextMesh Pro プラグイン フォルダを削除して、再度インポートするだけです