namespace Code.Example.Race.Track.WellEditor { using UnityEngine; using UnityEditor; public static class CheckPointAsset { [MenuItem("GameObject/Track/CheckPoint", false, 1)] private static void CreateCustomPrefab() { // Define the path to your prefab in the Project (must be in an "Assets" relative path) var prefabPath = "Assets/Resources/Example/Misc/Point.prefab"; // Update with your actual path // Load the prefab asset var prefab = AssetDatabase.LoadAssetAtPath(prefabPath); if (!prefab) { Debug.LogError("Prefab not found at path: " + prefabPath); return; } // Instantiate the prefab in the scene var newInstance = (GameObject)PrefabUtility.InstantiatePrefab(prefab); // Ensure it is placed correctly in the Hierarchy and is undoable Undo.RegisterCreatedObjectUndo(newInstance, "Create Custom Prefab"); Selection.activeGameObject = newInstance; // Set parent if an object is selected if (!Selection.activeTransform) { newInstance.transform.parent = Selection.activeTransform; newInstance.transform.localPosition = Vector3.zero; } } } }