Prefab Custom Inspector Script - Odd Behaviour

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.

It turns out that it was because I was referencing the GameObject within a Class. I was also applying that same class to the GameObject when placing it into the scene, which in turn - changed the reference.