首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从另一个脚本Unity C# 2D访问任何创建的游戏对象的属性

如何从另一个脚本Unity C# 2D访问任何创建的游戏对象的属性
EN

Stack Overflow用户
提问于 2018-08-03 02:43:45
回答 1查看 3.1K关注 0票数 2

我已经实例化了多个游戏对象,就像下面这部分代码:

代码语言:javascript
复制
GameObject newCard = Instantiate(CardPrefab, new Vector3(x, y, z), transform.rotation);

x,y和z是参数,这样我就可以在不同的位置繁殖对象。

我的问题是如何从另一个脚本访问游戏对象的名称或属性。我的每个游戏对象都有一个属性,该属性赋予它一个值。

在另一个脚本中,我想将所有对象的值相加,但我不确定如何从另一个脚本访问这些对象以获取它们的名称和值。

谢谢你的支持。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-03 03:37:52

如果您正在尝试访问GameObjects名称,那么只需简单地说一句:

代码语言:javascript
复制
newCard.name = "The new name!";

如果您正在尝试访问分配给此特定GameObject的脚本的属性,最好这样做:

代码语言:javascript
复制
public class card : MonoBehavior {
    public int faceValue;
    public int suitValue;
    //  or whatever else you need in your card...

}

在你的spawner对象中:

代码语言:javascript
复制
public class Spawner : MonoBehaviour {
    public Card cardPrefab;  // Instantiate will spawn this correctly and return the attached component to you.  
                             // Less prone to error for this specific script since we are expecting a prefab
                             // with a card script attached.

    // Spawn Method
    void SpawnCard(float x, float y, float z, int value, int suitValue)
    {
        Card newCard = instantiate(cardPrefab, new Vector3(x, y, z), transform.rotation);
        newCard.gameObject.name = "someName";
        newCard.faceValue = value;
        newCard.suitValue = suitValue;
    }

}

要使用此脚本访问所有游戏对象,您可以创建某种形式的管理器,以便在创建它们时跟踪它们(首选方法),

或者..。

你可以使用GameObject.FindObjectsOfType<Card>(),当你得到更大的场景时,它会非常慢,如果你有一个小场景,那么它是很好的。

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

https://stackoverflow.com/questions/51660278

复制
相关文章

相似问题

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