我尝试着 诱导的思维来回答你的问题。
你如果 只是想用一张图片显示,那直接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进行着色。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)