57 lines
1.6 KiB
C#
57 lines
1.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using Unity.Mathematics;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
|
|
namespace TexturePacker
|
|
{
|
|
public sealed class TextureMapInfo : ScriptableObject
|
|
{
|
|
public const string TextureMapDir = "Assets/Editor/TexturePack/Resources";
|
|
|
|
[Serializable]
|
|
public struct TextureInfo
|
|
{
|
|
public Texture2D OriginTexture;
|
|
public int ArrayIndex;
|
|
public float2 Offset;
|
|
}
|
|
|
|
[Serializable]
|
|
public enum EPackType
|
|
{
|
|
Atlas,
|
|
Array
|
|
}
|
|
|
|
public EPackType PackType = EPackType.Atlas;
|
|
public SerializedDictionary<Texture2D, TextureInfo> OriginTexture2TextureInfo = new();
|
|
public List<Texture2D> Textures;
|
|
public Texture2D TextureAtlas;
|
|
public float AtlasScale;
|
|
public string TextureAtlasPath;
|
|
public Texture2DArray TextureArray;
|
|
public string TextureArrayPath;
|
|
public bool IsNormalMap;
|
|
|
|
[ContextMenu("Test")]
|
|
private void Test()
|
|
{
|
|
Texture2D offsetTex = new Texture2D(Textures.Count, 1, TextureFormat.RG16, false);
|
|
for (int i = 0; i < Textures.Count; i++)
|
|
{
|
|
var tex = Textures[i];
|
|
var info = OriginTexture2TextureInfo[tex];
|
|
offsetTex.SetPixel(i, 0, new Color(info.Offset.x, info.Offset.y, 0));
|
|
}
|
|
|
|
var path = EditorUtility.SaveFilePanelInProject("保存offset图", "OffsetMap", "png", "");
|
|
File.WriteAllBytes(path, offsetTex.EncodeToPNG());
|
|
}
|
|
}
|
|
|
|
}
|