暫無描述
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TextureGeneration.cs 5.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using System;
  2. using System.Collections.Generic;
  3. using Unity.Collections;
  4. using UnityEditor.AssetImporters;
  5. using UnityEditor.U2D.Aseprite.Common;
  6. using UnityEngine;
  7. namespace UnityEditor.U2D.Aseprite
  8. {
  9. internal static class TextureGeneration
  10. {
  11. public static TextureGenerationOutput Generate(AssetImportContext ctx,
  12. NativeArray<Color32> imageData,
  13. int textureWidth,
  14. int textureHeight,
  15. SpriteMetaData[] sprites,
  16. in List<TextureImporterPlatformSettings> allPlatformSettings,
  17. in TextureImporterSettings textureImporterSettings,
  18. string spritePackingTag,
  19. SecondarySpriteTexture[] secondarySpriteTextures)
  20. {
  21. if (!imageData.IsCreated || imageData.Length == 0)
  22. return new TextureGenerationOutput();
  23. var output = new TextureGenerationOutput();
  24. UnityEngine.Profiling.Profiler.BeginSample("ImportTexture");
  25. try
  26. {
  27. var platformSettings = TextureImporterUtilities.GetPlatformTextureSettings(ctx.selectedBuildTarget, in allPlatformSettings);
  28. var textureSettings = textureImporterSettings.ExtractTextureSettings();
  29. textureSettings.assetPath = ctx.assetPath;
  30. textureSettings.enablePostProcessor = true;
  31. textureSettings.containsAlpha = true;
  32. textureSettings.hdr = false;
  33. var textureAlphaSettings = textureImporterSettings.ExtractTextureAlphaSettings();
  34. var textureMipmapSettings = textureImporterSettings.ExtractTextureMipmapSettings();
  35. var textureCubemapSettings = textureImporterSettings.ExtractTextureCubemapSettings();
  36. var textureWrapSettings = textureImporterSettings.ExtractTextureWrapSettings();
  37. switch (textureImporterSettings.textureType)
  38. {
  39. case TextureImporterType.Default:
  40. output = TextureGeneratorHelper.GenerateTextureDefault(imageData, textureWidth, textureHeight, textureSettings, platformSettings, textureAlphaSettings, textureMipmapSettings, textureCubemapSettings, textureWrapSettings);
  41. break;
  42. case TextureImporterType.NormalMap:
  43. var textureNormalSettings = textureImporterSettings.ExtractTextureNormalSettings();
  44. output = TextureGeneratorHelper.GenerateNormalMap(imageData, textureWidth, textureHeight, textureSettings, platformSettings, textureNormalSettings, textureMipmapSettings, textureCubemapSettings, textureWrapSettings);
  45. break;
  46. case TextureImporterType.GUI:
  47. output = TextureGeneratorHelper.GenerateTextureGUI(imageData, textureWidth, textureHeight, textureSettings, platformSettings, textureAlphaSettings, textureMipmapSettings, textureWrapSettings);
  48. break;
  49. case TextureImporterType.Sprite:
  50. var textureSpriteSettings = textureImporterSettings.ExtractTextureSpriteSettings();
  51. textureSpriteSettings.packingTag = spritePackingTag;
  52. textureSpriteSettings.qualifyForPacking = !string.IsNullOrEmpty(spritePackingTag);
  53. textureSpriteSettings.spriteSheetData = new SpriteImportData[sprites.Length];
  54. textureSettings.npotScale = TextureImporterNPOTScale.None;
  55. textureSettings.secondaryTextures = secondarySpriteTextures;
  56. for (var i = 0; i < sprites.Length; ++i)
  57. textureSpriteSettings.spriteSheetData[i] = sprites[i];
  58. output = TextureGeneratorHelper.GenerateTextureSprite(imageData, textureWidth, textureHeight, textureSettings, platformSettings, textureSpriteSettings, textureAlphaSettings, textureMipmapSettings, textureWrapSettings);
  59. break;
  60. case TextureImporterType.Cursor:
  61. output = TextureGeneratorHelper.GenerateTextureCursor(imageData, textureWidth, textureHeight, textureSettings, platformSettings, textureAlphaSettings, textureMipmapSettings, textureWrapSettings);
  62. break;
  63. case TextureImporterType.Cookie:
  64. output = TextureGeneratorHelper.GenerateCookie(imageData, textureWidth, textureHeight, textureSettings, platformSettings, textureAlphaSettings, textureMipmapSettings, textureCubemapSettings, textureWrapSettings);
  65. break;
  66. case TextureImporterType.Lightmap:
  67. output = TextureGeneratorHelper.GenerateLightmap(imageData, textureWidth, textureHeight, textureSettings, platformSettings, textureMipmapSettings, textureWrapSettings);
  68. break;
  69. case TextureImporterType.SingleChannel:
  70. output = TextureGeneratorHelper.GenerateTextureSingleChannel(imageData, textureWidth, textureHeight, textureSettings, platformSettings, textureAlphaSettings, textureMipmapSettings, textureCubemapSettings, textureWrapSettings);
  71. break;
  72. default:
  73. Debug.LogAssertion("Unknown texture type for import");
  74. output = default(TextureGenerationOutput);
  75. break;
  76. }
  77. }
  78. catch (Exception e)
  79. {
  80. Debug.LogError($"Unable to generate Texture2D. Possibly texture size is too big to be generated. Error: {e}", ctx.mainObject);
  81. }
  82. finally
  83. {
  84. UnityEngine.Profiling.Profiler.EndSample();
  85. }
  86. return output;
  87. }
  88. }
  89. }