zoukankan      html  css  js  c++  java
  • 两个以上gameobject同时调用同一函数时候transform代码中改变但是实际效果并不改变的诡异问题

    点击按钮触发面板弹出动画:

    void MainPanelBtnClick(string btnName)
        {
            switch (btnName)
            {
            case "0":
                if(currentBtn != MainPanelBtn.BETTLE)
                {
                    _GUI_BG.active = false;
                    currentBtn = MainPanelBtn.BETTLE;
                }
                break;
            case "1":
                if(currentBtn == MainPanelBtn.BETTLE)
                {
                    _GUI_BG.active = true;
                }
                currentBtn = MainPanelBtn.HERO;
                if(!is2)
                {
                    is2 = true;
                    iTween.Stop();
                    if(ModelData.shareData.panelGroupDic.ContainsKey("ContentPanel"))
                    {
                        PanelFunc.PanelOn(ModelData.shareData.panelGroupDic["ContentPanel"]);
                    }
                    if(ModelData.shareData.panelGroupDic.ContainsKey("TitleBar"))
                    {
                        PanelFunc.PanelOn(ModelData.shareData.panelGroupDic["TitleBar"]);
                    }
                    if(ModelData.shareData.panelGroupDic.ContainsKey("ActNotify"))
                    {
                        PanelFunc.PanelOn(ModelData.shareData.panelGroupDic["ActNotify"]);
                    }
                }
                else
                {
                    is2 = false;
                    iTween.Stop();
                    if(ModelData.shareData.panelGroupDic.ContainsKey("ContentPanel"))
                    {
                        PanelFunc.PanelOff(ModelData.shareData.panelGroupDic["ContentPanel"]);
                    }
                    if(ModelData.shareData.panelGroupDic.ContainsKey("TitleBar"))
                    {
                        PanelFunc.PanelOff(ModelData.shareData.panelGroupDic["TitleBar"],"OnMove2Complete",gameObject);
                    }
                    if(ModelData.shareData.panelGroupDic.ContainsKey("ActNotify"))
                    {
                        PanelFunc.PanelOff(ModelData.shareData.panelGroupDic["ActNotify"],"OnMove2Complete",gameObject);
                    }
                }
                
                break;
            case "2":
                
                break;
            case "3":
            
                break;
            case "4":
            
                break;
            case "5":
            
                break;
            default:
                break;
            }
        }

    先执行面板出现动画   3个面板同时出现

    public static void PanelOn( PanelPos _panelPos)
        {
            _panelPos.g.getChild(0).transform.gameObject.SetActiveRecursively(true);
            if(_panelPos.middlePos!=_panelPos.oriPos)
                iTween.MoveTo(_panelPos.g, iTween.Hash( "position", _panelPos.middlePos, iT.MoveTo.islocal, true, "easetype", "easeOutBack", "loopType", "none",  "delay", .1,"time",.5));
        }

    上面动画未结束就迅速执行面板隐藏函数

        public static void PanelOff(PanelPos _panelPos)
        {
            _panelPos.g.transform.getChild(0).gameObject.SetActiveRecursively(false);
            _panelPos.g.transform.localPosition = _panelPos.oriPos;
                Debug.Log(_panelPos.g.name+"    "+_panelPos.g.transform.localPosition);
        }

    则有一个面板(绿色部分)的上面红色部分不执行,其实是执行了的

    ContentPanel    (0.0, -820.0, 0.0)

    TitleBar    (-660.0, 300.0, 0.0)

    ActNotify    (470.0, 300.0, 0.0)

    程序中检测位置是移动了,但是实际视窗中并没移动

    TitleBar    (-300.0, 300.0, 0.0)

    后来多次查找原因未果,后将

     _panelPos.g.transform.getChild(0).gameObject.SetActiveRecursively(false);

    改为

     _panelPos.g.transform.gameObject.SetActiveRecursively(false);

    则bug消除,不解!!!

  • 相关阅读:
    周鸿祎:很多程序员聪明,但我一看就知道他不会成功
    Ubuntu/centos/redhat/SUSE sipp安装(带rtp支持,3.5.1版本)
    ffmpeg源码分析之媒体打开过程
    搜集的动植物分类、检索网站
    sipp命令 各参数含义
    最简单的一个win32程序
    vi学习笔记
    删除结点 (双向链表)
    插入结点(双向链表)
    La=LaULb (单链表)
  • 原文地址:https://www.cnblogs.com/pengyingh/p/2720576.html
Copyright © 2011-2022 走看看