gitで管理している際にpull すると子要素のレイヤーがデフォルトになる

【Cubism SDKのバージョン】(Cubism 5 SDK for Unity R4_1 )
【OS名・バージョン】(Windows11)
【開発使用ツール】(Unity 6000.3.2)
【不具合の状況】

  • UnityにLive2Dをインポート後、プロジェクト側でLive2D.prefabのオブジェクトレイヤーを変更します ( 例: Default → Live2D レイヤーに変更します)

  • 変更内容をgitにpushし、別のPCで変更内容をpullすると親のレイヤーは Live2D ですが子要素のレイヤーは Default に初期化されています。

  • 上記現象の防ぐ方法はございますか? よろしくおねがいします。

@gomei

いつも弊社製品をご愛顧くださり誠にありがとうございます。
Live2Dスタッフでございます。

オブジェクトレイヤーを設定したモデルのプレハブは、シーンに配置しているものでしょうか?
それともProjectウィンドウ内のプレハブでしょうか?

よろしくお願いいたします。

返信ありがとうございます。

レイヤーを設定したプレハブは Projectウィンドウ内のプレハブ です。

よろしくお願いします。

@gomei

回答ありがとうございます。

調査したところ、Cubism SDK for Unityの再インポート処理は、既存のプレハブのレイヤー情報を引き継ぎしていませんでした。

当該の2箇所に、以下のように記述を追加することでこちらの現象を回避できるかご確認していただけませんでしょうか?

  1. CubismModel3JsonImporter#L315 に以下を追加
var sourceChildCount = source.transform.childCount;
var destinationChildCount = destination.transform.childCount;

for (var i = 0; i < sourceChildCount; i++)
{
    if(destinationChildCount <= i)
    {
        break;
    }

    if (source.transform.GetChild(i).gameObject.name !=
        destination.transform.GetChild(i).gameObject.name)
    {
        continue;
    }

    destination.transform.GetChild(i).gameObject.layer =
        source.transform.GetChild(i).gameObject.layer;
}
  1. CubismModel3JsonImporter#L357 に以下を追加
destinationT.gameObject.layer = sourceT.gameObject.layer;

よろしくお願いいたします。

返信ありがとうございます。

上記の変更を適用したところ、子要素のレイヤーも保持されるようになりました。

ありがとうございました!

「いいね!」 1