博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
两个以上gameobject同时调用同一函数时候transform代码中改变但是实际效果并不改变的诡异问题...
阅读量:5776 次
发布时间:2019-06-18

本文共 3285 字,大约阅读时间需要 10 分钟。

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

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消除,不解!!!

转载于:https://www.cnblogs.com/pengyingh/archive/2012/10/11/2720576.html

你可能感兴趣的文章
Android 阴影,圆形的Button
查看>>
C++概述
查看>>
卡特兰数
查看>>
006_mac osx 应用跨屏幕
查看>>
nginx中配置文件的讲解
查看>>
MindNode使用
查看>>
HTTP库Axios
查看>>
CentOS7下安装python-pip
查看>>
左手坐标系和右手坐标系 ZZ
查看>>
陀螺仪主要性能指标
查看>>
Linux 目录结构和常用命令
查看>>
Linux内存管理之mmap详解 (可用于android底层内存调试)
查看>>
Android开发中ViewStub的应用方法
查看>>
gen already exists but is not a source folder. Convert to a source folder or rename it 的解决办法...
查看>>
遍历Map的四种方法
查看>>
Altium Designer 小记
查看>>
赵雅智:js知识点汇总
查看>>
20个Linux服务器性能调优技巧
查看>>
填坑记:Uncaught RangeError: Maximum call stack size exceeded
查看>>
SpringCloud之消息总线(Spring Cloud Bus)(八)
查看>>