随机着色的物体产生统一

时间:2018-01-17 14:21:05

标签: c# unity3d unity5 unityscript

尝试制作游戏时,我需要让一个spawner在我们单击Fire1按钮时随机生成四种颜色的对象,例如限制数量为4次红色时间蓝色等等。等等但是随机生成并显示即将到来的颜色或者下一个颜色,我尝试了很多东西,但对我没用。任何帮助PLZ。

1 个答案:

答案 0 :(得分:1)

我可以告诉你如何完成它 -

首先我要说的是在编辑器中创建您想要在游戏中使用的4个游戏对象,并在您想要使用的对象材质中指定适当的4种颜色。 在资产中创建一个名为“资源”的新文件夹然后通过将这些对象从项目层次结构拖动到资源文件夹中为这些对象创建预制件。

现在在assets文件夹中创建一个新的空游戏对象和一个新的C#脚本,然后将C#脚本拖到新的空游戏对象上。在C#脚本中你想要一些方法,下面应该做的就是预制件被称为shape1,shape2等。

//shapes to be spawned
public List<GameObject> shapes;
//shapes that are in game
public List<GameObject> spawnedShape;
//num of next shape to be places
public int next;
//list of shapes that can be spawned
public List<int> shapeCount;
System.Random random;


void Start()
{
    random = new System.Random();
    for (int i = 0; i < 4; i++)
    {
        //adds shapes that can be added into shapecount list.
        for(int j = 0; j < 4; j++)
        {
            shapeCount.Add(i);
        }
        //load game objects from resources into list
        GameObject go = Resources.Load("shape" + i) as GameObject;
        shapes.Add(go);
    }
    //set next shape
    int next = setNext();
}

void Update()
{
    if (Input.GetButton("Fire1")) {
        spawnShape();
    }
}

public int setNext()
{
    if (shapeCount.Count != 0)
    {
        int num = random.Next(0, shapeCount.Count);
        return shapeCount[num];
    }
    else return -1;
}

void spawnShape()
{
    if(next == -1)
    {
        Debug.Log("Out of shapes");
    }else
    {
        //creates instance of shape
        GameObject go = Instantiate(shapes[next]);
        //creates and assigns random x, y coordinate
        int x = random.Next(0, 500);
        int y = random.Next(0, 500);
        go.transform.position = new Vector3(x, y, 0);
        spawnedShape.Add(go);
    }
    //gets colour of next shape
    next = setNext();
}

只需调整代码以适合您的项目,有更有效的方法,例如有一个形状和添加不同的材料,但这种方式可以允许所有不同的形状。