Skip to content

Instantly share code, notes, and snippets.

@todorok1
Last active Jan 4, 2021
Embed
What would you like to do?
メッシュを結合するメソッドの準備部分
/// <Summary>
/// メッシュとマテリアルを結合します。
/// </Summary>
void CombineMeshWithMaterial()
{
// 地形オブジェクトのMeshFilterへの参照を配列として保持します。
MeshFilter[] meshFilters = fieldParent.GetComponentsInChildren<MeshFilter>();
MeshRenderer[] meshRenderers = fieldParent.GetComponentsInChildren<MeshRenderer>();
// MeshFilterとMeshRendererの数が合っていない場合は処理を抜けます。
if (meshFilters.Length != meshRenderers.Length)
{
return;
}
// 子オブジェクトのメッシュをマテリアルごとにグループ分けします。
Dictionary<string, Material> matNameDict = new Dictionary<string, Material>();
Dictionary<string, List<MeshFilter>> matFilterDict = new Dictionary<string, List<MeshFilter>>();
for (int i = 0; i < meshFilters.Length; i++)
{
Material mat = meshRenderers[i].material;
string matName = mat.name;
// 辞書のキーにマテリアルが登録されていない場合はMeshFilterのリストを追加します。
if (!matFilterDict.ContainsKey(matName))
{
List<MeshFilter> filterList = new List<MeshFilter>();
matFilterDict.Add(matName, filterList);
matNameDict.Add(matName, mat);
}
matFilterDict[matName].Add(meshFilters[i]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment