Question by
Sir_Rustbucket · Sep 17, 2015 at 08:50 PM ·
scripting problemgameobjectinstantiateprefab
Issue with Prefab instantiate and script not working?
Hi! I'm trying to instantiate a "card" GameObject, set a parameter with its name, then have the object return that name when clicked. It all seems to work until I click on the "card", which returns the initialized name of "Start", not "Created" as I am expecting.
main.cs (Attached to Camera)
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class main : MonoBehaviour {
public card_script temp;
// Use this for initialization
void Start () {
temp = Create ();
Debug.Log ("Step 4 - " + temp.GetType ()); // Type = Card
}
public static card_script Create() {
GameObject tempCard = GameObject.Instantiate(Resources.Load ("Prefabs/card_prefab"), Vector3.zero, Quaternion.identity) as GameObject;
Debug.Log("Step 1 - " + tempCard.GetType()); // Type = UnityEngine.GameObject
card_script card = tempCard.GetComponent<card_script>();
Debug.Log("Step 2 - " + card.GetType()); // Type = Card
card.CardName = "Created";
Debug.Log("Step 3 - My name is: " + card.CardName); // Name = Created
return card;
}
}
card_script.cs (Attached to card_prefab)
using UnityEngine;
using System.Collections;
public class card_script : MonoBehaviour {
private string cardName;
private Vector3 screenPoint;
private Vector3 offset;
void Start() {
CardName = "Start";
}
void OnMouseDown() {
screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position);
offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint( new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z) );
Debug.Log ("Name: " + CardName); // Expecting this to print "Created"
}
void OnMouseDrag() {
Vector3 cursorPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
Vector3 cursorPosition = Camera.main.ScreenToWorldPoint(cursorPoint) + offset;
transform.position = cursorPosition;
}
public string CardName {
get { return cardName; }
set { cardName = value; }
}
}
Any insight as to what I'm doing wrong would be much appreciated.
Comment