// Hide or show attribute depending on the StartingState override public void OnInspectorGUI() { serializedObject.Update(); GUI.enabled = false; EditorGUILayout.ObjectField("Script", MonoScript.FromMonoBehaviour((GuardController)target), typeof(GuardController), false); GUI.enabled = true; EditorGUILayout.PropertyField(innerState_Prop, true); EditorGUILayout.PropertyField(state_Prop); StartingState s = (StartingState)state_Prop.intValue; switch (s) { case StartingState.Patrol: EditorGUILayout.PropertyField(waypoints_Prop, true); EditorGUILayout.PropertyField(idle_Prop); break; case StartingState.Idle: EditorGUILayout.PropertyField(idle_Prop); break; } serializedObject.ApplyModifiedProperties(); }
void InstantiateGuards(Dungeon dungeon) { RandomIndexPicker <Corridor> corridorPicker = new RandomIndexPicker <Corridor> (dungeon.corridors); int guardNum = Mathf.FloorToInt(difficulty * 5f * corridorPicker.Count()); for (int i = 0; i < guardNum; i++) { if (corridorPicker.IsEmpty()) { break; } // Generate random values int randomState = Random.Range(0, 10); //int randomState = 0; if (randomState > 2) { randomState = 0; } StartingState state = (StartingState)randomState; float idle = Random.value * Random.Range(1, 5) + 1f; Characteristics chara = Characteristics.random(difficulty); Corridor corridor = corridorPicker.Pick(); // Instantiate guard GameObject guard = Instantiate(guardPrefab, tile_size * new Vector3(corridor.start.x, corridor.start.y, 0), Quaternion.identity, transform); // Edit guardController values GuardController guardController = guard.GetComponent <GuardController> (); guardController.startingState = state; guardController.idleDuration = idle; guardController.innerState.characteristics = chara; // Patroling state if (state == StartingState.Patrol) { GuardBuildWaypoints(dungeon, guardController, corridor, tile_size); } // Absorb bar GameObject absorbBar = Instantiate(guardAbsorbBar, canvas.transform); AbsorbBar absorbScript = guard.GetComponent <AbsorbBar> (); absorbScript.bar = absorbBar.GetComponent <RectTransform> (); absorbScript.targetCanvas = canvas.GetComponent <RectTransform> (); absorbScript.maxAmout = 1; } }