Beispiel #1
0
    public void Play()
    {
        if (m_isPlaying)
        {
            Debuger.Log("还没结束就重新播放了");
            Stop();//先结束老的
        }

        Renderer r = GetRender();

        if (r == null)
        {
            return;
        }


        MaterialMgr mm = r.AddComponentIfNoExist <MaterialMgr>();

        m_handle = mm.Add(this);
        if (m_handle == null)
        {
            return;
        }
        m_beginTime   = Time.time;
        m_isPlaying   = true;
        m_needDestroy = false;
        m_destroyTime = -1;
        foreach (MaterialAni a in m_anis)
        {
            a.OnBegin(m_handle.mat);
        }
    }
Beispiel #2
0
    public void Stop()
    {
        if (this == null)
        {
            return;       //可能已经被销毁
        }
        if (!m_isPlaying) //防止死锁
        {
            return;
        }
        //1 必须先把这个值设置正确,不然可能造成死锁
        m_isPlaying   = false;
        m_destroyTime = -1;

        //Remove和stop可能会互相调用,内部已经防止死锁,这里不用判断
        m_handle.mgr.Remove(m_handle);

        m_handle = null;
        foreach (MaterialAni a in m_anis)
        {
            a.OnStop();
        }
    }