我正在创建一个简单的游戏,需要捕获从网络摄像头的照片,每次用户点击一些对象。为了避免由于将Texture2D转换为PNG并将图像写入磁盘的任务而出现滞后问题,我尝试存储捕获的Texture2D列表,并在游戏结束后将所有内容写入磁盘。
问题是,当我从摄像头捕获一个Texture2D texture并尝试执行List.Add(texture)时,列表中的所有元素都会更新,因为它存储的是texture的引用,而不是纹理本身。有没有人可以推荐一种存储所有纹理的替代方案?
编辑:插入代码。
public class GetPhoto : MonoBehaviour
{
WebCamTexture webcam;
Texture2D photo;
List<Texture2D> photos;
IEnumerator TakePhoto()
{
//run when user click on object.
yield return new WaitForEndOfFrame();
photo.SetPixels(webcam.GetPixels());
photo.Apply();
photos.Add(photo);
}}
发布于 2021-03-02 21:47:14
如上所述,对每个媒体都使用一个新的Texture2D实例,例如
IEnumerator TakePhoto()
{
//run when user click on object.
yield return new WaitForEndOfFrame();
var photo = new Texture2D(yourTextureWidth, yourTextureHeight);
photo.SetPixels(webcam.GetPixels());
photo.Apply();
photos.Add(photo);
}否则,每次覆盖实例的内容时,列表中的每个条目都引用完全相同的Texture2D实例=>。
https://stackoverflow.com/questions/66439768
复制相似问题