- Home /
Transform list resetting on play from custom inspector button
I am making a moving platform script which is user friendly and has a way to create waypoints from the inspector before pressing play. these waypoints are put into a list when they are created and when I press play this list is reset back to a count of 0. how do I make it so this list keeps it's content upon play? I will put my scripts below. thanks in advance for any help!
Custom inspector script:
using UnityEngine;
using System.Collections;
using UnityEditor;
[RequireComponent(typeof(MovingPlatform_Manager))]
[CustomEditor(typeof(MovingPlatform_Manager))]
public class MovingPlatform_Editor : Editor
{
string[] movementModeChoices = new [] { "Loop", "Ping Pong" };
public override void OnInspectorGUI()
{
DrawDefaultInspector();
MovingPlatform_Manager platformManager = (MovingPlatform_Manager)target;
if(GUILayout.Button("Add Waypoint"))
{
platformManager.CreateWaypoint();
}
if(platformManager.waypoints.Count != 0)
if(GUILayout.Button("Remove Waypoint"))
{
platformManager.RemoveWaypoint();
}
GUILayout.Label ("Movement Mode:");
platformManager.MovementModeSelection = EditorGUILayout.Popup (platformManager.MovementModeSelection, movementModeChoices);
}
}
Moving platform script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
[System.Serializable]
public class MovingPlatform_Manager : MonoBehaviour {
private int movementModeSelection;
public Transform waypoint;
public Transform platform;
public List<Transform> waypoints = new List<Transform>();
public void CreateWaypoint()
{
Transform newWaypoint = Instantiate (waypoint, new Vector3 (0f, 0f, 0f), Quaternion.identity);
newWaypoint.transform.name = "Waypoint_" + (waypoints.Count + 1).ToString();
waypoints.Add (newWaypoint);
if (waypoints.Count > 2)
waypoints [waypoints.Count - 1].transform.position = waypoints [waypoints.Count - 2].transform.position;
}
public void RemoveWaypoint()
{
DestroyImmediate(GameObject.Find(waypoints[waypoints.Count - 1].transform.name));
waypoints.RemoveAt (waypoints.Count - 1);
}
private void Awake()
{
if (waypoints.Count > 1) {
Instantiate (platform, waypoints [0].transform.position, Quaternion.identity);
} else if (waypoints.Count <= 1) {
Debug.Log ("Not enough Waypoints in the scene.");
}
}
private void Update()
{
}
public int MovementModeSelection
{
get{return movementModeSelection; }
set{movementModeSelection = value; }
}
}
Answer by pauldonnelly2018 · Aug 30, 2018 at 10:01 AM
Hope it will be helpful to look here: https://answers.unity.com/questions/1225900/public-variables-set-with-custom-editor-buttons-re.html or otherwise you can delegate this task to term paper writer for the issue to be solved faster.
Your answer
![](https://koobas.hobune.stream/wayback/20220612154929im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
A node in a childnode? 1 Answer
Showing the editors of list elements 0 Answers
Multiple variables in one array element + access them 2 Answers
Custom Inspector; adding to list not getting saved 2 Answers