Unity实例化对象的公共方法

原创 2015年07月07日 15:26:32

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

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="" />

相关文章推荐

unity 实例化物体并成为某个物体的子物体

//首先先分配一个内存(随便起个名字都可以看需要)加载一个实例,这个实例名字就是我们需要的物体,这个物体必须是个预制体Prefab //接着将这个物体实例化成GameObject,让他具有GameO...

关于对方法实例化的相关感悟以及unity的50个技巧

关于实例化问题的感悟(笔者自悟,大神勿喷) 在之前的程序编写过程中,虽然对相关的方法进行了实例化,但是在运行的时候总是会出现“未将对象引用设置到对象的实例”,出现该种问题的原因是由于在实例化后,没有...

Unity之Editor类创建窗口

Unity之Editor类创建窗口 本例为创建一个查看,设置角色攻击参数和攻击对应特效参数等的编辑窗口,界面如下 在菜单栏创建标签, 点击 "CreateWindow" 弹出窗口 ...

unity中消息传递的三种方法

unity中提供了对象间消息传递的三种方法:

[原创]unity3D学习【功能实现】之三:实例化

用处:一般当场景出现两个及两个以上,或者会出现重复的物体的时候,用实例化比较方便 目标:鼠标点击后,在鼠标点击的位置出现一个小球 涉及到:预制件,Instantiate(预制件,newVector...
  • vipzjh
  • vipzjh
  • 2016年08月17日 09:38
  • 2084

unity3d Vector4

var tangents: Vector4[] 描述:网格的切线。 切线主要用于bumpmap shader中。切线是一个单位长度向量,a沿着网格表面指向水平 (U)纹理方向。Unity中...

在UI中动态实例化对象设置位置无效的问题

今天在搞东西的时候发现一个问题,我动态实例化预制的东西无法改变位置,之前是可以的,这次只是移到UI上面而已,就失效了。查了很久,没找到原因,后来有人说用NGUITOOLS.AddChild就行了,试了...

Unity Mesh生成图形

最近在做农机的收割和耕地,是前面记录的罗技方向盘的后续。 首先我从百度截了个耕地的图片,用crazybump做了个贴图,再建个材质球拖给quad,单独看起来挺像那么回事。 于是我就开始写代码,在开...

unity之不规则多边形uv贴图

mesh的uv贴图想必大家都知道是三角形组成原理,我使用三角剖分的方法去解决不规则多边形的uv贴图, 三角剖分算法大家可以百度上去看,很多种教程,具体脚本算法如下: using UnityEngine...
  • pzw0416
  • pzw0416
  • 2013年12月10日 10:24
  • 3961

unity3d引用和实例化对象的方法

利用脚本组件的public变量把prefabs拖入到对象相应脚本组件的public变量中,如下图然后在脚本中写如下代码:public class explosionScript : MonoBehav...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity实例化对象的公共方法
举报原因:
原因补充:

(最多只允许输入30个字)