【问题标题】:How to change canvas image via script如何通过脚本更改画布图像
【发布时间】:2016-07-08 13:00:24
【问题描述】:

我有一个脚本,每秒固定次数改变物体的纹理(比如电视上的飞机):

public Texture[] frames;                // array of textures
public float framesPerSecond = 2.0f;    // delay between frames

void Update()
{
    int index = (int)(Time.time * framesPerSecond) % frames.Length;
    GetComponent<Renderer>().material.mainTexture = frames[index];
}

使用此脚本,我可以更改平面、四边形等的纹理。但我需要为画布图像更改它。我无法更改“图像”脚本。我应该访问此脚本的值“源图像”吗?对吗?

是这样,我怎样才能访问Image 组件?我不能写这个:

Image image = GetComponent&lt;Image&gt;();

【问题讨论】:

  • 我无法测试以下内容,这就是我不将其作为答案的原因。您需要添加 using Unityengine.UI 并且您可以使用类似于 GetComponent&lt;Image&gt;().setImage = someImage; 的内容
  • @Rana 我不知道你从哪里得到 setImage ......
  • 这完全出乎我的意料 XD。我说这是“顺理成章”......我检查了你的财产叫sprite。所以你可以这样做GetComponent&lt;Image&gt;().sprite = someSprite;我可能错了......

标签: c# user-interface canvas unity3d


【解决方案1】:

如果您使用Image,则需要转换 TextureSprite 然后更改 image.sprite 属性

方法一图片

public Texture[] frames;                // array of textures
public float framesPerSecond = 2.0f;    // delay between frames
Image image = null;

void Start()
{
    //Get Image Reference
    image = gameObject.GetComponent<Image>();
}

void Update()
{
        int index = (int)(Time.time * framesPerSecond) % frames.Length;

        //Convert Texture to Sprite
        Sprite s = Sprite.Create((Texture2D)frames[index], new Rect(0, 0, frames[index].width, frames[index].height),
                                Vector2.zero, 0);
        image.sprite = s; //Change The Image
}

方法二 (RawImage) image.texture 如果您使用 RawImage,您只需需要更改 image.texture 属性。

public Texture[] frames;                // array of textures
public float framesPerSecond = 2.0f;    // delay between frames
RawImage image = null; 

void Start()
{
 //Get Raw Image Reference
 image = gameObject.GetComponent<RawImage>();
}

void Update()
{
  int index = (int)(Time.time * framesPerSecond) % frames.Length;
  image.texture = frames[index]; //Change The Image
}

我建议你使用方法2。这意味着您必须删除场景中的当前图像。然后转到 GameObject->UI->Raw Image创建 RawImage。在这种情况下,原始图像高效,因为您总是更改图像。使用方法1更慢,并且会在您的游戏/应用中释放垃圾收集器

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多