将PNG图像加载到数组并用作纹理

时间:2016-02-28 18:45:03

标签: arrays unity3d texture2d

我一直试图在Unity中使用PNG图像作为纹理,当我只使用一两个时,它很容易将它们拖放到检查器中。在我目前的项目中,我有超过300个图像,我试图将其加载到数组中,然后我想在每次更新时更改纹理,使其看起来像一个视频。

这是我到目前为止所做的:

using UnityEngine;
using System.Collections;

public class ChangeImage : MonoBehaviour {

public Texture[] frames;
public int CurrentFrame;
public object[] images;

    void OnMouseDown() {
        if (GlobalVar.PlayClip == false){
            GlobalVar.PlayClip = true;          
        } else {
            GlobalVar.PlayClip = false;         
        }
    }   

    public void Start() {

        images = Resources.LoadAll("Frames");

        for (int i = 0; i < images.Length; i++){
            Texture2D texImage = (Texture2D) images[i];
            frames[i] = texImage;
        }
    }

    // Update is called once per frame
    void Update () {
        if(GlobalVar.PlayClip == true){
            CurrentFrame++;
            CurrentFrame %= frames.Length;
            GetComponent<Renderer>().material.mainTexture = frames[CurrentFrame];
        }
    }   


}

我一直在尝试将图像加载到对象数组中,将它们转换为纹理然后输出到纹理数组。有没有人知道我在哪里出错了它似乎没有给出任何错误,但纹理没有改变?

非常感谢任何建议

由于

2 个答案:

答案 0 :(得分:1)

你在做什么有点慢和不合适。

我建议使用Animator和动画。将所有纹理都放入图集纹理中,这样就可以限制绘制调用量。使该纹理成为一个精灵,并使用精灵编辑器切入子精灵。

添加动画师并创建动画。选择整个子精灵并将它们拖动到动画中。完成。

现在,您可以通过动画制作组件轻松控制速度和播放。

答案 1 :(得分:0)

我设法最终解决了问题,问题似乎是资产的加载工作不正常,这就是框架没有改变的原因。我还将包含图像的文件夹的名称从“Frames”更改为“Resources”。以下是需要它的任何其他人的完整代码:

<label class="error valid reStyle" for="email" id="email-error">OK!</label>

感谢您对动画的建议,我仍然会对其进行调查,因为图像的效果并不理想。