우원진*_*우원진 4 c# unity-game-engine
我尝试通过脚本切片 Sprite(类型转换为Texture2D),
当项目在Android或IOS平台上运行时
通过脚本可以吗?
我尝试使用 UnityEditor 类,它可以在计算机上使用
但是当我尝试构建 Android 或 IOS 时却失败了。
void OnPreprocessTexture()
{
TextureImporter textureImporter = (TextureImporter)assetImporter;
textureImporter.textureType = TextureImporterType.Sprite;
textureImporter.spriteImportMode = SpriteImportMode.Multiple;
textureImporter.mipmapEnabled = false;
textureImporter.filterMode = FilterMode.Point;
}
public void OnPostprocessTexture(Texture2D texture)
{
Debug.Log("Texture2D: (" + texture.width + "x" + texture.height + ")");
int spriteSize = 350;
int colCount = texture.width / spriteSize;
int rowCount = texture.height / spriteSize;
List<SpriteMetaData> metas = new List<SpriteMetaData>();
for (int r = 0; r < rowCount; ++r)
{
for (int c = 0; c < colCount; ++c)
{
SpriteMetaData meta = new SpriteMetaData();
meta.rect = new Rect(c * spriteSize, r * spriteSize, spriteSize, spriteSize);
meta.name = c + "-" + r;
metas.Add(meta);
}
}
TextureImporter textureImporter = (TextureImporter)assetImporter;
textureImporter.spritesheet = metas.ToArray();
}
public void OnPostprocessSprites(Texture2D texture, Sprite[] sprites)
{
Debug.Log("Sprites: " + sprites.Length);
}
Run Code Online (Sandbox Code Playgroud)
在 Android 或 IOS 上运行项目时不起作用
[我想要的是]
程序
在Android或IOS平台上运行时
1)从服务器接收一些图像(URL或文件)
2) 在C#脚本上加载图像
3) 将图像类型更改为纹理或精灵等...
4)切片图像(不要使用编辑器)
5) 保存图像片段
6)使用一张图像
我想要的是所有程序都由脚本完成
TextureImporter属于UnityEditor命名空间,该命名空间不存在于构建的应用程序中,而仅存在于 Unity 编辑器本身中。\xe2\x86\x92 你不能使用这个!
您可以做的是使用 Sprite.Create给定的 生成精灵Texture2D。
如果实际上只是剪切纹理的某个部分以将其用作精灵,那么您只需在参数中定义rect要从该图像使用的纹理部分。
// Wherever you get the texture from\nTexture texture = ...;\n \n// E.g. for using the center of the image\n// but half of the size\nvar rect = new Rect(texture.width / 4, texture.height / 4, texture.width / 2, texture.height / 2);\n\n// Create the sprite\nvar sprite = Sprite.Create(texture, rect, Vector2.one * 0.5f);\nRun Code Online (Sandbox Code Playgroud)\n哪儿rect是
\n\n精灵在原始纹理上的位置,以像素为单位指定。
\n
如果您还想要一个切片边框(通常在Sprite EditorUnity 中定义),则有一个重载,Sprite.Create它还需要一个border参数,例如
var borders = new Vector4(2, 2, 2, 2);\nvar sprite = Sprite.Create(texture, rect, Vector2.one * 0.5f, 100, SpriteMeshType.FullRect, borders);\nRun Code Online (Sandbox Code Playgroud)\n在哪里border
\n\n返回精灵的边框大小。
\n
\n\nX=左,Y=底部,Z=右,W=顶部。
\n
API 没有说,但我猜想rect这些值也以像素为单位。
| 归档时间: |
|
| 查看次数: |
9328 次 |
| 最近记录: |