Question by
ykchris2002 · Mar 12, 2019 at 03:18 AM ·
c#unity 5random.range
set Random
i want set some startpoints, random instanaiate. How and make it?
using System.Collections; using System.Collections.Generic; using UnityEngine;
public abstract class DataReceiver : MonoBehaviour { public abstract void RecieveData(ImageData recievedData); }
public class ObjectGenerator : DataReceiver { protected List GeneratedObjects = new List();
public int MaxGenerationNumber = 10;
public GameObject Prefab;
public string Name;
public Vector3[] startpoint;
private void Start()
{
}
public override void RecieveData(ImageData recievedData)
{
if (recievedData != null && recievedData.name == Name)
{
Texture2D image;
image = new Texture2D(recievedData.width, recievedData.height);
image.LoadImage(recievedData.image);
image.Apply(false, true);
GameObject obj = Instantiate(Prefab);
if (GeneratedObjects.Count >= MaxGenerationNumber)
{
obj = GeneratedObjects[0];
GeneratedObjects.RemoveAt(0);
obj.transform.position =startpoint;
//Debug.Log("11!");
}
else
{
obj = Instantiate(Prefab, startpoint, Quaternion.identity);
}
GeneratedObjects.Add(obj);
SkinnedMeshRenderer skinnedRenderer = obj.GetComponentInChildren<SkinnedMeshRenderer>();
if (skinnedRenderer)
{
foreach (Material mat in skinnedRenderer.materials)
mat.SetTexture("_MainTex", image);
}
MeshRenderer renderer = obj.GetComponentInChildren<MeshRenderer>();
if (renderer)
{
renderer.material.mainTexture = image;
}
}
//#if UNITY_EDITOR
if (recievedData == null)
{
GameObject obj;
if (GeneratedObjects.Count >= MaxGenerationNumber)
{
obj = GeneratedObjects[0];
GeneratedObjects.RemoveAt(0);
}
else
{
obj = Instantiate(Prefab);
}
GeneratedObjects.Add(obj);
}
//#endif
}
public virtual void Update()
{
if (Input.GetKeyDown(KeyCode.Delete))
{
foreach (GameObject obj in GeneratedObjects)
{
Destroy(obj);
}
GeneratedObjects.Clear();
}
}
}
Comment