【问题标题】:How do you get an int from a prefab?你如何从预制件中获得一个 int 值?
【发布时间】:2021-07-23 08:37:15
【问题描述】:

我有一个商店的预制件。这家商店有一个计数整数来表示商店里有多少东西。但是这个预制件填充了许多具有不同 int 值的商店。因此,商店 1 可以有 3 件商品,而商店 2 可以有 40 件商品,依此类推。我需要一种方法来添加所有这些并在另一个脚本中使用它。我什至不知道从哪里开始。一个答案将是理想的,但如果不只是朝着正确的方向轻推,将不胜感激。提前谢谢你。

【问题讨论】:

  • 预制件是指场景中的某些东西还是 Assets 文件夹中的实际预制件?

标签: c# unity3d prefab


【解决方案1】:
int storeSum = 0;

foreach (YourScriptHere store in FindObjectsOfTypeAll(typeof(YourScriptHere)) as YourScriptHere[])
{
    storeSum += store.theValueHere;
}

YourScriptHere 中填写您要查找的脚本的类名。它将抓取场景中所有出现的预制件,然后添加您设置的值。将 theValueHere 替换为您设置的任何整数字段。如果您正在寻找添加编辑器对象,这是一种不同的方法,如果是这种情况,我可以编辑答案。

另一种方法是让管理器拥有对这些对象的所有引用,因此您无需调用FindObjectsOfTypeAll。如果这些值在运行时发生变化并且您想重新计算它,我会在检查器中分配引用或存储引用。如果其中一些对象被销毁或实例化新对象,我会考虑在存储引用时使用HashSet

【讨论】:

  • 您在我的第一次游戏之旅中帮助了我很多。太感谢了。如果您有一系列教程视频或类似的东西,我很乐意为它们付费并观看其中的废话,这样我就可以变得如此聪明。
  • @giff1 不用担心!我没有那样的东西。我去学校学习游戏编程并制作了一些游戏。像许多爱好或工作一样,要想在游戏开发方面做得更好,只需要练习。如果您坚持下去并且始终知道还有更多需要学习,那么您将走得更远。很高兴我能在你的游戏中尽我所能帮助你:)
猜你喜欢
  • 2016-12-09
  • 2022-10-22
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 2019-03-24
相关资源
最近更新 更多