jaijai’s blog

Cities Skylinesアセット作成に関するメモ・考察

サブメッシュにテクスチャをコピーする

メインメッシュのテクスチャをサブメッシュにコピーするスクリプトです。サブメッシュでもメインメッシュと同一のテクスチャを使う場合に使用します。このスクリプトを使うことでサブメッシュのfbxファイルのみを用意するだけになり手間を減らせます。また、メインと同一のテクスチャであることが保証されます(参照になるのかコピーになるのかはよくわかりません)。

int[] subIndex = {0}; // submesh index

var asset = ToolsModifierControl.toolController.m_editPrefabInfo as BuildingInfo;
//var asset = ToolsModifierControl.toolController.m_editPrefabInfo as VehicleInfo;

for (int i = 0; i < asset.m_subMeshes.Length; i++){
    if (!subIndex.Contains(i)) continue;
    var submesh = asset.m_subMeshes[i].m_subInfo;

    submesh.m_material.mainTexture = asset.m_material.mainTexture;
    submesh.m_material.SetTexture("_XYSMap", asset.m_material.GetTexture("_XYSMap"));
    submesh.m_material.SetTexture("_ACIMap", asset.m_material.GetTexture("_ACIMap"));

    submesh.m_lodMaterial.mainTexture = asset.m_lodMaterial.mainTexture;
    submesh.m_lodMaterial.SetTexture("_XYSMap", asset.m_lodMaterial.GetTexture("_XYSMap"));
    submesh.m_lodMaterial.SetTexture("_ACIMap", asset.m_lodMaterial.GetTexture("_ACIMap"));

    // remove lod
    //submesh.m_lodMesh = null;
    //submesh.m_lodMaterial = null;
    //submesh.m_lodMaterialCombined = null;
    //submesh.m_lodObject = null;
}

1行目でサブメッシュのインデックスを指定します。車両の場合は3行目と4行目のコメントを入れ替えてください。また、車両の場合はインデックスは1から始まります(0はメイン扱い)。

下部のコメントを解除するとLoD消しも追加されます。