【问题标题】:How to set image on Texture in Unity 3d如何在 Unity 3d 中的纹理上设置图像
【发布时间】:2021-05-30 15:23:09
【问题描述】:

我是 Unity 3D 的新手,我只想做一点小任务:在 Unity 3D 中的 Texture 实例上设置图像。我不知道如何在运行时执行此操作,我也想知道如何将其透明度设置为低。

我不需要 Texture2D - 我只需要 Texture。我的图像采用.png 格式。我还想将我的文档目录中的图像设置到这个纹理上。

【问题讨论】:

    标签: unity3d textures


    【解决方案1】:
    • 首先将图像导入项目,只需将其拖放到项目窗口中即可。

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

    • 接下来,通过右键单击项目窗口来创建新材料。

    • 接下来,您要将图像分配给此材质,您可以通过将图像(位于项目窗口中)拖放到新创建的材质上来执行此操作。在最新版本的 Unity 中,您需要将其放在“Albedo”左侧的方格上。

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

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

    • 在此之后更改它的透明度,只需单击主色样,就会打开一个新窗口,为您提供各种修改器(带有 4 个水平滑块来调整红色、绿色、蓝色和 Alpha)。

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

    现在,当您需要在运行时调用材质时(例如,如果您想更改应用到游戏对象的纹理),只需使用:

    renderer.material
    

    这将影响脚本附加到的游戏对象的材质。例如,如果你想在运行时从脚本中change the texture,你可以说:

    // 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
    

    希望这会有所帮助。如果有什么需要澄清的,请告诉我。

    【讨论】:

    • 感谢详细回答,但如果我想在运行时更改纹理上的图像,我该怎么做?
    • 您需要更改材质。 renderer.material = newMaterial。例如,您可以将var newMaterial : Material 设置为公共变量,然后在检查器中选择他应该使用的材质。
    • 第 3 步 Next, create a new material by right clicking in your project window. 确实需要更好地说明如何执行此操作。
    • 在材质上拖动图像不起作用。我得到“带线的圆圈”图标。我做错了什么?
    • 请注意,这些说明已经过时,不再适用于 2019.4。Importing texturesCreating and using materials 涵盖了这一点。您需要将Shader设置为Unlit/texture
    【解决方案2】:

    在您的资产中拥有图像后

    1. 创建新材质。
    2. 将材质的着色器更改为“Unlit/Texture”。您将获得以下内容

    1. 将图像拖到显示“无(纹理)”的位置,或单击选择按钮并选择图像。然后你会得到纹理

    【讨论】:

      【解决方案3】:

      首先您需要将图像导入您的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,然后从assign 获取_texture 到该material.mainTexture

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-31
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多