0

I am building an unlimited running car game and for this, I have to spawn other cars randomly. Here is my default installer code:

using UnityEngine;
using Zenject;

public class DefaultInstaller : MonoInstaller
{
    //Total Car Objects
    public GameObject[] cars;
    public GameObject road;
    public override void InstallBindings()
    {
        //Binding assets
        Container.Bind<GameObject[]>().FromInstance(cars).AsSingle();
        Container.Bind<GameObject>().FromInstance(road).AsSingle();
        //Bindng Manager
        Container.Bind<GameManager>().AsSingle();
        Container.Bind<CarManager>().AsSingle();
    }
}

Here cars[] have total 8 cars, I want to spawn random car from there using Factory method. Can anyone help pls?

I am currently using MonoBehavior Instantiate but I want to use zenject factory code for proper zenject implemention. Here what I am currently doing `

using UnityEngine;

public class Factory : MonoBehaviour
{
    // Start is called before the first frame update
    public static GameObject Create(GameObject carObject)
    {
        return Instantiate(carObject);
    }
    public static GameObject Create(GameObject road, Vector3 position)
    {
        return Instantiate(road, position, Quaternion.identity);
    }
    public static GameObject Create(GameObject carObject, Vector3 postion, Quaternion rotation)
    {
        return Instantiate(carObject, postion, rotation);
    }
    public static void CreateStartRoad(GameObject road)
    {
        Instantiate(road, new Vector3(12, 0, 0), Quaternion.identity).SetActive(true);
        Instantiate(road, new Vector3(6, 0, 0), Quaternion.identity).SetActive(true);
        Instantiate(road, new Vector3(0, 0, 0), Quaternion.identity).SetActive(true);
        Instantiate(road, new Vector3(-6, 0, 0), Quaternion.identity).SetActive(true);
        Instantiate(road, new Vector3(-12, 0, 0), Quaternion.identity).SetActive(true);
        Instantiate(road, new Vector3(-18, 0, 0), Quaternion.identity).SetActive(true);

        //starting road movement
        GameManager.RunCar = true;
    }

}

`

mmar58
  • 1
  • 2

1 Answers1

0

Maybe official Doccuments is helpful.

Following Doc explain Factories Implementation. https://github.com/modesttree/Zenject/blob/master/Documentation/Factories.md

And then, following is more powerful, introducing how to create gameobject from prefab with parameters.

https://github.com/modesttree/Zenject/blob/master/Documentation/SubContainers.md#creating-sub-containers-on-gameobjects-by-using-game-object-context

Official Ship sample written in URL is very similar to your case, I think.

Createing gameobject context and installer, make to transfer create method argument to gameObeject parameters.

I hope this answer will be of help to you.