unity3d ugui 动画 ugui添加动画 需要额外的子物体么

01:11 提问
unity ugui如何用scrollview展示多个不同的3d物体
如题,将三维物体直接做成scrollview的item子物体,mask遮挡不了三维物体。
用rawimage,只有一台摄像机的情况下,又不太方便裁切摄像机的rendertexture。
大家有好的思路吗?
630关注|379收录
598关注|1139收录
1800关注|819收录&&国之画&&&& &&
版权所有 京ICP备号-2
迷上了代码!扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
关注:1285
当前位置: &
__________________________________________________________________________________
开发者干货区版块规则:
  1、文章必须是图文形式。(至少2幅图)
& && &2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
& && &3、本版块只支持在游戏蛮牛原创首发,不支持转载。
& && &4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
& && &5、......
__________________________________________________________________________________
查看: 5446|回复: 18
UGUI实现序列帧动画
本帖为抢楼帖,欢迎抢楼!&
9排名30昨日变化主题帖子积分
在线时间1299 小时
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
的动画系统已经很牛叉功能很全面了,不过对我等喜欢造锤子的程序员,还是喜欢自己实现一些东西。
废话少说,上代码。 需要注意的是下面的类需要挂到一个有Image脚本的GameObject上,作为“shower”。
[C#] 纯文本查看 复制代码using UnityE
using System.C
using System.Collections.G
using UnityEngine.UI;
public class UMovie : MonoBehaviour
public string movieN
public List&Sprite& lS
public float fSep = 0.05f;
public float showerWidth
if (shower == null)
return shower.rectTransform.rect.
public float showerHeight
if (shower == null)
return shower.rectTransform.rect.
void Awake()
shower = GetComponent&Image&();
if (string.IsNullOrEmpty(movieName))
movieName = &movieName&;
void Start()
Play(curFrame);
public void Play(int iFrame)
if (iFrame &= FrameCount)
iFrame = 0;
shower.sprite = lSprites[iFrame];
curFrame = iF
shower.SetNativeSize();
if (dMovieEvents.ContainsKey(iFrame))
foreach (delegateMovieEvent del in dMovieEvents[iFrame])
int curFrame = 0;
public int FrameCount
return lSprites.C
float fDelta = 0;
void Update()
fDelta += Time.deltaT
if (fDelta & fSep)
fDelta = 0;
curFrame++;
Play(curFrame);
public delegate void delegateMovieEvent();
private Dictionary&int, List&delegateMovieEvent&& dMovieEvents = new Dictionary&int, List&delegateMovieEvent&&();
public void RegistMovieEvent(int frame, delegateMovieEvent delEvent)
if (!dMovieEvents.ContainsKey(frame))
dMovieEvents.Add(frame, new List&delegateMovieEvent&());
dMovieEvents[frame].Add(delEvent);
public void UnregistMovieEvent(int frame, delegateMovieEvent delEvent)
if (!dMovieEvents.ContainsKey(frame))
if (dMovieEvents[frame].Contains(delEvent))
dMovieEvents[frame].Remove(delEvent);
个人已经用这个类写了一些小游戏了,不过由于用的都是原来公司的素材,所以就不发布出来了,省的被查水表@_@
蛮牛币 +30
每日推荐:
71640/5000排名<font color="#FF昨日变化2主题帖子积分
日久生情, 积分 1640, 距离下一级还需 3360 积分
日久生情, 积分 1640, 距离下一级还需 3360 积分
蛮牛币6440
在线时间382 小时
Thank you for sharing& &
每日推荐:
9排名<font color="#FF昨日变化2主题帖子积分
蛮牛币3301
在线时间325 小时
Thank you for sharing
顶起来,不错分享
每日推荐:
5548/1000排名<font color="#FF昨日变化3主题帖子积分
熟悉之中, 积分 548, 距离下一级还需 452 积分
熟悉之中, 积分 548, 距离下一级还需 452 积分
在线时间111 小时
不错,之得学习,感谢分享!!!
每日推荐:
5921/1000排名<font color="#FF昨日变化4主题帖子积分
熟悉之中, 积分 921, 距离下一级还需 79 积分
熟悉之中, 积分 921, 距离下一级还需 79 积分
蛮牛币1633
在线时间234 小时
不错啊,多谢分享啊 ,不错啊,多谢分享啊 不错啊,多谢分享啊 不错啊,多谢分享啊 不错啊,多谢分享啊 不错啊,多谢分享啊 不错啊,多谢分享啊 不错啊,多谢分享啊 不错啊,多谢分享啊
每日推荐:
2145/150排名<font color="#FF昨日变化8主题帖子积分
初来乍到, 积分 145, 距离下一级还需 5 积分
初来乍到, 积分 145, 距离下一级还需 5 积分
在线时间54 小时
什么是序列帧动作,好像好厉害的样子
3202/300排名<font color="#FF昨日变化6主题帖子积分
偶尔光临, 积分 202, 距离下一级还需 98 积分
偶尔光临, 积分 202, 距离下一级还需 98 积分
在线时间69 小时
对于unity喜爱者学习很好,喜欢,顶一个
5922/1000排名<font color="#FF昨日变化2主题帖子积分
熟悉之中, 积分 922, 距离下一级还需 78 积分
熟悉之中, 积分 922, 距离下一级还需 78 积分
蛮牛币2589
在线时间228 小时
{:107:}{:107:}{:107:}{:107:}{:107:}{:107:}
61106/1500排名<font color="#FF昨日变化2主题帖子积分
蛮牛粉丝, 积分 1106, 距离下一级还需 394 积分
蛮牛粉丝, 积分 1106, 距离下一级还需 394 积分
蛮牛币2085
在线时间317 小时
通篇代码无一字注释的太高深了看不懂啊
4359/500排名<font color="#FF昨日变化3主题帖子积分
四处流浪, 积分 359, 距离下一级还需 141 积分
四处流浪, 积分 359, 距离下一级还需 141 积分
在线时间155 小时
不错,不过在update中 if (fDelta & fSep)时把fDelta = 0 改为为fDelta -= fSep更合适些?
71619/5000排名<font color="#FF昨日变化1主题帖子积分
日久生情, 积分 1619, 距离下一级还需 3381 积分
日久生情, 积分 1619, 距离下一级还需 3381 积分
蛮牛币3671
在线时间581 小时
不错 非常值得学习之!
147/50排名<font color="#FF昨日变化9主题帖子积分
注册看看, 积分 47, 距离下一级还需 3 积分
注册看看, 积分 47, 距离下一级还需 3 积分
在线时间9 小时
本帖最后由 anashiwei 于
14:41 编辑
[C#] 纯文本查看 复制代码using UnityE
using System.C
using UnityEngine.UI;
public class UIMovie : MonoBehaviour {
public Sprite[] m_
public float m_sep = 0.05f;
private Image m_I
private float m_delta = 0;
private int m_curFrame = 0;
public int FrameCount {
return m_sprites.L
void Start() {
if (m_Image == null) {
m_Image = gameObject.AddComponent&Image&();
show (m_curFrame);
public void show(int frame) {
if (frame &= FrameCount) {
frame = 0;
m_curFrame =
m_Image.sprite = m_sprites[frame];
m_Image.SetNativeSize();
void Update() {
m_delta += Time.deltaT
if (m_delta & m_sep) {
m_delta = 0;
m_curFrame++;
show(m_curFrame);
优化了一下。。。其实重点是update()和Play()两个函数
268/150排名<font color="#FF昨日变化9主题帖子积分
初来乍到, 积分 68, 距离下一级还需 82 积分
初来乍到, 积分 68, 距离下一级还需 82 积分
在线时间29 小时
@anashiwei
后面仁兄贴的代码,运行报错
NullReferenceException: Object reference not set to an instance of an object
&&at ppSquenes.show (Int32 frame) [0x00016] in C:\Users\Administrator\Desktop\testUnity4_6_1\Assets\script\ppSquenes.cs:33
&&at ppSquenes.Update () [0x0003c] in C:\Users\Administrator\Desktop\testUnity4_6_1\Assets\script\ppSquenes.cs:42
定位在这一句:
m_Image.sprite = m_sprites[0];
好奇怪为什么sprite不能给sprit赋值,求解答
9排名30昨日变化主题帖子积分
在线时间1299 小时
@anashiwei
后面仁兄贴的代码,运行报错
NullReferenceException: Object reference not set to an instanc ...
目测是你的m_Image是空引用,你挂这个UMovie的GameObject上没有用于显示的Image,我的脚本里是叫shower
268/150排名<font color="#FF昨日变化9主题帖子积分
初来乍到, 积分 68, 距离下一级还需 82 积分
初来乍到, 积分 68, 距离下一级还需 82 积分
在线时间29 小时
非常感谢anashiwei的分享,确实是空引用。我在初始化的时候加一句就好了
m_Image = this.GetComponent&Image&();&&(该脚本挂在Image组件上)
七夕浪漫情人
2015年蛮牛社区浪漫七夕 最美情话活动获奖者
社区QQ达人
使用QQ帐号登录论坛的用户
连续签到30天
蛮牛论坛干货区作者
认证开发者
经过游戏蛮牛认证的独立开发者}

我要回帖

更多关于 unity3d ugui 帧动画 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信