private void CloneAssets() { DeleteClonedAssets(); var clonedAssets = new List <string>(); AssetDatabase.StartAssetEditing(); foreach (var cloneAsset in cloneAssets) { if (string.IsNullOrEmpty(cloneAsset.Source) || string.IsNullOrEmpty(cloneAsset.To)) { Debug.LogError("アセットコピーの設定が正しくありません."); continue; } var projectFolder = UnityPathUtility.GetProjectFolderPath(); var source = PathUtility.RelativePathToFullPath(projectFolder, cloneAsset.Source); var dest = PathUtility.RelativePathToFullPath(projectFolder, cloneAsset.To); // 除外対象か判定. Func <string, bool> ignoreCheck = x => { return(Path.GetExtension(x) != ".meta" && !string.IsNullOrEmpty(Path.GetFileNameWithoutExtension(x))); }; // メタファイルはコピーしない. var cloned = DirectoryUtility.Clone(source, dest, ignoreCheck) .Select(x => UnityPathUtility.ConvertFullPathToAssetPath(x)) .ToArray(); foreach (var item in cloned) { AssetDatabase.ImportAsset(item); } clonedAssets.AddRange(cloned); } AssetDatabase.StopAssetEditing(); Prefs.clonedAssets = clonedAssets.Select(x => AssetDatabase.AssetPathToGUID(x)).ToArray(); }