将 PNG 图像加载到阵列并用作纹理



我一直在尝试在 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];
        }
    }   

}

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

任何建议都非常感谢

谢谢

你正在做的事情有点慢和不合适。

我建议使用动画器和动画。将所有纹理放入图集纹理中,这样您将限制绘制调用量。将该纹理设置为子精灵,并使用精灵编辑器剪切子精灵。

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

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

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

using UnityEngine;
using System.Collections;
public class ChangeImage : MonoBehaviour {
public Texture[] frames;
public int CurrentFrame;
    void OnMouseDown() {
        if (GlobalVar.PlayClip == false){
            GlobalVar.PlayClip = true;          
        } else {
            GlobalVar.PlayClip = false;         
        }
    }   
    public void Start() {
        frames = Resources.LoadAll<Texture>("");
    }
    // Update is called once per frame
    void Update () {
        if(GlobalVar.PlayClip == true){
                CurrentFrame %= frames.Length;
                CurrentFrame++;
                Debug.Log ("Current Frame is " + CurrentFrame);
                GetComponent<Renderer>().material.mainTexture = frames[CurrentFrame];               
            }
        }
}

感谢您对动画的建议,我仍然会研究它,因为图像的性能不是很好。

最新更新