Exemplo n.º 1
0
        public void WindowFunction(int windowsId)
        {
            scrollPoint = GUILayout.BeginScrollView(scrollPoint);
            if (GUILayout.Button("关闭"))
            {
                isShowWindow = false;
            }
            IsEnable = GUILayout.Toggle(IsEnable, "是否启用部件螺栓提示");
            GUILayout.Label("···功能说明···");
            GUILayout.Label("1、鼠标移到螺丝上,能看到螺丝的扳手型号、部件下有几个螺丝");
            GUILayout.Label("2、鼠标移到螺丝上,按左边的ALT,能高亮标(红色,黄色)识出这个部件的其他螺丝");
            GUILayout.Label("5、我不能100%肯定该功能所有内容一定正确,比如那个一字形螺丝刀的那个提示");

            if (GUILayout.Button("重置车辆中的所有螺栓/螺丝纹理(如果你鼠标移动特别快...)"))
            {
                List <GameObject> boltGameObjectList = GameObjectUtil.FindChildGameObjectByLikeName(GlobalVariables.GetGlobalVariables().gameObjectSatsuma, "bolt");
                foreach (GameObject bolt in boltGameObjectList)
                {
                    GameObjectUtil.ChangeGameObjectMaterial(bolt, defaultBoltMaterial);
                }
            }

            GUILayout.Label("默认螺栓 : " + defaultBoltMaterial);
            GUILayout.Label("高亮螺栓 : " + activeBoltMaterial);

            GUILayout.EndScrollView();
            GUI.DragWindow();
        }
        public override void Update()
        {
            SetCheckGameObjectList(out List <GameObject> checkGameObjectList);
            foreach (GameObject rootGameObject in checkGameObjectList)
            {
                string name = GetShowRootGameObjectName(rootGameObject);
                Dictionary <string, object> partAndBoltDict = null;

                if (!reportDict.ContainsKey(name))
                {
                    partAndBoltDict = new Dictionary <string, object>();
                    reportDict.Add(name, partAndBoltDict);
                }
                else
                {
                    partAndBoltDict = reportDict[name];
                }


                // List<GameObject> allBoltPmGameObjectList = GameObjectUtil.GetChildGameObjectLikeName(rootGameObject, "boltpm");
                List <GameObject> allBoltPmGameObjectList = GameObjectUtil.FindChildGameObjectByLikeName(rootGameObject, "boltpm");
                if (partAndBoltDict.ContainsKey(CarReport.BOLT_COUNT))
                {
                    partAndBoltDict[CarReport.BOLT_COUNT] = allBoltPmGameObjectList.Count;
                }
                else
                {
                    partAndBoltDict.Add(CarReport.BOLT_COUNT, allBoltPmGameObjectList.Count);
                }


                // 部件GameObject -> 螺栓GameObject List
                Dictionary <GameObject, List <GameObject> > partDict = new Dictionary <GameObject, List <GameObject> >();
                if (partAndBoltDict.ContainsKey(CarReport.PART_AND_BOLT))
                {
                    partAndBoltDict[CarReport.PART_AND_BOLT] = partDict;
                }
                else
                {
                    partAndBoltDict.Add(CarReport.PART_AND_BOLT, partDict);
                }
                // 部件GameObject -> 其它属性
                Dictionary <GameObject, Dictionary <string, object> > partAttrDict = new Dictionary <GameObject, Dictionary <string, object> >();
                if (partAndBoltDict.ContainsKey(CarReport.PART_ATTR))
                {
                    partAndBoltDict[CarReport.PART_ATTR] = partAttrDict;
                }
                else
                {
                    partAndBoltDict.Add(CarReport.PART_ATTR, partAttrDict);
                }


                foreach (GameObject booltPmGameObject in allBoltPmGameObjectList)
                {
                    FsmGameObject partFsmGameObject = GameObjectUtil.GetPlayMakerFSMGameObject(booltPmGameObject, "screw", "PartAssembled");
                    if (partFsmGameObject != null && partFsmGameObject.Value != null)
                    {
                        if (partDict.ContainsKey(partFsmGameObject.Value))
                        {
                            partDict[partFsmGameObject.Value].Add(booltPmGameObject);
                        }
                        else
                        {
                            partDict.Add(partFsmGameObject.Value, new List <GameObject>()
                            {
                                booltPmGameObject
                            });
                        }
                    }
                }


                foreach (GameObject partGameObject in partDict.Keys)
                {
                    PlayMakerFSM[] partAssembledPlayMakerFSMArray = partGameObject.GetComponents <PlayMakerFSM>();
                    FsmFloat       fsmFloatTightness             = null;
                    FsmFloat       fsmFloatTireHealth            = null;
                    Dictionary <string, object> partAttrDataDict = new Dictionary <string, object>();
                    foreach (PlayMakerFSM playMakerFSM in partAssembledPlayMakerFSMArray)
                    {
                        if (playMakerFSM != null && playMakerFSM.FsmName != null &&
                            (
                                playMakerFSM.FsmName.ToLower().Equals("use") ||
                                playMakerFSM.FsmName.ToLower().Equals("boltcheck")
                            )
                            )
                        {
                            fsmFloatTightness  = playMakerFSM.FsmVariables.FindFsmFloat("Tightness");
                            fsmFloatTireHealth = playMakerFSM.FsmVariables.FindFsmFloat("TireHealth");
                        }
                    }
                    if (partAttrDict.ContainsKey(partGameObject))
                    {
                        partAttrDict[partGameObject] = partAttrDataDict;
                    }
                    else
                    {
                        partAttrDict.Add(partGameObject, partAttrDataDict);
                    }
                    if (partAttrDataDict.ContainsKey(CarReport.FSM_FLOAT_TIGHTNESS))
                    {
                        partAttrDataDict[CarReport.FSM_FLOAT_TIGHTNESS] = fsmFloatTightness;
                    }
                    else
                    {
                        partAttrDataDict.Add(CarReport.FSM_FLOAT_TIGHTNESS, fsmFloatTightness);
                    }
                    if (partAttrDataDict.ContainsKey(CarReport.FSM_FLOAT_TIREHEALTH))
                    {
                        partAttrDataDict[CarReport.FSM_FLOAT_TIREHEALTH] = fsmFloatTireHealth;
                    }
                    else
                    {
                        partAttrDataDict.Add(CarReport.FSM_FLOAT_TIREHEALTH, fsmFloatTireHealth);
                    }
                }
            }
        }