我正在建立一个无限的运行汽车游戏,为此,我不得不产生其他汽车随机。下面是我的默认安装程序代码:
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();
}
}这里cars[]一共有8辆车,我想用工厂的方法从那里衍生出随机的汽车。有人能帮忙吗?
我目前正在使用MonoBehavior实例化,但是我希望使用zenject工厂代码来正确地实现zenject。我现在正在做的事
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;
}
}`
发布于 2022-11-25 04:12:31
也许官方的薪酬是有帮助的。
下面Doc解释工厂的实现。https://github.com/modesttree/Zenject/blob/master/Documentation/Factories.md
然后,下面是更强大的,介绍了如何用参数从预制件创建游戏对象。
我认为,用URL编写的官方船样非常类似于您的情况。
创建游戏对象上下文和安装程序,使之将create方法参数传递给gameObeject参数。
我希望这个答案能对你有所帮助。
https://stackoverflow.com/questions/74485406
复制相似问题