UGUI,UGUI的Sprite和UI是不能一起使用的吗

UGUI,UGUI的Sprite和UI是不能一起使用的吗,第1张

首先你用sprite的目的 估计是 做动画精灵用。当然也不排除其他。

我尝试着 诱导的思维来回答你的问题。

你如果 只是想用一张图片显示,那直接image 然后导入sourse image中就ok,所以我排除你肯定不是仅仅想

搞个图片显示这么简单。

那么就是 想让 ui变的 更加 生动化。

那么我们第一个想法就是 搞个动画吧。在蛮牛第二季里面很清楚告诉我们动画怎么做,所以我不需要指导你怎么搞出动画,那么后面的问题来了,你发现动画 被 ui挡住了。

这里开始说重点,ugui的canvas有三个模式,默认是第一个,ui在最前面,你如果用默认的,打死也别想把

动画或粒子或其他 放到 ui 上层去。所以你得选第二个。然后你把你的动画加入到canvas中,你估计还要搞清一个事情,第二个是 摄像机层排序,也就是 如果两个摄像机,一个在1层 ,另一个在2层,那么canvas绑哪个摄像机,哪个层就对应到canvas上。但如果是动画和ui在一个摄像机,那么你也可以让动画的对象在

ui的下面,因为同一个层是默认一层层油漆刷法的。

告诉你这么多乱七八糟的事情,是想告诉你,一个问题可以引发更多的知识,如果我只告诉你答案。

那么你除了 回答谢谢之外,一点帮助都没有。

因为Panel是Layout,是Widget的子类,而Sprite没有继承Widget

于是UILayout.cpp里面

void Layout::addChild(Node *child, int zOrder, int tag)

{

supplyTheLayoutParameterLackToChild(static_cast<Widget*>(child))

Widget::addChild(child, zOrder, tag)

_doLayoutDirty = true

}

这个static_cast说明了,layout上只能添加Widget的子类。。。

我该怎么办?

当然绕弯子的方法也是有的,

我在Layout上放个ImageView,这个ImageView的getVirtualRenderer() 是个Sprite,

这样我可以把非Widget的Node添加到这个Sprite上。。。。

如何创建Sprite

创建一个Sprite可以遵循如下步骤

将一张图片拖动到Project视图中的某个文件夹的方式来添加Sprite资源。

修改Sprite资源的各项属性,如果是SpriteSheet的话还要对它在Sprite Editor中进行分割。

将Sprite资源拖动到Scene视图中,或者按住ctrl键同时选中SpriteSheet中的几张图片拖动到Scene视图中,这种方式会同时创建出一个动画。

创建Sprite的过程中请注意:

Sprite是作为Sprite Renderer组件的一个属性来添加到一个GameObject中的。

在Sprite Renderer中的Sorting Layer属性允许你设置Sprite被渲染的优先级。

SpriteRenderer使用在Sprite属性中的Texture, 但是使用Material中的Shader(着色器) ,默认选择的 Sprites/Default 这种Shader是忽略光照的,而Sprites/Diffuse 这种Shader则是不会忽略光照的。如果你将Material设置为None时,你会发现无法显示Sprite,因为你没有对这个Sprite进行着色。


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

原文地址: http://outofmemory.cn/bake/11917403.html

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

发表评论

登录后才能评论

评论列表(0条)

保存