我有一个每100帧在屏幕上生成游戏对象的功能:
var trash : Transform ;
function Update()
{
if(count == 1)
{
Instantiate(trash,new Vector3(UnityEngine.Random.Range(-3f,3f),UnityEngine.Random.Range(-3f,3f),UnityEngine.Random.Range(-3f,3f)), Quaternion.identity);
}
else if(count == 100)
{
count = 0;
}
}
现在,我希望每个生成的对象都从我的资产中选择一个随机精灵。我想过制作一个精灵数组并从那里挑选,但我不知道该怎么做或者如何将精灵分配给对象。
Anu帮助将非常感谢!
答案 0 :(得分:0)
好吧,你可以用你自己选择的长度生成一系列精灵: Sprite [] _sprites = new Sprite [需要的数量]
然后使用resources文件夹和Resources.Load方法(在此处找到:http://docs.unity3d.com/ScriptReference/Resources.Load.html),您可以将所有精灵一个接一个地加载到数组中。然后使用随机数生成器,您可以随机访问精灵。
仍然可能不是最好的方法,但我认为它比预制方法更好,更容易维护,但不同的情况需要不同的方法。
答案 1 :(得分:0)
我知道已经晚了,但是我只是为自己做的,所以我要分享。
Resources
下创建一个Assets
文件夹。Resources
下为您的相关sprite资产创建另一个子文件夹,将其命名为CookiesImages
。Assets/Prefabs/Resources
下(这是您要使用不同资产多次复制的对象)。Object
数组(将容纳精灵)。在您的Awake()
方法中,通过从资产文件夹中加载所有资源来初始化此Object
数组:
if (objectsArray == null)
{
objectsArray= Resources.LoadAll("CookiesImages", typeof(Sprite));
}
在Start()
方法中,获取随机索引0 --> objectsArray.Length
并调用Instantiate
创建一个精灵,以将其分配给您的预制对象。
this.GetComponent<SpriteRenderer>().sprite = Instantiate(objectsArray[index]) as Sprite;
一开始,我尝试将其分配给统一UI中的数组变量,但是我意识到,以我描述的方式,它更加灵活。