Merge remote-tracking branch 'origin/develop' into feature/HostAttack_Hoang

# Conflicts:
#	Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset
This commit is contained in:
NguyenVanDat
2025-10-27 13:41:59 +07:00
4173 changed files with 124729 additions and 8066 deletions
+1
View File
@@ -99,3 +99,4 @@ InitTestScene*.unity*
/[Aa]ssets/[Ii]nit[Tt]est[Ss]cene*.unity*
ProjectSettings/EditorBuildSettings.asset
ProjectSettings/ProjectSettings.asset
.idea
-8
View File
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>
@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RiderProjectSettingsUpdater">
<option name="singleClickDiffPreview" value="1" />
<option name="unhandledExceptionsIgnoreList" value="1" />
<option name="vcsConfiguration" value="3" />
</component>
</project>
-142
View File
@@ -1,142 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoImportSettings">
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="49831fc9-7cbb-46fb-90e9-7754de73bafb" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/ProjectSettings/EditorBuildSettings.asset" beforeDir="false" afterPath="$PROJECT_DIR$/ProjectSettings/EditorBuildSettings.asset" afterDir="false" />
<change beforePath="$PROJECT_DIR$/ProjectSettings/ShaderGraphSettings.asset" beforeDir="false" afterPath="$PROJECT_DIR$/ProjectSettings/ShaderGraphSettings.asset" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="HighlightingSettingsPerFile">
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/47e9cf78f2614f72ae7df046d55ebcf24a400/d6/1d32d257/RoleInfo.cs" root0="FORCE_HIGHLIGHTING" />
</component>
<component name="ProjectColorInfo"><![CDATA[{
"associatedIndex": 4
}]]></component>
<component name="ProjectId" id="32GqMZwPghqrbXiQw3BfBEQJAAE" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"ModuleVcsDetector.initialDetectionPerformed": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.git.unshallow": "true",
"git-widget-placeholder": "main",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"node.js.selected.package.tslint": "(autodetect)",
"nodejs_package_manager_path": "npm",
"vue.rearranger.settings.migration": "true"
}
}]]></component>
<component name="RunManager" selected="Attach to Unity Editor.Attach to Unity Editor">
<configuration name="Start Unity" type="RunUnityExe" factoryName="Unity Executable">
<option name="EXE_PATH" value="C:\Program Files\Unity\Hub\Editor\6000.0.56f1\Editor\Unity.exe" />
<option name="PROGRAM_PARAMETERS" value="-projectPath E:\PerfectWorld\perfect-world-unity -debugCodeOptimization" />
<option name="WORKING_DIRECTORY" value="E:\PerfectWorld\perfect-world-unity" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="ENV_FILE_PATHS" value="" />
<option name="REDIRECT_INPUT_PATH" value="" />
<option name="PTY_MODE" value="Auto" />
<option name="MIXED_MODE_DEBUG" value="0" />
<method v="2" />
</configuration>
<configuration name="Unit Tests (batch mode)" type="RunUnityExe" factoryName="Unity Executable">
<option name="EXE_PATH" value="C:\Program Files\Unity\Hub\Editor\6000.0.56f1\Editor\Unity.exe" />
<option name="PROGRAM_PARAMETERS" value="-runTests -batchmode -projectPath E:\PerfectWorld\perfect-world-unity -testResults Logs/results.xml -logFile Logs/Editor.log -testPlatform EditMode -debugCodeOptimization" />
<option name="WORKING_DIRECTORY" value="E:\PerfectWorld\perfect-world-unity" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="ENV_FILE_PATHS" value="" />
<option name="REDIRECT_INPUT_PATH" value="" />
<option name="PTY_MODE" value="Auto" />
<option name="MIXED_MODE_DEBUG" value="0" />
<method v="2" />
</configuration>
<configuration name="Attach to Unity Editor &amp; Play" type="UNITY_DEBUG_RUN_CONFIGURATION" factoryName="UNITY_ATTACH_AND_PLAY" show_console_on_std_err="false" show_console_on_std_out="false" port="50000" address="localhost">
<option name="allowRunningInParallel" value="false" />
<option name="listenPortForConnections" value="false" />
<option name="pid" />
<option name="projectPathOnTarget" />
<option name="runtimes">
<list />
</option>
<option name="selectedOptions">
<list />
</option>
<option name="useMixedMode" value="false" />
<method v="2" />
</configuration>
<configuration name="Attach to Unity Editor" type="UNITY_DEBUG_RUN_CONFIGURATION" factoryName="Unity Debug" show_console_on_std_err="false" show_console_on_std_out="false" port="50000" address="localhost">
<option name="allowRunningInParallel" value="false" />
<option name="listenPortForConnections" value="false" />
<option name="pid" />
<option name="projectPathOnTarget" />
<option name="runtimes">
<list />
</option>
<option name="selectedOptions">
<list />
</option>
<option name="useMixedMode" value="false" />
<method v="2" />
</configuration>
<configuration name="Attach to Device" type="UnityDevicePlayer" factoryName="UnityAttachToDevicePlayer">
<method v="2" />
</configuration>
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="49831fc9-7cbb-46fb-90e9-7754de73bafb" name="Changes" comment="" />
<created>1757057210233</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1757057210233</updated>
<workItem from="1757057212282" duration="5649000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="UnityProjectConfiguration" hasMinimizedUI="true" />
<component name="UnityProjectDiscoverer">
<option name="hasUnityReference" value="true" />
<option name="unityProject" value="true" />
<option name="unityProjectFolder" value="true" />
</component>
<component name="VcsManagerConfiguration">
<option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="true" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<breakpoint enabled="true" type="DotNet_Exception_Breakpoints">
<properties exception="System.OperationCanceledException" breakIfHandledByOtherCode="false" displayValue="System.OperationCanceledException" />
<option name="timeStamp" value="1" />
</breakpoint>
<breakpoint enabled="true" type="DotNet_Exception_Breakpoints">
<properties exception="System.Threading.Tasks.TaskCanceledException" breakIfHandledByOtherCode="false" displayValue="System.Threading.Tasks.TaskCanceledException" />
<option name="timeStamp" value="2" />
</breakpoint>
<breakpoint enabled="true" type="DotNet_Exception_Breakpoints">
<properties exception="System.Threading.ThreadAbortException" breakIfHandledByOtherCode="false" displayValue="System.Threading.ThreadAbortException" />
<option name="timeStamp" value="3" />
</breakpoint>
</breakpoints>
</breakpoint-manager>
</component>
</project>
+630
View File
@@ -0,0 +1,630 @@
#if UNITY_EDITOR
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEditor;
using UnityEngine;
public class DDSMultiSpriteConverter : EditorWindow
{
[SerializeField] private List<Texture2D> _ddsTextures = new List<Texture2D>();
[SerializeField] private bool _autoArrange = true;
[SerializeField] private int _paddingPixels = 2;
[SerializeField] private float _pixelsPerUnit = 100f;
[SerializeField] private string _outputFolder = "Assets/GeneratedSprites";
[SerializeField] private string _atlasName = "DDSAtlas";
[SerializeField] private bool _keepOriginalNames = true;
[SerializeField] private bool _createSpriteAtlas = true;
private Vector2 _scrollPosition;
private string _status = "";
private bool _isProcessing = false;
[MenuItem("Tools/Sprites/Convert DDS Files to Multi-Sprite")]
private static void Open()
{
var window = GetWindow<DDSMultiSpriteConverter>("DDS Multi-Sprite Converter");
window.minSize = new Vector2(500, 400);
window.Show();
}
private void OnGUI()
{
EditorGUILayout.LabelField("DDS Multi-Sprite Converter", EditorStyles.boldLabel);
EditorGUILayout.Space();
// Input Section
EditorGUILayout.LabelField("Input DDS Files", EditorStyles.boldLabel);
EditorGUILayout.HelpBox("Use 'Add DDS Files' for individual files or 'Add Folder' to process all .dds files in a folder (including subfolders).", MessageType.Info);
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("Add DDS Files", GUILayout.Height(25)))
{
AddDDSFiles();
}
if (GUILayout.Button("Add Folder", GUILayout.Height(25)))
{
AddDDSFolder();
}
if (GUILayout.Button("Clear All", GUILayout.Height(25)))
{
_ddsTextures.Clear();
_status = "";
}
EditorGUILayout.EndHorizontal();
// Display selected textures
if (_ddsTextures.Count > 0)
{
EditorGUILayout.Space();
EditorGUILayout.LabelField($"Selected Files ({_ddsTextures.Count}):", EditorStyles.miniLabel);
_scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition, GUILayout.Height(150));
for (int i = 0; i < _ddsTextures.Count; i++)
{
EditorGUILayout.BeginHorizontal();
var texture = _ddsTextures[i];
if (texture != null)
{
EditorGUILayout.LabelField($"{i + 1}. {texture.name}", GUILayout.Width(200));
EditorGUILayout.LabelField($"{texture.width}x{texture.height}", GUILayout.Width(80));
if (GUILayout.Button("Remove", GUILayout.Width(60)))
{
_ddsTextures.RemoveAt(i);
i--;
}
}
else
{
EditorGUILayout.LabelField($"{i + 1}. <Missing Texture>", GUILayout.Width(200));
if (GUILayout.Button("Remove", GUILayout.Width(60)))
{
_ddsTextures.RemoveAt(i);
i--;
}
}
EditorGUILayout.EndHorizontal();
}
EditorGUILayout.EndScrollView();
}
EditorGUILayout.Space();
// Settings Section
EditorGUILayout.LabelField("Settings", EditorStyles.boldLabel);
_autoArrange = EditorGUILayout.ToggleLeft("Auto-arrange sprites in atlas", _autoArrange);
_paddingPixels = EditorGUILayout.IntField("Padding (pixels)", _paddingPixels);
_pixelsPerUnit = EditorGUILayout.FloatField("Pixels Per Unit", _pixelsPerUnit);
_keepOriginalNames = EditorGUILayout.ToggleLeft("Keep original DDS names", _keepOriginalNames);
_createSpriteAtlas = EditorGUILayout.ToggleLeft("Create Sprite Atlas asset", _createSpriteAtlas);
EditorGUILayout.Space();
EditorGUILayout.LabelField("Output", EditorStyles.boldLabel);
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("Output Folder:", GUILayout.Width(100));
EditorGUILayout.SelectableLabel(_outputFolder, GUILayout.Height(16));
if (GUILayout.Button("Browse", GUILayout.Width(60)))
{
string selectedPath = EditorUtility.OpenFolderPanel("Select Output Folder", _outputFolder, "");
if (!string.IsNullOrEmpty(selectedPath))
{
string projectPath = AbsoluteToProjectPath(selectedPath);
if (!string.IsNullOrEmpty(projectPath))
{
_outputFolder = projectPath;
}
else
{
EditorUtility.DisplayDialog("Invalid Path", "Please select a folder inside the Assets directory.", "OK");
}
}
}
EditorGUILayout.EndHorizontal();
_atlasName = EditorGUILayout.TextField("Atlas Name", _atlasName);
EditorGUILayout.Space();
// Convert Button
EditorGUI.BeginDisabledGroup(_ddsTextures.Count == 0 || _isProcessing);
if (GUILayout.Button(_isProcessing ? "Processing..." : "Convert to Multi-Sprite", GUILayout.Height(35)))
{
ConvertToMultiSprite();
}
EditorGUI.EndDisabledGroup();
// Status
if (!string.IsNullOrEmpty(_status))
{
EditorGUILayout.Space();
EditorGUILayout.HelpBox(_status, MessageType.Info);
}
}
private void AddDDSFiles()
{
string path = EditorUtility.OpenFilePanelWithFilters(
"Select DDS Files",
"Assets",
new string[] { "DDS files", "dds" }
);
if (!string.IsNullOrEmpty(path))
{
string projectPath = AbsoluteToProjectPath(path);
if (!string.IsNullOrEmpty(projectPath))
{
Texture2D texture = AssetDatabase.LoadAssetAtPath<Texture2D>(projectPath);
if (texture != null && !_ddsTextures.Contains(texture))
{
_ddsTextures.Add(texture);
_status = $"Added {texture.name}";
}
}
}
}
private void AddDDSFolder()
{
string folderPath = EditorUtility.OpenFolderPanel(
"Select Folder Containing DDS Files",
"Assets",
""
);
if (!string.IsNullOrEmpty(folderPath))
{
string projectPath = AbsoluteToProjectPath(folderPath);
if (!string.IsNullOrEmpty(projectPath))
{
// Find all .dds files in the folder and subfolders
string[] ddsFiles = Directory.GetFiles(folderPath, "*.dds", SearchOption.AllDirectories);
int addedCount = 0;
foreach (string ddsFile in ddsFiles)
{
string relativePath = AbsoluteToProjectPath(ddsFile);
if (!string.IsNullOrEmpty(relativePath))
{
Texture2D texture = AssetDatabase.LoadAssetAtPath<Texture2D>(relativePath);
if (texture != null && !_ddsTextures.Contains(texture))
{
_ddsTextures.Add(texture);
addedCount++;
}
}
}
_status = $"Added {addedCount} DDS files from folder";
}
else
{
EditorUtility.DisplayDialog("Invalid Path", "Please select a folder inside the Assets directory.", "OK");
}
}
}
private void ConvertToMultiSprite()
{
if (_ddsTextures.Count == 0)
{
_status = "No DDS files selected";
return;
}
_isProcessing = true;
_status = "Processing...";
try
{
// Ensure output folder exists
EnsureFolderExists(_outputFolder);
// Calculate atlas size
var atlasSize = CalculateAtlasSize();
// Create atlas texture
var atlasTexture = CreateAtlasTexture(atlasSize);
// Pack sprites into atlas
var spriteData = PackSpritesIntoAtlas(atlasTexture, atlasSize);
// Save atlas texture
string atlasPath = SaveAtlasTexture(atlasTexture, atlasSize);
// Create sprite metadata and import
CreateSpriteMetadata(atlasPath, spriteData);
// Create Sprite Atlas asset if requested
if (_createSpriteAtlas)
{
CreateSpriteAtlasAsset(atlasPath, spriteData);
}
_status = $"Successfully converted {_ddsTextures.Count} DDS files to multi-sprite atlas!";
// Clean up
DestroyImmediate(atlasTexture);
}
catch (Exception ex)
{
Debug.LogError($"[DDSMultiSpriteConverter] Error: {ex}");
_status = $"Error: {ex.Message}";
}
finally
{
_isProcessing = false;
Repaint();
}
}
private Vector2Int CalculateAtlasSize()
{
if (_autoArrange)
{
// Calculate optimal atlas size based on sprite count and sizes
int totalPixels = 0;
int maxWidth = 0;
int maxHeight = 0;
foreach (var texture in _ddsTextures)
{
if (texture != null)
{
totalPixels += texture.width * texture.height;
maxWidth = Mathf.Max(maxWidth, texture.width);
maxHeight = Mathf.Max(maxHeight, texture.height);
}
}
// Estimate atlas size (square-ish)
int atlasSize = Mathf.CeilToInt(Mathf.Sqrt(totalPixels * 1.5f)); // 1.5x for padding
// Round up to nearest power of 2
atlasSize = Mathf.NextPowerOfTwo(atlasSize);
// Ensure minimum size
atlasSize = Mathf.Max(atlasSize, 512);
return new Vector2Int(atlasSize, atlasSize);
}
else
{
// Use fixed size
return new Vector2Int(2048, 2048);
}
}
private Texture2D CreateAtlasTexture(Vector2Int size)
{
var atlasTexture = new Texture2D(size.x, size.y, TextureFormat.RGBA32, false);
// Fill with transparent
Color[] clearPixels = new Color[size.x * size.y];
for (int i = 0; i < clearPixels.Length; i++)
{
clearPixels[i] = Color.clear;
}
atlasTexture.SetPixels(clearPixels);
return atlasTexture;
}
private List<SpriteData> PackSpritesIntoAtlas(Texture2D atlasTexture, Vector2Int atlasSize)
{
var spriteData = new List<SpriteData>();
var currentX = _paddingPixels;
var currentY = _paddingPixels;
var rowHeight = 0;
foreach (var texture in _ddsTextures)
{
if (texture == null) continue;
// Check if sprite fits in current row
if (currentX + texture.width + _paddingPixels > atlasSize.x)
{
// Move to next row
currentY += rowHeight + _paddingPixels;
currentX = _paddingPixels;
rowHeight = 0;
}
// Check if sprite fits in atlas
if (currentY + texture.height + _paddingPixels > atlasSize.y)
{
Debug.LogWarning($"Sprite {texture.name} doesn't fit in atlas, skipping...");
continue;
}
// Copy texture to atlas
CopyTextureToAtlas(texture, atlasTexture, currentX, currentY);
// Store sprite data
spriteData.Add(new SpriteData
{
name = _keepOriginalNames ? texture.name : Path.GetFileNameWithoutExtension(texture.name),
rect = new Rect(currentX, currentY, texture.width, texture.height),
originalTexture = texture
});
// Update position
currentX += texture.width + _paddingPixels;
rowHeight = Mathf.Max(rowHeight, texture.height);
}
atlasTexture.Apply();
return spriteData;
}
private void CopyTextureToAtlas(Texture2D sourceTexture, Texture2D atlasTexture, int x, int y)
{
// Make source texture readable temporarily
var sourcePath = AssetDatabase.GetAssetPath(sourceTexture);
var importer = AssetImporter.GetAtPath(sourcePath) as TextureImporter;
bool wasReadable = false;
bool wasCompressed = false;
if (importer != null)
{
wasReadable = importer.isReadable;
wasCompressed = importer.textureCompression != TextureImporterCompression.Uncompressed;
if (!wasReadable || wasCompressed)
{
importer.isReadable = true;
importer.textureCompression = TextureImporterCompression.Uncompressed;
importer.SaveAndReimport();
// Wait for reimport to complete
AssetDatabase.Refresh();
EditorUtility.SetDirty(importer);
}
}
try
{
// Create a readable copy of the texture
Texture2D readableTexture = CreateReadableTexture(sourceTexture);
if (readableTexture != null)
{
// Copy pixels from readable texture
var pixels = readableTexture.GetPixels();
atlasTexture.SetPixels(x, y, sourceTexture.width, sourceTexture.height, pixels);
// Clean up
DestroyImmediate(readableTexture);
}
else
{
Debug.LogWarning($"Could not create readable copy of texture: {sourceTexture.name}");
}
}
catch (Exception ex)
{
Debug.LogError($"Error copying texture {sourceTexture.name}: {ex.Message}");
}
finally
{
// Restore original settings
if (importer != null && (!wasReadable || wasCompressed))
{
importer.isReadable = wasReadable;
if (wasCompressed)
{
importer.textureCompression = TextureImporterCompression.Compressed;
}
importer.SaveAndReimport();
}
}
}
private Texture2D CreateReadableTexture(Texture2D source)
{
try
{
// Create a new texture with the same dimensions
var readableTexture = new Texture2D(source.width, source.height, TextureFormat.RGBA32, false);
// Use RenderTexture to copy the texture data
RenderTexture renderTexture = RenderTexture.GetTemporary(source.width, source.height, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.sRGB);
Graphics.Blit(source, renderTexture);
RenderTexture.active = renderTexture;
readableTexture.ReadPixels(new Rect(0, 0, source.width, source.height), 0, 0);
readableTexture.Apply();
RenderTexture.active = null;
RenderTexture.ReleaseTemporary(renderTexture);
return readableTexture;
}
catch (Exception ex)
{
Debug.LogError($"Error creating readable texture: {ex.Message}");
return null;
}
}
private string SaveAtlasTexture(Texture2D atlasTexture, Vector2Int size)
{
string fileName = $"{_atlasName}.png";
string filePath = Path.Combine(_outputFolder, fileName);
// Ensure unique filename
filePath = GetUniqueFilePath(filePath);
// Save as PNG
byte[] pngData = atlasTexture.EncodeToPNG();
File.WriteAllBytes(filePath, pngData);
// Import to Unity
AssetDatabase.ImportAsset(filePath);
return filePath;
}
private void CreateSpriteMetadata(string atlasPath, List<SpriteData> spriteData)
{
var importer = AssetImporter.GetAtPath(atlasPath) as TextureImporter;
if (importer == null) return;
// Configure importer
importer.textureType = TextureImporterType.Sprite;
importer.spriteImportMode = SpriteImportMode.Multiple;
importer.mipmapEnabled = false;
importer.alphaIsTransparency = true;
importer.spritePixelsPerUnit = _pixelsPerUnit;
// Create sprite metadata using SpriteMetaData
var spriteMetas = new List<SpriteMetaData>();
foreach (var data in spriteData)
{
var meta = new SpriteMetaData
{
name = SafeSpriteName(data.name),
rect = data.rect,
alignment = (int)SpriteAlignment.Center,
border = Vector4.zero,
pivot = new Vector2(0.5f, 0.5f)
};
spriteMetas.Add(meta);
}
// Use the legacy spritesheet property (works in most Unity versions)
#pragma warning disable CS0618 // Type or member is obsolete
importer.spritesheet = spriteMetas.ToArray();
#pragma warning restore CS0618 // Type or member is obsolete
importer.SaveAndReimport();
AssetDatabase.Refresh();
}
private void CreateSpriteAtlasAsset(string atlasPath, List<SpriteData> spriteData)
{
try
{
// Create Sprite Atlas asset using new keyword
var spriteAtlas = new UnityEngine.U2D.SpriteAtlas();
// Add atlas texture as packable
var atlasTexture = AssetDatabase.LoadAssetAtPath<Texture2D>(atlasPath);
if (atlasTexture != null)
{
// Use reflection to add objects to sprite atlas (for compatibility)
var addMethod = typeof(UnityEngine.U2D.SpriteAtlas).GetMethod("Add",
System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
if (addMethod != null)
{
var packableObjects = new UnityEngine.Object[] { atlasTexture };
addMethod.Invoke(spriteAtlas, new object[] { packableObjects });
}
}
// Save sprite atlas asset
string atlasAssetPath = Path.Combine(_outputFolder, $"{_atlasName}_Atlas.spriteatlas");
AssetDatabase.CreateAsset(spriteAtlas, atlasAssetPath);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
}
catch (Exception ex)
{
Debug.LogWarning($"[DDSMultiSpriteConverter] Could not create Sprite Atlas asset: {ex.Message}");
_status += " (Sprite Atlas creation failed, but multi-sprite texture was created successfully)";
}
}
private class SpriteData
{
public string name;
public Rect rect;
public Texture2D originalTexture;
}
// Utility methods
private static void EnsureFolderExists(string folderPath)
{
if (!AssetDatabase.IsValidFolder(folderPath))
{
string[] parts = folderPath.Split('/');
string currentPath = parts[0]; // "Assets"
for (int i = 1; i < parts.Length; i++)
{
string nextPath = currentPath + "/" + parts[i];
if (!AssetDatabase.IsValidFolder(nextPath))
{
AssetDatabase.CreateFolder(currentPath, parts[i]);
}
currentPath = nextPath;
}
}
}
private static string AbsoluteToProjectPath(string absolutePath)
{
if (string.IsNullOrEmpty(absolutePath)) return string.Empty;
string abs = absolutePath.Replace('\\', '/');
string data = Application.dataPath.Replace('\\', '/');
if (abs.StartsWith(data, StringComparison.OrdinalIgnoreCase))
{
return "Assets" + abs.Substring(data.Length);
}
return string.Empty;
}
private static string GetUniqueFilePath(string filePath)
{
if (!File.Exists(filePath)) return filePath;
string directory = Path.GetDirectoryName(filePath);
string fileName = Path.GetFileNameWithoutExtension(filePath);
string extension = Path.GetExtension(filePath);
int counter = 1;
string newPath;
do
{
newPath = Path.Combine(directory, $"{fileName}_{counter}{extension}");
counter++;
}
while (File.Exists(newPath));
return newPath;
}
private static string SafeSpriteName(string name)
{
if (string.IsNullOrWhiteSpace(name)) return "Sprite";
// Remove invalid characters
char[] invalidChars = Path.GetInvalidFileNameChars();
foreach (char c in invalidChars)
{
name = name.Replace(c, '_');
}
// Remove .dds extension if present
if (name.EndsWith(".dds", StringComparison.OrdinalIgnoreCase))
{
name = name.Substring(0, name.Length - 4);
}
return name;
}
}
#endif
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: a0338316fbff9784586126d8da119e57
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 95c82a23114631b428b9fff51c373a39
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bac3638b875256b479fb1e463c6e213d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 464b57f0bb61a1143a27580c5fe83dca
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+1 -1
View File
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6561a7d3c5c2b52439357c35aae55f99
guid: 3dcfb3b4bb26ed5498b46228a1bd43bd
folderAsset: yes
DefaultImporter:
externalObjects: {}
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: f6ef10a15137cb44481b51ab73c71a98
guid: 16ea7c63f8092ec4c8fb1f185967e343
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: d0079e79add41774e9c860b7d90ba716
guid: a0c5007cd03c1174089fc14b8fd768f6
TextScriptImporter:
externalObjects: {}
userData:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 46ebb45f17247e74787f77abda4499c6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: efa1fca1dda820a4886b589f636d4afc
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 9858dde21e080b445a7fcb35a8a8e57c
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 1923c26da7bfdde4a9a3a583d63e4d39
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 5d420a653e224254da790f11b402d04e
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 1b2498a68cc819645b5c36d1e5b5ebb4
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 2cd511ae725b100429a0d2a28ace4e32
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 1afc6f8221838884a9d6c69572741e49
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: c7ee7cecc911cbe4ba53a7b1e27d8a23
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 79429034f2279cc4aba3cad70922c0d3
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: e00a6ebd436895c4e9a4c1d6d0fd118a
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 0d2f90cf9dcf13d4d8ca7b36e90080a0
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 2e2efb88281a7f14db0f3d60e73c8f5f
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: f779186800cd13941bbe619d1cecd5d9
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 7bea482e8ea226a429b4b1beef9adf8f
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 8029a06799912944da92009b4cc6aaa6
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: e744b99a754778a47821c30aa97780e0
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 62dbba491cc5f4746831f3911645c1d9
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 140ec4d12e16e1442a144a69b8d6cfae
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 87e21adba4e679c429510ceb7dc9ceac
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 2d33490bf21bc024e8837fb9b9aca46a
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 3e5f9363664eb1d42af3d418de1748d0
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: acd44b73ff62d8140bb14e1b797c8eeb
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 30f9622eecd0370449b6536451d4c184
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 8da0b9ee016433247ab193a8d46f04bb
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: f1c842e7f2c2a784bad980fe3cb0b634
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: d30d48684276a354b8e49b1e21d46cf0
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 9d19076004f09e84aa5750ef8c825acb
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 26207e17f6dff00468ece2550e62acf4
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 7966db5f91ac5064ab4ac3825f6c832f
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: fae390cf668e7b943b9a56c22089534a
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 95356cff1f892314f8a568e3340df537
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: d14074c2f1eb29a4da39441ae93cb92f
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: dece377534c8e5648a2969aa7c808672
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 68b0c61121672a7498d3e708c8333118
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 4075a4aa78998e64990aeea258d41d0f
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 30fd8162e7535e84f906acfeea10f03a
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: ebd53ae0348e8744580b91833f6c6c54
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: bf7e8b7945f996b4db7df10a9e05e687
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: ac750e478a8fcf34489d1882e0956871
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 669823e0a83b0024eb5823c6cb3027e7
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: b639988cd06b51047a468f37bfd9ffc2
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: d482babb03064f942adf1fc6e7ca2dcd
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: dc189c0d552bc0b4fa4ae603ed2978d5
IHVImageFormatImporter:
externalObjects: {}
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
isReadable: 0
sRGBTexture: 1
streamingMipmaps: 0
streamingMipmapsPriority: 0
ignoreMipmapLimit: 0
mipmapLimitGroupName:
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More