如何获得改变游戏对象上每一帧的纹理?

时间:2017-09-11 17:28:01

标签: c# unity3d

首先,对不起我的英语。 我想将一些纹理备份到每个帧具有不同纹理的游戏对象的列表中。我尝试这样做,我将纹理推入列表中的每一帧,但所有推动的纹理似乎都被覆盖到最新的纹理......我也尝试过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));

1 个答案:

答案 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);

试试这个,它可能对你有帮助。