В статике нужно запустить корутину, без нее все висит.
Синтаксис:
Используется csharp
[MenuItem("Assets/CreateTexture")]
static void CreateTexture()
{
Read();
}
static void Read()
{
textureTGA = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/Textures/fabric_new2VRayDiffuseFilterMap.tga", typeof(Texture2D)); // create texture
Texture2D _tex = AssetDatabase.LoadAssetAtPath("Assets/Textures/fabric_new2VRayDiffuseFilterMap.png", typeof(Texture2D)) as Texture2D; // load texture
texturePng = _tex;
UpdateStaic();
//_tex.LoadImage(textureTGA.EncodeToPNG());
//_tex.Apply();
//File.WriteAllBytes(Application.dataPath + "/Textures/fabric_new2VRayDiffuseFilterMap" + ".png", _tex.EncodeToPNG());
//AssetDatabase.Refresh();
}
public static void UpdateStaic()
{
for (int y = 0; y<textureTGA.height; y++)
{
for (int x = 0; x< textureTGA.width; x++)
{
IEnumerator e = ConvertedAlphaChanel.Conv(ConvertTgaFromPng.textureTGA, ConvertTgaFromPng.texturePng, new Vector2(x,y));
e.MoveNext();
}
}
}
public class ConvertedAlphaChanel : MonoBehaviour
{
public static IEnumerator Conv(Texture2D texture2d, Texture2D png,Vector2 coord)
{
Color color = new Color();
color = (texture2d.GetPixel((int)coord.x, (int)coord.y).a < 128) ? new Color(128, 128, 128, 128) : texture2d.GetPixel((int)coord.x, (int)coord.y);
Debug.Log(color);
png.SetPixel((int)coord.x, (int)coord.y,color);
yield return null;
}
}
static void CreateTexture()
{
Read();
}
static void Read()
{
textureTGA = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/Textures/fabric_new2VRayDiffuseFilterMap.tga", typeof(Texture2D)); // create texture
Texture2D _tex = AssetDatabase.LoadAssetAtPath("Assets/Textures/fabric_new2VRayDiffuseFilterMap.png", typeof(Texture2D)) as Texture2D; // load texture
texturePng = _tex;
UpdateStaic();
//_tex.LoadImage(textureTGA.EncodeToPNG());
//_tex.Apply();
//File.WriteAllBytes(Application.dataPath + "/Textures/fabric_new2VRayDiffuseFilterMap" + ".png", _tex.EncodeToPNG());
//AssetDatabase.Refresh();
}
public static void UpdateStaic()
{
for (int y = 0; y<textureTGA.height; y++)
{
for (int x = 0; x< textureTGA.width; x++)
{
IEnumerator e = ConvertedAlphaChanel.Conv(ConvertTgaFromPng.textureTGA, ConvertTgaFromPng.texturePng, new Vector2(x,y));
e.MoveNext();
}
}
}
public class ConvertedAlphaChanel : MonoBehaviour
{
public static IEnumerator Conv(Texture2D texture2d, Texture2D png,Vector2 coord)
{
Color color = new Color();
color = (texture2d.GetPixel((int)coord.x, (int)coord.y).a < 128) ? new Color(128, 128, 128, 128) : texture2d.GetPixel((int)coord.x, (int)coord.y);
Debug.Log(color);
png.SetPixel((int)coord.x, (int)coord.y,color);
yield return null;
}
}
собственно что я делаю?=) Нужно преконвертить .tga ->png и в png убрать альфу. Бросил часть кода в которой проблемы возникли.