我一直试图在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];
}
}
}
我一直在尝试将图像加载到对象数组中,将它们转换为纹理然后输出到纹理数组。有没有人知道我在哪里出错了它似乎没有给出任何错误,但纹理没有改变?
非常感谢任何建议
由于
答案 0 :(得分:1)
你在做什么有点慢和不合适。
我建议使用Animator和动画。将所有纹理都放入图集纹理中,这样就可以限制绘制调用量。使该纹理成为一个精灵,并使用精灵编辑器切入子精灵。
添加动画师并创建动画。选择整个子精灵并将它们拖动到动画中。完成。
现在,您可以通过动画制作组件轻松控制速度和播放。
答案 1 :(得分:0)
我设法最终解决了问题,问题似乎是资产的加载工作不正常,这就是框架没有改变的原因。我还将包含图像的文件夹的名称从“Frames”更改为“Resources”。以下是需要它的任何其他人的完整代码:
<label class="error valid reStyle" for="email" id="email-error">OK!</label>
感谢您对动画的建议,我仍然会对其进行调查,因为图像的效果并不理想。