Question by
burgee · Apr 19, 2018 at 04:58 AM ·
editorinstantiateprefab
I'm trying to make a prefab placement editor tool for point and click prefab placements drawn from a random pool.
I've written an editor, and when I try to place a prefab by left-clicking the scene editor just goes to a black screen. I'm new-ish to unity and not sure how to trouble shoot this.
Note that while the editor has room for 9 prefabs to be loaded, I'm testing it by just trying to place the 0th value of the array that holds all of the prefabs.
Editor Class:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(TerrainTrees))]
public class PrefabPlacement : Editor
{
public GameObject[] Prefab = new GameObject[10];
public float minScale = .5f;
public float maxScale = 2f;
public GameObject parent;
private bool placeMode = false;
private void OnSceneGUI()
{
int i;
if (placeMode)
{
if (Event.current.type == EventType.MouseUp)
{
Ray worldPoint = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition);
RaycastHit hitInfo;
if (Physics.Raycast(worldPoint, out hitInfo))
{
if (hitInfo.collider.transform.tag == "Terrain")
{
GameObject newPrefab = PrefabUtility.InstantiatePrefab(Prefab[0]) as GameObject;
newPrefab.transform.position = hitInfo.point;
newPrefab.transform.parent = parent.transform;
newPrefab.name = "PrefabTreePlacement";
}
}
}
Event.current.Use();
}
}
public override void OnInspectorGUI()
{
for (int i = 0; i < 9; i++)
Prefab[i] = EditorGUILayout.ObjectField("Prefab", Prefab[i], typeof(GameObject), true) as GameObject;
minScale = EditorGUILayout.FloatField("Min", .5f);
maxScale = EditorGUILayout.FloatField("Max", 2.5f);
parent = EditorGUILayout.ObjectField("Parent", parent, typeof(GameObject), true) as GameObject;
if (placeMode)
{
if (GUILayout.Button("Disable Editing"))
{
placeMode = false;
}
}
else
{
if (GUILayout.Button("Enable Editing"))
{
placeMode = true;
}
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Why does GameObject.FindWithTag() get a wrong instance? 2 Answers
How can I change the root game object of a prefab in the editor? 1 Answer
Instantiate and destroy an object with the same key 1 Answer
Instantiate Random Prefab From Folder 1 Answer
How to Change the Variables of an Instantiated Object? 0 Answers