gpt4 book ai didi

c# - 试图直观地显示种子的生长阶段

转载 作者:行者123 更新时间:2023-11-30 23:31:31 25 4
gpt4 key购买 nike

我有一个空的 parent 预制件,下面有 2 个 child 。父预制件代表种子,没有可视组件。我目前在预制件中有第一个 child 处于事件状态,第二个 child 处于非事件状态。

我只是希望当元素放置在我的世界中时显示第一个 child (目前正在工作),然后在设定的时间后我希望第一个 child 不活动,第二个 child 展示。我已经连接了所有逻辑以了解何时更换事件预制件,我只是不知道如何去做。

为了解决这个问题,我计划使用不止一种种子(橙子、仙人掌等),而且并非所有种子的生长过程都有相同数量的阶段。我正在尝试找出一个解决方案,不仅可以解决两个阶段,还可以解决 1、2 或 3 等阶段。

这是我到目前为止编写的逻辑 - 它已准备好进行外观交换。

    private void FixedUpdate()
{
if (Time.time > mNextGrowthStage && !CanLoot)
{
mCurrentGrowthStage += 1;
mNextGrowthStage = Time.time + GrowthStageDuration;

// TODO: Insert visual appearance swap here.

Debug.LogFormat("{0} has grown from stage {1} to stage {2}. There are {3} stages remaining. Next growth stage occurring in {4} seconds.",
this.Name, mCurrentGrowthStage - 1, mCurrentGrowthStage, NumberOfGrowthStages - mCurrentGrowthStage, GrowthStageDuration);

if (mCurrentGrowthStage >= NumberOfGrowthStages)
{
Debug.LogFormat("{0} has fully grown!", this.Name);
CanLoot = true;
}
}
}

非常感谢任何帮助。谢谢!

最佳答案

您可以轻松地为种子预制件的检查器中的每个生长阶段分配 Sprite ,即:

public Sprite[] GrowthSprites;

从头到尾的每个 Sprite 代表每个生长阶段(GrowthSprites[0] <=> 种子阶段等)。

然后你可以简单地在运行时交换 Sprite :

获取将在其上交换 Sprite 的 SpriteRenderer:

//Find or assign Sprite element of prefab in Start():

//Finding approach:
private SpriteRenderer _renderer;

void Start()
{
_renderer = gameObject.GetComponent<SpriteRenderer>();
}

//Note that you can have SpriteRender in one of gameobject's children
// and you can have several children with SpriteRenderer so:

//Assign from inspector approach - just drag appropriate SpriteRenderer
public SpriteRenderer GrowthSpriteRenderer;

将 Sprite 换成合适的:

    if (GrowthSpriteRenderer != null)
GrowthSpriteRenderer.sprite = GrowthSprites[mCurrentGrowthStage];

关于c# - 试图直观地显示种子的生长阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com