Now I’ve looked a heck of a lot for an answer to this but have yet to figure it out.
What I am trying to do is change what is assigned to the prefabObject variable depending on what button has been pressed, this is my code which shows my attempt at this. I also have my prefabs named “wall” and “woodenPlank” in a folder called Resources.
var selGridInt : int = 0;
var selStrings : String[] = ["Grid 1", "Grid 2", "Grid 3", "Grid 4"];
var showInventory = false;
var cursorLock = true;
var disableCamera = false;
public var prefabObject : GameObject;
private var offset : Vector3;
private var fwd : Vector3;
private var clone : GameObject;
var unit : float = 3.0f;
var Sound : AudioClip;
function Update () {
fwd = transform.TransformDirection(Vector3.forward) * unit;
offset = transform.position + fwd;
if(Input.GetKeyDown(KeyCode.E)){
audio.PlayOneShot(Sound);
clone = Instantiate(prefabObject, offset, transform.rotation);
}
if(cursorLock == true){
Screen.lockCursor = true;
}
if(cursorLock == false){
Screen.lockCursor = false;
}
if(disableCamera == false){
gameObject.GetComponent(MouseLook).enabled = true;
}
if(disableCamera == true){
gameObject.GetComponent(MouseLook).enabled = false;
}
if(Input.GetKeyDown(KeyCode.I)){
disableCamera = !disableCamera;
cursorLock = !cursorLock;
showInventory = !showInventory;
}
}
var wall : GameObject;
var woodenPlank : GameObject;
function OnGUI () {
if(showInventory == true){
selGridInt = GUI.SelectionGrid (Rect (200, 100, 300, 300), selGridInt, selStrings, 2);
if((selGridInt == 0) && showInventory == true){
wall.SetActive(true);
woodenPlank.SetActive(false);
prefabObject = Instantiate(Resources.Load("wall"));
print("wall selected");
}
if((selGridInt == 1) && showInventory == true){
wall.SetActive(false);
woodenPlank.SetActive(true);
prefabObject = Instantiate(Resources.Load("woodenPlank"));
print("wooden plank selected");
}
}
}