【发布时间】:2014-12-26 20:26:56
【问题描述】:
我需要找到一种方法,允许我使用纹理绘制游戏对象,目标是克隆this game
我已经认为我可以通过使用 depthMask 解决方案来伪造绘画功能,我解释了 here,但是,经过数小时的研究,似乎 setPixels、setPixel 和 setPixels32 可以用来创建真实的绘画,但对于某些人来说因为脚本参考中所有与 setPixels 相关的主题都在 JavaScript 中,我试图将它移植到 c# 但我总是遇到错误,而且这是一种复杂的方法,脚本参考并没有很好地解释它,所以我希望任何人都可以给我写一个使用 setPixels 的示例,以便使用另一个纹理更改对象纹理的一部分? 或者我们可以将整个对象的 alpha 设置为 0,当我们点击它时,我们将部分纹理 alpha 更改为 1?
我真的希望这个话题不要因为它的多样性而被关闭,我在解释整个情况时尽力问一个直截了当的问题。
谢谢
编辑:
几个小时后,我得到了一个很酷的结果,我认为这是实现目标的好方法,这个脚本允许用另一个选定的纹理替换材质纹理中的特定像素(目标纹理必须具有相同的大小,并且可读)
// the texture that i will paint with
public Texture2D targetTexture ;
//temporary texture
Texture2D tmpTexture;
void Start ()
{
//setting temp texture width and height
tmpTexture = new Texture2D (targetTexture.width, targetTexture.height);
for (int y =0; y<tmpTexture.height; y++) {
for (int x = 0; x<tmpTexture.width; x++) {
//filling the temporary texture with the target texture
tmpTexture.SetPixel (x, y, targetTexture.GetPixel (x, y));
}
}
//Apply
tmpTexture.Apply ();
//change the object main texture
renderer.material.mainTexture = tmpTexture;
}
现在我认为问题只是“如何根据鼠标在对象上的位置知道我应该替换哪个像素”
【问题讨论】:
-
我建议您发布您目前生成的代码:您对 C# API 究竟有什么不了解?你试过什么?
-
我不能说我没有尝试过,但这远不是一个好的结果,我会继续尝试,如果我至少达到一个起点,我会在这里发布它,同时,我希望一些编码忍者会来结束我的痛苦:-)
-
好的,我取得了一些进步,请再次检查问题