Prefab与Instance Unity3d 圣典 用户手册

1、获取对象是否处于激活状态 ,不能靠读取对象的activeSelf来判断,因为如果这个对象是一个子对象,他的父对象设置为未激活状态,所有子对象的activeSelf属性不变但是这个子对象的确是没有激活的,应该使用activeInHierarchy 属性。

2、预设、prefab instance 用c#

新建一个cube、Terrain、调整视角位置。让摄像机看得到。

在assets新建prefab、把cube拖到prefab上。给prefab加上刚体组件。运行。看到cube会掉下来就ok

添加光源、好看一点


添加script。使用prefab instance


using UnityEngine;
using System.Collections;

public class PrefabInstance : MonoBehaviour {

	public GameObject targetPrefab;

	// Use this for initialization
	void Start () 
	{
		for (int y=0; y<5; y++) 
		{
			for(int x=0;x<5;x++)
			{
				GameObject.Instantiate(targetPrefab,new Vector3(7+x,y,24),Quaternion.identity);
			}
		}
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}

删除原来的cube、新建一个空的游戏对象、放到cube原来的位置,新建出来的位置就是cube原来的位置……

把脚本拖到新建出来的游戏对象上面,把prefab拖到代码public上面。运行

Prefab与Instance Unity3d 圣典 用户手册_第1张图片

Prefab与Instance Unity3d 圣典 用户手册_第2张图片


25个cube。。


我们改一下代码

using UnityEngine;
using System.Collections;

public class PrefabInstance : MonoBehaviour {

	public GameObject targetPrefab;

	// Use this for initialization
	void Start () 
	{
//		for (int y=0; y<5; y++) 
//		{
//			for(int x=0;x<5;x++)
//			{
//				//GameObject.Instantiate(targetPrefab,new Vector3(7+x,y,24),Quaternion.identity);
//				GameObject.Instantiate(targetPrefab,transform.position,transform.rotation);
//			}
//		}
	}
	
	// Update is called once per frame
	void Update () {
		GameObject.Instantiate(targetPrefab,transform.position,transform.rotation);
	}
}

Prefab与Instance Unity3d 圣典 用户手册_第3张图片




你可能感兴趣的:(Unity,unity3d)