Unity 图文混排 生成SpriteAsset

Unity 图文混排 生成SpriteAsset,第1张

5导出之后会遇到切割位置信息不对,这时候需要用tpsheet中的数据设置一次。

8最后找到TMP Settings 配置文件,将新生成的Sprite Asset 设置为默认。

9直接设置名字就可以生效。

"You must earn 1 <sprite name="currency_diamond_big"/> character if you recruit 10 times"

在unity的sprite中贴图的方法如下:

在SpriteAnimatorcs脚本中添加代码

using UnityEngine;

using SystemCollections;

/// Sprite 动画播放器

public class SpriteAnimator : MonoBehaviour {

/// Sprite渲染器

protected SpriteRenderer m_sprite;

/// Sprite动画帧

protected Sprite[] m_clips;

/// 动画计时器(默认每隔01秒更新一帧)

protected float timer = 01f;

/// 贴图文件名前缀

public string m_sprite_name = "player00";

/// 贴图文件起始帧数字

public int m_start_frame = 0;

/// 动画的帧数

public int m_frame_count =8;

/// 跳帧数量

public int m_offset_frame = 4;

/// 当前的帧数

protected int m_frame = 0;

}

SpriteRenderer是Sprite的渲染器,只有通过它才能在屏幕上显示出Sprite的图像。

m_clips是一个Sprite数组,用来保存动画所需要的Sprite。

在这个例子中,我们使用的动画贴图文件命名都采用数字后缀,表示动画帧,并且跳帧,如“player0016,player0020,player0024……”。m_start_frame表示第一帧的数字,在这个例子中是指16, m_offset_frame表示跳帧,在这个例子中是指4。出现跳帧数字是因为这些图像都是通过3D软件渲染而成,在渲染的时候进行了跳帧设置,否则这个动画需要几十张来表现。

void Start () {

// 初始化动画帧数组

m_clips = new Sprite[m_frame_count];

for (int i = 0; i < m_frame_count; i++)

{

// 当前帧

int currentframe = m_start_frame + i m_offset_frame;

// 计算贴图名称

string spritename = stringFormat(m_sprite_name + "{0:D2}", currentframe);

// 从Resources目录读取贴图

Texture2D texture = (Texture2D)ResourcesLoad(spritename);

// 由贴图创建出Sprite

m_clips[i] = SpriteCreate(texture,

new Rect(0, 0, texturewidth, textureheight),

new Vector2(05f, 02f));

}

// 为当前GameObject添加一个Sprite渲染器

m_sprite = thisgameObjectAddComponent<SpriteRenderer>();

// 设置第1帧的Sprite

m_spritesprite = m_clips[m_frame];

}

有的人可能和我一样,刚开始学unity,所以对有的东西不是很熟,就不知道unity spritesheet怎么用,其实我也一样,所以在网上找了一下。

如果你从来没有使用过spritesheet,你可以把它看作是一张巨大的,你可以把许许多多的sprite放进去。与spritesheet对应的,还有一个plist文件,这个文件指定了每个独立的sprite在这张“大图”里面的位置和大小,当你在代码之间需要使用这个sprite的时候,就可以很方面地使用plist文件中的这些信息来获取sprite。

为什么这会提高效率呢?因为cocos2d对它进行了优化!如果你使用spritesheet来获取sprite,那么当场景中有许多sprite的时候,如果这些sprite共享一个spritesheet,那么cocos2d就会使用一次OpenGL ES调用来渲染这些sprite。但是,如果是单个的sprite的话,那么就会有N次OpenGL ES call,这个代价是相当昂贵的。

简而言之--使用spritesheet会更快,尤其是当你有很多的sprite的时候!(使用spritesheet还可以减少游戏占用的内存大小。

由于要使用spritesheet,你当然可以手工用编辑器来创建,然后创建一个plist指定每一个sprite在spritesheet里面的位置和大小。然后,那样将会是一个非常傻比的行为,因为Robert Payne已经开发出了一个非常好用的工具,叫做Zwoptex,它可以帮助我们自动生成这一切!

Zwoptex To Victory!

如果你还没有这个工具,那么可以从 zwoptexappcom上面下载。它有一个免费的Flash版本和一个收费的安装版,但是最近我使用的是可安装的版本。

安装完这个工具之后,选择File\New,然后你将会看到一个空白窗口。打开你先前下载的熊的,并把它们拖到这个窗口里面。

你会看到,所有的熊的都层叠在一起。我们需要将他们摊开放在spritesheet上面,因此在Layout部分点击“Apply”来排序。

当你这样做以后,你会注意到,默认的画布(512×512)太小了,不足以把所有的熊装下。所以,还会有一些层叠在一起。因此,我们在Canvas部分把画布改成512×102 4,然后在Layout部分点击“Apply”来重新排序它们。

我们马上要完成了--但是,请注意,有些熊的比其它宽一些。如果你看一下原图,你会发现和原图尺寸不一样了--这是因为,Zwoptex在默认情况下会把周围的透明区域剪裁掉。

对于这些,它们并不是我们最终需要的,因为对于动画来说,这些的位置信息已经错乱了(由于透明区域的裁剪)。还好,这非常容易解决--在工具栏上选择”Untrim“,然后再点”Apply“。

以上就是关于Unity 图文混排 生成SpriteAsset全部的内容,包括:Unity 图文混排 生成SpriteAsset、如何在unity的sprite中贴图、unity spritesheet怎么用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9348993.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存