如何在Unity 3D中设置纹理图像

9
我是Unity 3D的新手,我只想完成一个小任务:在Unity 3D中设置Texture实例上的图像。我不知道如何在运行时执行此操作,也想知道如何将其透明度降低。
我不需要Texture2D - 我只需要Texture。我的图像采用.png格式。我还想从我的文档目录中将一个图像设置到该纹理上。
3个回答

16
  • 首先,通过将图像拖放到项目窗口中来将其导入到您的项目中。

  • 一旦图像在项目窗口中,请选择它并确保在检查器中将其设置为纹理类型为“Texture”。

  • 接下来,在项目窗口中右键单击以创建新材质。

  • 然后,您需要将图像分配给此材质,可以通过将图像(位于项目窗口中)拖放到新创建的材质上来完成。在Unity的最新版本中,您需要将其拖放到“Albedo”左侧的方形区域中。

  • 然后点击新材质,在检查器窗口中应该显示您的图像是活动纹理,并且着色器默认应设置为漫反射。

  • 要激活透明度,您需要通过在检查器窗口中单击着色器下拉菜单并选择Transparent / Diffuse(或任何透明选项,具体取决于您想要的外观)来更改着色器类型。

  • 然后,要更改其透明度,只需单击主颜色样本,然后会打开一个新窗口,提供各种修改器(带有4个水平滑块以调整红色,绿色,蓝色和Alpha)。

  • 调整Alpha滑块以影响材质的透明度。

现在,每当您需要在运行时调用材质(例如,如果您想更改应用于游戏对象的纹理),只需使用以下方式:
renderer.material

这将影响脚本所附加的gameObject的材料。例如,如果您想要在运行时从脚本中更改纹理,可以这样说:
// Assign the texture exposed in the inspector the renderer's material

var texture : Texture;
renderer.material.mainTexture = texture;

如果您想更改 Alpha 通道:

renderer.material.color.a = 0 // For example

希望这可以帮到你。如果有需要澄清的地方,请告诉我。

感谢您详细的回答,但如果我想在运行时更改纹理上的图像,我该怎么做? - josh
你需要更改材质。renderer.material = newMaterial。例如,你可以将 var newMaterial: Material 设置为公共变量,然后在检查器中选择应该使用的材质。 - David Raab
1
第三步“接下来,在项目窗口中右键单击以创建新材料”确实需要更好的描述来说明如何实现。 - Chuck Savage
拖动图像到材质上无法工作。我得到了一个带有“圆圈和一条线”的图标。我做错了什么? - tatmanblue
请注意,这些说明已经过时,不再适用于2019.4。导入纹理创建和使用材质涵盖了此内容。 您需要将着色器设置为“Unlit/texture”。 - Deanna
这个答案可能需要更新,包括下面 Tiago 的回答。 - donutguy640

4

将图像文件放在资源文件夹中

  1. 创建一个新材质(Material)。
  2. 将材质的着色器(Shader)更改为"Unlit/Texture",会得到以下结果

New Material ready for texture

  1. 将图像文件拖放到"None (Texture)"位置或单击选择按钮并选择图像文件,即可得到纹理(Texture)。

Final texture


1

首先,您需要将图像导入到您的asset文件夹中。

如果您想使用代码在运行时设置Texture上的图像,请使用下面提供的代码。

[SerializeField] private Texture _texture;
[SerializeField] private GameObject _gameObject;


void Start()
{
    Material m = GetComponent<MeshRenderer>().material;
    m.color = new Color(1,1,1,.5f);
    m.mainTexture = _texture;
}    

首先,分配一个你想要更改纹理的Gameobject。 然后在_texture中分配一张图片。

接着从该对象获取一个material并将_texture分配给material.mainTexture


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接