关闭

Unity实例化对象的公共方法

2218人阅读 评论(0) 收藏 举报
分类:

  大家好!我是小唐,最近写了一个实例化对象的公共方法,方便以后用的时候直接调用此方法,可以多处使用,自己根据自己的需求写的,不好还望多包含,一起学习一下吧。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class ActivityManageData<T>:MonoBehaviour where T:MonoBehaviour
{
	private T intance;
	/// <summary>
	/// 实例化对象的公共方法(用的时候直接调用此方法就可以了)
	/// </summary>
	/// <param name="obj">实例化的对象.</param>
	/// <param name="parentObj">实例化对象的父物体.</param>
	/// <param name="firstObjVec3">实例化第一个对象的位置.</param>
	/// <param name="distanceY">实例化对象间的Y坐标的差值.</param>
	/// <param name="instanteObj">实例化对象的数组.</param>
	public void InstantiateObj(GameObject obj,GameObject parentObj,Vector3 firstObjVec3,int distanceY,GameObject[] instanteObj)
	{
		int Count=parentObj.transform.childCount;
		GameObject mObj = Instantiate (obj) as GameObject;
		intance=mObj.AddComponent<T>();
		mObj.transform.parent = parentObj.transform;
		mObj.transform.localScale = Vector3.one;
		if (Count!=0) 
		{
			instanteObj[Count]=mObj;
			float objPosX=instanteObj[Count-1].transform.localPosition.x;
			float objPosY=instanteObj[Count-1].transform.localPosition.y-distanceY;
			float objPosZ=instanteObj[Count-1].transform.localPosition.z;
			Vector3 vec3=new Vector3 (objPosX,objPosY,objPosZ);
			mObj.transform.localPosition =vec3;
		}
		else
		{
			instanteObj[0]=mObj;
			mObj.transform.localPosition = firstObjVec3;
		}
	}
}

//调用
GameObject[] mInstanteObj=new GameObject[100];
ActivityManageData<VIPPackage> amd = new ActivityManageData<VIPPackage> ();
amd.InstantiateObj (mPackageObj, mVIPPackage, new Vector3 (0, 0, 0),150,mInstanteObj);
</pre><pre name="code" class="csharp">以后还会多多分享更多自己写的东西!
效果图:
<img src="http://img.blog.csdn.net/20150707153138069?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:29133次
    • 积分:665
    • 等级:
    • 排名:千里之外
    • 原创:37篇
    • 转载:2篇
    • 译文:2篇
    • 评论:3条
    博客专栏
    最新评论