您好,欢迎来到Unity之家!   unity.jb51.net 
  • 首 页
  • 你问我答
  • 当前位置:首页 > 学习培训 > Unity入门 >
    场景中模型动画的解决方案
    时间:2015-02-25 08:52 来源:Unity之家 作者:unity.jb51.net 浏览:收藏 挑错 推荐 打印



    背景:美工做好的动画需要放在引擎场景中看效果,有以下要求:


    1.由于动画有带位移情况存在而且需要看当前模型与其他模型的互动情况,所以不便于在动画文件的 Inspector --> Preview视窗下观察。

    2.尽量简单傻瓜式操作,需要去输入参数的地方尽量要少。

    3.由于只是为了方便把做好的动画放在引擎场景中观察所以要对动画片段的数量与命名不加以限制。


    只需把下面的脚本挂在一个带有动画关联的模型上即可使用。可能需要修改的参数为inspector面板中脚本下scroll于button的值。

    这两个RECT控制滚动视图与动画按钮的UI布局。



    不多说了,直接贴出代码:


    private GameObject m_gameobject;
    private AnimationClip[] m_aClip;
    private int m_max_i;
    private Vector2 m_scrollPosition = Vector2.zero;
    public Rect m_scroll= new Rect(20,20,0,200);
    private Rect m_view;
    public Rect m_button = new Rect(0, 0, 100, 20);
    
    void Start ()
    {
        m_gameobject = this.gameObject;
        m_max_i = m_gameobject.animation.GetClipCount();
        m_aClip = new AnimationClip[m_max_i];
        int i = 0;
        foreach (AnimationState state in animation)
        {
            m_aClip = state.clip;
            i++;
        }
        i = 0;
        m_scroll.width = m_button.xMin + m_button.width + 20;
        m_view.height = m_button.yMin + m_max_i * m_button.height;
    }
    
    void OnGUI()
    {
        m_scrollPosition = GUI.BeginScrollView(m_scroll, m_scrollPosition, m_view, false, false);
        for (int i = 0; i < m_max_i; i++)
        {
            if (GUI.Button(new Rect(m_button.xMin, m_button.yMin + i * m_button.height, m_button.width, m_button.height), m_aClip.name))
            {
                PlayerButton(i);
            }
        }
        GUI.EndScrollView();
    }
    
    void PlayerButton(int m_i)
    {
        m_gameobject.animation.Play(m_aClip[m_i].name);
    }



    (责任编辑:脚印)
    免责声明:Unity之家部分内容来源于互联网,如有侵权,请联系我们,本站将立即进行处理。
    标签:Unity之家