Hello,
I have a GameObject in my scene with a script (PrefabManager) on it that references a bunch of Prefabs in the Project window. Note, these Prefabs are NOT within the scene.
When I drag these prefabs into the scene, the PrefabManager is still referencing the Prefab from the Project (not the scene) - which is fine, this is normal.
So when I delete the prefab from the scene, the reference is not broken (as it’s referencing from the Project.
- However …
When I put a custom Inspector Editor script on the Prefab that overrides the ‘OnInspectorGUI’, the reference from the PrefabManager does something very odd!
If I now drag a prefab into the scene, the reference from the Manager is now referencing the prefab in the Scene, and NOT the project anymore.
Thus - if I now delete the Prefab from the scene, the reference is broken.
Any ideas as to why this is happening? I it due to serialising?
My Custom Inspector Script:
public override void OnInspectorGUI(){
InventoryModule _target =(InventoryModule)target;
//build a name list for all buildings in inventory system
int _selection = FindNameInBuilding(_target._name);
string[] _names = GetBuildingNames();
_selection = EditorGUILayout.Popup("Name ", _selection, _names);
BuildingObject _building = GetBuilding(_selection);
if(_building == null){
_target._name = "";
_target._buildingObject = null;
EditorGUILayout.HelpBox("Please select a Building Name to populate module.", MessageType.Error);
}
else{
_target._name = _names[_selection];
_target._buildingObject = _building;
}
DrawDefaultInspector();
}
All this is doing is making a List of possible strings given from ‘GetBuildingNames’. This is then passed as a string into the target.