void LoadBallAnimPrefab(string prefabName, int index) { //Debug.Log ("creating ball " + " " + index); GameObject mathBallAnim = Instantiate(Resources.Load(prefabName, typeof(GameObject))) as GameObject; mathBallAnim.name = "mathBallAnim" + index; mathBallAnim.transform.position = new Vector3(0f, 20f, 0f); MathBallAnim _mathBallScript = mathBallAnim.GetComponent <MathBallAnim> (); _mathBallScript._state = MathBallAnim.eState.InPool; mathBallAnim.SetActive(false); setAllChildrenActive(mathBallAnim, false); BallAnimObjects.Add(mathBallAnim); //setBallColor(mathBallAnim, new Color(0.5f, 1f,1f, 0.5f)); _mathBallScript.setBallColor(new Color(0.5f, 0.5f, 0.5f, 0.5f)); _mathBallScript.setBallTextColor(new Color(1.0f, 1.0f, 1.0f, 1.0f)); //WARNING! when you load a prefab at this point "void Start()" is still to be called and may overwrite anything you set here. }
void RemoveSelectedBalls() { foreach (GameObject gObj in BallObjects) { MathBall _mathBallScript = gObj.GetComponent <MathBall> (); if (_mathBallScript._state == MathBall.eState.Selected) { //setup anim ball GameObject _mathBallAnim = GetAvailableBallAnim(); _mathBallAnim.transform.position = new Vector3(gObj.transform.position.x, gObj.transform.position.y, -4); _mathBallAnim.transform.localScale = gObj.transform.localScale; int ball_value = _mathBallScript.ball_value; //use ball_value to select correct particle ParticleDepot.Instance.PlayAtPosition(ball_value, new Vector3(gObj.transform.position.x, gObj.transform.position.y, -5)); MathBallAnim _mathBallAnimScript = _mathBallAnim.GetComponent <MathBallAnim> (); _mathBallAnimScript.setBallText(ball_value.ToString()); _mathBallAnimScript.startAnim(); _mathBallAnim.SetActive(true); setAllChildrenActive(_mathBallAnim, true); _mathBallAnimScript.setBallRemovalColors(); //remove from bucket int spanx = UnityEngine.Random.Range(-1, 1); gObj.transform.position = new Vector3((float)spanx, 20f, 0f); gObj.SetActive(false); setAllChildrenActive(gObj, false); _mathBallScript.removeSelected(); } } }
GameObject GetAvailableBallAnim() { foreach (GameObject gObj in BallAnimObjects) { MathBallAnim _mathBallAnimScript = gObj.GetComponent <MathBallAnim> (); if (_mathBallAnimScript._state == MathBallAnim.eState.InPool) { return(gObj); } } return(null); }