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); } } } }