void OnEnable() { // Load property with EditorPrefs. int inputSettingsCount = EditorPrefs.GetInt(INPUT_SETTING_NUM_KEY, 0); for (int i = 0; i < inputSettingsCount; i++) { InputSettingData data = new InputSettingData(EditorPrefs.GetString(NAME_KEY + i, missingStr), EditorPrefs.GetBool(IS_DISPLAY_KEY + i, false)); data.descriptive = EditorPrefs.GetString(DESCRIPTIVE_KEY + i, missingStr); data.negativeDescriptive = EditorPrefs.GetString(NEGATIVE_DESCRIPTIVE_KEY + i, missingStr); data.negativeButton = EditorPrefs.GetString(NEGATIVE_BUTTON_KEY + i, missingStr); data.positiveButton = EditorPrefs.GetString(POSITIVE_BUTTON_KEY + i, missingStr); data.altNegativeButton = EditorPrefs.GetString(ALT_NEGATIVE_BUTTON_KEY + i, missingStr); data.altPositiveButton = EditorPrefs.GetString(ALT_POSITIVE_BUTTON_KEY + i, missingStr); data.gravity = EditorPrefs.GetFloat(GRAVITY_BUTTON_KEY + i, 0); data.dead = EditorPrefs.GetFloat(DEAD_KEY + i, 0); data.sensitivity = EditorPrefs.GetFloat(SENSITIVITY_KEY + i, 0); data.snap = EditorPrefs.GetBool(SNAP_KEY + i, false); data.invert = EditorPrefs.GetBool(INVERT_KEY + i, false); data.inputType = (InputType)EditorPrefs.GetInt(INPUT_TYPE_KEY + i, (int)InputType.KeyOrMouseButton); data.axisType = (AxisType)EditorPrefs.GetInt(AXIS_TYPE_KEY + i, (int)AxisType.XAxis); data.joystickNum = (JoystickNum)EditorPrefs.GetInt(JOYSTICK_NUM_KEY + i, (int)JoystickNum.All); inputSettingList.Add(data); } }
void OnDestroy() { // Save property with EditorPrefs. EditorPrefs.SetInt(INPUT_SETTING_NUM_KEY, inputSettingList.Count); for (int i = 0; i < inputSettingList.Count; i++) { InputSettingData data = inputSettingList [i]; EditorPrefs.SetString(NAME_KEY + i, data.name); EditorPrefs.SetBool(IS_DISPLAY_KEY + i, data.isDisplay); EditorPrefs.SetString(DESCRIPTIVE_KEY + i, data.descriptive); EditorPrefs.SetString(NEGATIVE_DESCRIPTIVE_KEY + i, data.negativeDescriptive); EditorPrefs.SetString(NEGATIVE_BUTTON_KEY + i, data.negativeButton); EditorPrefs.SetString(POSITIVE_BUTTON_KEY + i, data.positiveButton); EditorPrefs.SetString(ALT_NEGATIVE_BUTTON_KEY + i, data.altNegativeButton); EditorPrefs.SetString(ALT_POSITIVE_BUTTON_KEY + i, data.altPositiveButton); EditorPrefs.SetFloat(GRAVITY_BUTTON_KEY + i, data.gravity); EditorPrefs.SetFloat(DEAD_KEY + i, data.dead); EditorPrefs.SetFloat(SENSITIVITY_KEY + i, data.sensitivity); EditorPrefs.SetBool(SNAP_KEY + i, data.snap); EditorPrefs.SetBool(INVERT_KEY + i, data.invert); EditorPrefs.SetInt(INPUT_TYPE_KEY + i, (int)data.inputType); EditorPrefs.SetInt(AXIS_TYPE_KEY + i, (int)data.axisType); EditorPrefs.SetInt(JOYSTICK_NUM_KEY + i, (int)data.joystickNum); } }
/// <summary> /// 軸を追加します。 /// </summary> /// <param name="serializedObject">Serialized object.</param> /// <param name="data">Axis.</param> void AddAxis(InputSettingData data) { // if (axis.axis < 1) Debug.LogError("Axisは1以上に設定してください。"); SerializedProperty axesProperty = serializedObject.FindProperty("m_Axes"); axesProperty.arraySize++; serializedObject.ApplyModifiedProperties(); SerializedProperty axisProperty = axesProperty.GetArrayElementAtIndex(axesProperty.arraySize - 1); GetChildProperty(axisProperty, "m_Name").stringValue = data.name; GetChildProperty(axisProperty, "descriptiveName").stringValue = data.descriptive; GetChildProperty(axisProperty, "descriptiveNegativeName").stringValue = data.negativeDescriptive; GetChildProperty(axisProperty, "negativeButton").stringValue = data.negativeButton; GetChildProperty(axisProperty, "positiveButton").stringValue = data.positiveButton; GetChildProperty(axisProperty, "altNegativeButton").stringValue = data.altNegativeButton; GetChildProperty(axisProperty, "altPositiveButton").stringValue = data.altPositiveButton; GetChildProperty(axisProperty, "gravity").floatValue = data.gravity; GetChildProperty(axisProperty, "dead").floatValue = data.dead; GetChildProperty(axisProperty, "sensitivity").floatValue = data.sensitivity; GetChildProperty(axisProperty, "snap").boolValue = data.snap; GetChildProperty(axisProperty, "invert").boolValue = data.invert; GetChildProperty(axisProperty, "type").intValue = (int)data.inputType; GetChildProperty(axisProperty, "axis").intValue = (int)data.axisType; GetChildProperty(axisProperty, "joyNum").intValue = (int)data.joystickNum; serializedObject.ApplyModifiedProperties(); }
/// <summary> /// ゲームパッド用の軸の設定データを作成する /// </summary> /// <returns>The joy axis.</returns> /// <param name="name">Name.</param> /// <param name="joystickNum">Joystick number.</param> /// <param name="axisType">Axis number.</param> public static InputSettingData CreatePadAxis(string name, JoystickNum joystickNum, AxisType axisType) { var axis = new InputSettingData(name); axis.name = name; axis.dead = 0.2f; axis.sensitivity = 1; axis.inputType = InputType.JoystickAxis; axis.axisType = axisType; axis.joystickNum = joystickNum; return(axis); }
public void SetInputSettingData(List <InputSettingData> dataList) { if (dataList == null) { return; } Clear(); for (int iInput = 0; iInput < dataList.Count; iInput++) { InputSettingData data = dataList[iInput]; AddAxis(data); } }
/// <summary> /// 押すと1になるキーの設定データを作成する /// </summary> /// <returns>The button.</returns> /// <param name="name">Name.</param> /// <param name="positiveButton">Positive button.</param> /// <param name="altPositiveButton">Alternate positive button.</param> public static InputSettingData CreateButton(string name, string positiveButton, string altPositiveButton) { var axis = new InputSettingData(name); axis.name = name; axis.positiveButton = positiveButton; axis.altPositiveButton = altPositiveButton; axis.gravity = 1000; axis.dead = 0.001f; axis.sensitivity = 1000; axis.inputType = InputType.KeyOrMouseButton; return(axis); }
InputSettingData GetInputSettingData(SerializedProperty property) { InputSettingData data = new InputSettingData(GetChildProperty(property, "m_Name").stringValue, false); data.descriptive = GetChildProperty(property, "descriptiveName").stringValue; data.negativeDescriptive = GetChildProperty(property, "descriptiveNegativeName").stringValue; data.negativeButton = GetChildProperty(property, "negativeButton").stringValue; data.positiveButton = GetChildProperty(property, "positiveButton").stringValue; data.altNegativeButton = GetChildProperty(property, "altNegativeButton").stringValue; data.altPositiveButton = GetChildProperty(property, "altPositiveButton").stringValue; data.gravity = GetChildProperty(property, "gravity").floatValue; data.dead = GetChildProperty(property, "dead").floatValue; data.sensitivity = GetChildProperty(property, "sensitivity").floatValue; data.snap = GetChildProperty(property, "snap").boolValue; data.invert = GetChildProperty(property, "invert").boolValue; data.inputType = (InputType)GetChildProperty(property, "type").intValue; data.axisType = (AxisType)GetChildProperty(property, "axis").intValue; data.joystickNum = (JoystickNum)GetChildProperty(property, "joyNum").intValue; return(data); }
/// <summary> /// Draw settings data property. /// </summary> /// <param name="data"></param> void DrawInputSettingsProperty(InputSettingData data) { data.isDisplay = Foldout(data.name, data.isDisplay, out data.isDuplicate, out data.isRemove, out data.isUp, out data.isDown); if (data.isDisplay) { data.name = EditorGUILayout.TextField("Name", data.name); data.descriptive = EditorGUILayout.TextField("Descriptive", data.descriptive); data.inputType = (InputType)EditorGUILayout.EnumPopup("InputType", data.inputType); data.axisType = DrawAxisTypeProperty(data.inputType, data.axisType); data.joystickNum = DrawJoystickNumProperty(data.inputType, data.joystickNum); DrawPositiveButtonProperty(data.inputType, ref data.positiveButton, ref data.altPositiveButton); data.gravity = DrawGravityProperty(data.inputType, data.gravity); data.dead = EditorGUILayout.FloatField("Dead", data.dead); data.snap = DrawSnapProperty(data.inputType, data.snap); data.sensitivity = EditorGUILayout.FloatField("Sensitivity", data.sensitivity); data.invert = EditorGUILayout.Toggle("Invert", data.invert); data.isSetNegativeButton = EditorGUILayout.Toggle("Further set Negative Button", data.isSetNegativeButton); if (data.isSetNegativeButton) { DrawNegativeButtonProperty(data.inputType, ref data.negativeDescriptive, ref data.negativeButton, ref data.altNegativeButton); } } }
void OnGUI() { Color bgColor = GUI.backgroundColor; using (var scrollView = new EditorGUILayout.ScrollViewScope(scrollPos)) { scrollPos = scrollView.scrollPosition; if (inputSettingList.Count == 0) { EditorGUILayout.LabelField(string.Format("Input settings is nothing. You can \"{0}\" or \"{1}\".", addStr, loadInputManagerStr)); } for (int i = 0; i < inputSettingList.Count; i++) { DrawInputSettingsProperty(inputSettingList [i]); } } // Exchange for (int i = 0; i < inputSettingList.Count; i++) { if (inputSettingList[i].isUp) { inputSettingList[i].isUp = false; if (i != 0) { InputSettingData work = inputSettingList[i]; inputSettingList[i] = inputSettingList[i - 1]; inputSettingList[i - 1] = work; } } if (inputSettingList[i].isDown) { inputSettingList[i].isDown = false; if (i != inputSettingList.Count - 1) { InputSettingData work = inputSettingList[i]; inputSettingList[i] = inputSettingList[i + 1]; inputSettingList[i + 1] = work; } } } // Duplicate int count = inputSettingList.Count; for (int i = 0; i < count; i++) { if (inputSettingList[i].isDuplicate) { inputSettingList[i].isDuplicate = false; InputSettingData clone = inputSettingList[i].Clone(); inputSettingList.Add(clone); } } // Remove for (int i = inputSettingList.Count - 1; i >= 0; i--) { if (inputSettingList[i].isRemove) { inputSettingList.RemoveAt(i); } } using (new EditorGUILayout.HorizontalScope()) { GUILayout.FlexibleSpace(); if (GUILayout.Button(addStr)) { inputSettingList.Add(new InputSettingData("New Input")); } } using (new EditorGUILayout.HorizontalScope()) { GUILayout.FlexibleSpace(); if (GUILayout.Button("Open InputManager")) { EditorApplication.ExecuteMenuItem("Edit/Project Settings/Input"); } if (GUILayout.Button(loadInputManagerStr)) { inputSettingList.AddRange(LoadSettingsFromInputManager()); } } using (new EditorGUILayout.HorizontalScope()) { GUILayout.FlexibleSpace(); using (new EditorGUI.DisabledGroupScope(inputSettingList.Count == 0)) { if (GUILayout.Button("Clear Settings")) { ClearSettings(); } } GUI.backgroundColor = Color.green; if (GUILayout.Button("Apply")) { Apply(); } GUI.backgroundColor = bgColor; } }