首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Zenject Factory方法生成游戏中的随机对象

用Zenject Factory方法生成游戏中的随机对象
EN

Stack Overflow用户
提问于 2022-11-18 05:49:18
回答 1查看 18关注 0票数 0

我正在建立一个无限的运行汽车游戏,为此,我不得不产生其他汽车随机。下面是我的默认安装程序代码:

代码语言:javascript
复制
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。我现在正在做的事

代码语言:javascript
复制
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;
    }

}

`

EN

回答 1

Stack Overflow用户

发布于 2022-11-25 04:12:31

也许官方的薪酬是有帮助的。

下面Doc解释工厂的实现。https://github.com/modesttree/Zenject/blob/master/Documentation/Factories.md

然后,下面是更强大的,介绍了如何用参数从预制件创建游戏对象。

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

我认为,用URL编写的官方船样非常类似于您的情况。

创建游戏对象上下文和安装程序,使之将create方法参数传递给gameObeject参数。

我希望这个答案能对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74485406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档