Javascript 在运行时更改精灵-Unity

Javascript 在运行时更改精灵-Unity,javascript,unity3d,sprite,Javascript,Unity3d,Sprite,嗨,我正在使用unity和javascript为一个纸牌游戏编写代码。发完牌后,我想把玩家的牌换成牌组中的随机牌。我已经在我的资源文件夹中创建了所有精灵。我想知道是否有一种方法可以改变精灵的名字或什么来实现这一点。所有的卡都被称为cardDiamonds8或cardClubs4。我已经设置好获取名称: #pragma strict public var testCard : GameObject; private var suit; private var value; private var

嗨,我正在使用unity和javascript为一个纸牌游戏编写代码。发完牌后,我想把玩家的牌换成牌组中的随机牌。我已经在我的资源文件夹中创建了所有精灵。我想知道是否有一种方法可以改变精灵的名字或什么来实现这一点。所有的卡都被称为cardDiamonds8或cardClubs4。我已经设置好获取名称:

#pragma strict
public var testCard : GameObject;
private var suit;
private var value;
private var number : int;



function Start () {
    number = Random.Range(1,5);
    if (number == 1) {
        suit = "Clubs";
    } else if (number == 2) {
        suit = "Diamonds";
    } else if (number == 3) {
        suit = "Hearts";
    } else if (number == 4) {
        suit = "Spades";
    }
    number = Random.Range(1,14);
    if (number == 1) {
        value = "A";
    } else if (number == 11) {
        value = "J";
    } else if (number == 12) {
        value = "Q";
    } else if (number == 13) {
        value = "K";
    } else {
        value = number;
    }
    testCard.name = "card" + suit + value;
    print(testCard.name);
}

这只是打印出名称,但逻辑是存在的。任何更改精灵的帮助都将不胜感激。

我建议的一种方法是创建一个可以容纳所有精灵的对象。可以使用inspector引用图像,也可以使用Start()函数通过代码将图像加载到对象中。这样做的原因是为了减少在运行时加载资产的需要

加载精灵后,您可以在运行时更改它们以满足您的需要

通过以下代码加载:
Resources.Load(“YourImageName”)

至于通过代码更改精灵:您需要获得显示精灵的游戏对象上的组件。如果您使用的是gui对象,则需要获取关联的图像组件并更改图像组件的引用


更新以获得更多澄清,并改进我可能含糊不清的第一次回答。

建议如下,在第一次执行Update()循环之前加载精灵


我找到了一个方法,但为了做到这一点,你必须把所有你想要使用的精灵放在一个名为“资源”的文件夹中。那就用

gameObject.GetComponent.<SpriteRenderer> ().sprite = Resources.Load("name", typeof(Sprite)) as Sprite;;
gameObject.GetComponent。().sprite=Resources.Load(“name”,typeof(sprite))作为sprite;;

对否决投票的原因有何评论?我很好奇,所以下次我可以做得更好。我想你们被否决了,因为人们需要大量阅读,学习一些东西。那不好。我投赞成票;)我认为否决票是在你给出方向的时候出现的,但是没有明确的指示来正确地做这件事。这就是我读书时的感觉。你可以这样做或那样做,但解释什么是这个和那个更合适。特别是最后一段。没有冒犯的意思,但这听起来像是一个不知道但仍然尝试的人,你可能真的知道怎么做。那不是我给的dv。看看这个。这可能对你有帮助
 GetComponent(SpriteRenderer).sprite = Sprites[idx];
gameObject.GetComponent.<SpriteRenderer> ().sprite = Resources.Load("name", typeof(Sprite)) as Sprite;;