首先,对不起我的英语。 我想将一些纹理备份到每个帧具有不同纹理的游戏对象的列表中。我尝试这样做,我将纹理推入列表中的每一帧,但所有推动的纹理似乎都被覆盖到最新的纹理......我也尝试过Instantiate();当每个纹理被推入列表但纹理完全透明时。我没有使用电影纹理。有谁知道怎么做?
我可能没有足够的解释所以请问我是否有不明确的事情。 谢谢
//Those line of codes are looping every frame
//This is the current code
transitionTextures.Add(targetGameObject.GetComponent<Renderer>().materials[0].mainTexture);
//This is the another code that I tried
transitionTextures.Add(Instantiate(targetGameObject.GetComponent<Renderer>().materials[0].mainTexture));
答案 0 :(得分:0)
**transitionTextures.Add(targetGameObject.GetComponent<Renderer>().materials[0].mainTexture);**
这行代码将targetGameObject.GetComponent()。materials [0] .mainTexture的引用复制到列表中,因此当targetGameObject的mainTexture被更改时,根据引用复制规则,它将更改所有引用列出更新的新值。所以你应该创建一个新的对象,所以它应该按照这个
的值复制 Texture2D temp = targetGameObject.GetComponent<Renderer>().materials[0].mainTexture as Texture2D;
Texture2D tex = new Texture2D(temp.width, temp.height);
tex.SetPixels(temp.GetPixels());
tex.Apply();
transitionTextures.Add(tex);
试试这个,它可能对你有帮助。