private void InstantiateUsers(UserLegionSetupper setupper) { GameObject targetLegion = setupper.m_targetLegion; UnityAction <int> act = (idx) => { // Target Unit GameObject unit = targetLegion.GetChild(idx); // Ctrl GameObject ctrl = GameObject.Instantiate(setupper.m_baseUserCtrl); ctrl.name = setupper.m_baseUserCtrl.name; // Mesh GameObject mesh = GameObject.Instantiate(setupper.m_baseUserMesh[idx]); mesh.name = "Mesh"; // UI UserNo GameObject uiUserNo = GameObject.Instantiate(setupper.m_baseUserUIUserNo[idx]); uiUserNo.name = "UIUserNo"; uiUserNo.SetParent(ctrl, false); // UI Magazine GameObject uiMagazine = GameObject.Instantiate(setupper.m_baseUserUIMagazine[idx]); uiMagazine.name = "UIMagazine"; uiMagazine.SetParent(ctrl, false); // UI Magazine GameObject uiRadar = GameObject.Instantiate(setupper.m_baseUserUIRadarMesh[idx]); uiRadar.name = "UIRadar"; uiRadar.SetParent(ctrl, false); // Switch Mesh GameObject defmesh = ctrl.FindChild("DefMesh"); int meshindex = defmesh.transform.GetSiblingIndex(); GameObject.DestroyImmediate(defmesh); mesh.SetParent(ctrl, false); mesh.transform.SetSiblingIndex(meshindex); // DefMeshと同じヒエラルキー順位にソート // Set Ctrl for TargerUnit ctrl.SetParent(unit, false); // Camera GameObject camera = GameObject.Instantiate(setupper.m_baseUserCamera); camera.name = setupper.m_baseUserCamera.name; // Set Camera for TargerUnit camera.SetParent(unit, false); // Setup Parameter SetupUnit(ctrl, camera, idx); }; act.Invoke(0); act.Invoke(1); act.Invoke(2); act.Invoke(3); SetupLegion(targetLegion); }
private void UpdateUserPrefab(UserLegionSetupper setupper) { EDUtilFunctions.EditApplySerializedPrefab <CharAnimateCtrl>( setupper.m_baseUserCtrl, (ser) => { ser.FindProperty("m_moveSpeed").floatValue = setupper.m_moveSpeed; ser.FindProperty("m_jumpPower").floatValue = setupper.m_jumpPower; }); EDUtilFunctions.EditApplySerializedPrefab <LauncherCtrl>( setupper.m_baseUserCtrl, (ser) => { ser.FindProperty("m_pitchSpeed").floatValue = setupper.m_pitchSpeed; ser.FindProperty("m_minPitchAngle").floatValue = setupper.m_minPitchAngle; ser.FindProperty("m_maxPitchAngle").floatValue = setupper.m_maxPitchAngle; ser.FindProperty("m_yawSpeed").floatValue = setupper.m_yawSpeed; ser.FindProperty("m_shotPower").floatValue = setupper.m_shotPower; ser.FindProperty("m_shot3WayAngle").floatValue = setupper.m_shot3WayAngle; ser.FindProperty("m_knockbackTime").floatValue = setupper.m_knockbackTime; ser.FindProperty("m_chargeShotTime").floatValue = setupper.m_chargeShotTime; }); EDUtilFunctions.EditApplySerializedPrefab <LauncherMagazine>( setupper.m_baseUserCtrl, (ser) => { SerializedProperty reloadTime = ser.FindProperty("m_reloadTime"); reloadTime.floatValue = setupper.m_reloadTime; }); EDUtilFunctions.EditApplySerializedPrefab <UserCameraAutoCtrl>( setupper.m_baseUserCamera, (ser) => { SerializedProperty rotateSpeed = ser.FindProperty("m_rotateSpeed"); rotateSpeed.floatValue = setupper.m_cameraRotateSpeed; SerializedProperty pivotLerpTime = ser.FindProperty("m_pivotLerpTime"); pivotLerpTime.floatValue = setupper.m_cameraPivotLerpTime; }); }
public override void OnInspectorGUI() { UserLegionSetupper gen = target as UserLegionSetupper; UpdateEditorObjectField("セットアップターゲット", ref gen.m_targetLegion, true); bool isExecInstance = GUILayout.Button("セットアップ"); m_collapsed.Invoke( "Setup情報", () => { m_collapsedUserChar.Invoke( "UserChar情報", () => { gen.m_moveSpeed = EditorGUILayout.FloatField("移動速度", gen.m_moveSpeed); gen.m_jumpPower = EditorGUILayout.FloatField("ジャンプ力", gen.m_jumpPower); }); m_collapsedUserLauncher.Invoke( "ランチャー情報", () => { gen.m_pitchSpeed = EditorGUILayout.FloatField("射撃角制御速度", gen.m_pitchSpeed); gen.m_minPitchAngle = EditorGUILayout.FloatField("最小射撃角度", gen.m_minPitchAngle); gen.m_maxPitchAngle = EditorGUILayout.FloatField("最大射撃角度", gen.m_maxPitchAngle); gen.m_yawSpeed = EditorGUILayout.FloatField("旋回速度", gen.m_yawSpeed); gen.m_shotPower = EditorGUILayout.FloatField("射撃力", gen.m_shotPower); gen.m_shot3WayAngle = EditorGUILayout.FloatField("3Wayの角度差", gen.m_shot3WayAngle); gen.m_knockbackTime = EditorGUILayout.FloatField("ノックバック時間", gen.m_knockbackTime); gen.m_chargeShotTime = EditorGUILayout.FloatField("チャージショット時間", gen.m_chargeShotTime); gen.m_reloadTime = EditorGUILayout.FloatField("リロード時間", gen.m_reloadTime); }); m_collapsedUserCamera.Invoke( "カメラ情報", () => { gen.m_cameraRotateSpeed = EditorGUILayout.FloatField("自動回転速度", gen.m_cameraRotateSpeed); gen.m_cameraPivotLerpTime = EditorGUILayout.FloatField("カメラ切りかえの時間", gen.m_cameraPivotLerpTime); }); }); m_collapsedBasis.Invoke( "BaseObjects", () => { UpdateEditorObjectField("UserCtrl", ref gen.m_baseUserCtrl); EditorGUILayout.LabelField("UserMesh"); EditorGUI.indentLevel++; UpdateEditorObjectField("UserMeshP1", ref gen.m_baseUserMesh[0]); UpdateEditorObjectField("UserMeshP2", ref gen.m_baseUserMesh[1]); UpdateEditorObjectField("UserMeshP3", ref gen.m_baseUserMesh[2]); UpdateEditorObjectField("UserMeshP4", ref gen.m_baseUserMesh[3]); EditorGUI.indentLevel--; EditorGUILayout.LabelField("UI UserNo"); EditorGUI.indentLevel++; UpdateEditorObjectField("UserNoP1", ref gen.m_baseUserUIUserNo[0]); UpdateEditorObjectField("UserNoP2", ref gen.m_baseUserUIUserNo[1]); UpdateEditorObjectField("UserNoP3", ref gen.m_baseUserUIUserNo[2]); UpdateEditorObjectField("UserNoP4", ref gen.m_baseUserUIUserNo[3]); EditorGUI.indentLevel--; EditorGUILayout.LabelField("UI Magazine"); EditorGUI.indentLevel++; UpdateEditorObjectField("MagazineP1", ref gen.m_baseUserUIMagazine[0]); UpdateEditorObjectField("MagazineP2", ref gen.m_baseUserUIMagazine[1]); UpdateEditorObjectField("MagazineP3", ref gen.m_baseUserUIMagazine[2]); UpdateEditorObjectField("MagazineP4", ref gen.m_baseUserUIMagazine[3]); EditorGUI.indentLevel--; EditorGUILayout.LabelField("UI Radar"); EditorGUI.indentLevel++; UpdateEditorObjectField("RadarMeshP1", ref gen.m_baseUserUIRadarMesh[0]); UpdateEditorObjectField("RadarMeshP2", ref gen.m_baseUserUIRadarMesh[1]); UpdateEditorObjectField("RadarMeshP3", ref gen.m_baseUserUIRadarMesh[2]); UpdateEditorObjectField("RadarMeshP4", ref gen.m_baseUserUIRadarMesh[3]); EditorGUI.indentLevel--; EditorGUILayout.Space(); UpdateEditorObjectField("UserCamera", ref gen.m_baseUserCamera); }); if (isExecInstance) { PrefabUtility.ReplacePrefab(gen.gameObject, PrefabUtility.GetPrefabParent(gen.gameObject)); UpdateUserPrefab(gen); CleanupUsers(gen.m_targetLegion); InstantiateUsers(gen); } }