@@ -77,7 +77,7 @@ private void AutoDetectAvatarPrefabsAndNames()
7777 string commonPath = GetCommonPath ( variantPaths ) ;
7878 if ( string . IsNullOrEmpty ( commonPath ) ) return ;
7979
80- Debug . Log ( $ "検出されたアバターデータフォルダ: { commonPath } ") ;
80+ Debug . Log ( $ "[PosingSystem] 検出されたアバターデータフォルダ: { commonPath } ") ;
8181
8282 // 共通フォルダ配下のすべてのPrefabとFBXを検索
8383 var allAssets = AssetDatabase . FindAssets ( "t:GameObject" , new [ ] { commonPath } ) ;
@@ -128,7 +128,7 @@ private void AutoDetectAvatarPrefabsAndNames()
128128 }
129129 }
130130
131- Debug . Log ( $ "自動検出完了: { targetAvatarPrefabs . Count } 個のPrefab/FBX, { targetGameObjectNames . Count } 個の名前") ;
131+ Debug . Log ( $ "[PosingSystem] 自動検出完了: { targetAvatarPrefabs . Count } 個のPrefab/FBX, { targetGameObjectNames . Count } 個の名前") ;
132132 }
133133
134134 private string GetCommonPath ( List < string > paths )
@@ -288,64 +288,28 @@ private void CreatePreset()
288288 }
289289
290290 // PosingSystemResourceFolderを探す
291- var resourceFolderGuids = AssetDatabase . FindAssets ( "l:PosingSystemResourceFolder" ) ;
292- string resourceFolderPath = "" ;
293-
294- if ( resourceFolderGuids . Length > 0 )
295- {
296- // 複数ある場合は最初のものを使用するか、特定のルールで選ぶか。ここでは最初に見つかったフォルダを使用。
297- resourceFolderPath = AssetDatabase . GUIDToAssetPath ( resourceFolderGuids [ 0 ] ) ;
298- if ( ! AssetDatabase . IsValidFolder ( resourceFolderPath ) )
299- {
300- resourceFolderPath = "Assets" ; // フォールバック
301- }
302- }
303- else
304- {
305- // ラベルが見つからない場合、現在のスクリプトの位置から推測するか、Assets直下にする
306- resourceFolderPath = "Assets" ;
307- }
308-
309- // Generatedフォルダを確保
310- string generatedFolderPath = Path . Combine ( resourceFolderPath , "Generated" ) . Replace ( "\\ " , "/" ) ;
311- if ( ! AssetDatabase . IsValidFolder ( generatedFolderPath ) )
312- {
313- AssetDatabase . CreateFolder ( resourceFolderPath , "Generated" ) ;
314- }
291+ var generatedFolderPath = PosingSystemEditor . GetGeneratedFolderPath ( ) ;
315292
316293 // フォルダ作成 (名前重複回避)
317- string targetFolderName = avatarName ;
318- string targetFolderPath = Path . Combine ( generatedFolderPath , targetFolderName ) . Replace ( "\\ " , "/" ) ;
319-
320- if ( AssetDatabase . IsValidFolder ( targetFolderPath ) )
321- {
322- // 重複回避ロジック
323- int count = 1 ;
324- while ( AssetDatabase . IsValidFolder ( targetFolderPath + " " + count ) )
325- {
326- count ++ ;
327- }
328- targetFolderName = targetFolderName + " " + count ;
329- targetFolderPath = targetFolderPath + " " + count ;
330- }
331-
332- AssetDatabase . CreateFolder ( generatedFolderPath , targetFolderName ) ;
294+ string targetFolderPath = Path . Combine ( generatedFolderPath , avatarName ) . Replace ( "\\ " , "/" ) ;
295+ targetFolderPath = AssetDatabase . GenerateUniqueAssetPath ( targetFolderPath ) ;
296+ Directory . CreateDirectory ( targetFolderPath ) ;
333297
334298 try
335299 {
336300 // PosingSystemをクローンして初期化
337301 GameObject tempObj = Instantiate ( sourcePosingSystem . gameObject ) ;
338302 PosingSystem tempPs = tempObj . GetComponent < PosingSystem > ( ) ;
339-
303+
340304 // プロパティ初期化
341305 tempPs . developmentMode = false ;
342306 tempPs . previewAvatarObject = null ; // プレビューアバターは保存しない
343307 tempPs . isWarning = false ;
344308 tempPs . isError = false ;
345-
309+
346310 // 調整アニメーションをコピーして参照を更新
347311 CopyAndUpdateAdjustmentClips ( tempPs , targetFolderPath ) ;
348-
312+
349313 // Preset作成
350314 Preset preset = new Preset ( tempPs ) ;
351315 string presetPath = Path . Combine ( targetFolderPath , avatarName + "_Preset.preset" ) . Replace ( "\\ " , "/" ) ;
@@ -357,12 +321,12 @@ private void CreatePreset()
357321 // PosingSystemPresetDefines作成
358322 var defines = CreateInstance < PosingSystemPresetDefines > ( ) ;
359323 var presetDefine = new PosingSystemPresetDefines . PresetDefine ( ) ;
360-
324+
361325 presetDefine . avatarName = avatarName ;
362326 presetDefine . prefabs = new List < GameObject > ( applicablePrefabs . Where ( x => x != null ) ) ;
363327 presetDefine . preset = preset ;
364328 presetDefine . prefabsNames = new List < string > ( targetGameObjectNames . Where ( x => ! string . IsNullOrEmpty ( x ) ) ) ;
365-
329+
366330 // Prefab GUIDのハッシュ化
367331 presetDefine . prefabsHashes = new List < string > ( ) ;
368332 foreach ( var prefab in targetAvatarPrefabs )
@@ -383,7 +347,7 @@ private void CreatePreset()
383347
384348 AssetDatabase . SaveAssets ( ) ;
385349 AssetDatabase . Refresh ( ) ;
386-
350+
387351 // 作成したフォルダを選択状態にする
388352 var folderObj = AssetDatabase . LoadAssetAtPath < UnityEngine . Object > ( targetFolderPath ) ;
389353 Selection . activeObject = folderObj ;
0 commit comments