以前测试过的成功实例,主图如下,默认材料可能不行,要新建一个拖到物体上,此例用的rendering mode是不透明模式即opaque,30的透明度(下面的例子用opaque原始透明度255就不行,所以保险起见还是选用fade模式好,0-255的透明度全部可以):

代码如下(如果物体的材料的属性设置成fade,可能就不用SetMaterialRenderingMode函数了,例子2就没有SetMaterialRenderingMode函数):

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChangeAparent : MonoBehaviour
{float transparentvalue = 1.0f;
public enum RenderingMode{Opaque,Cutout,Fade,Transparent,}public static void SetMaterialRenderingMode(Material material, RenderingMode renderingMode){switch (renderingMode){case RenderingMode.Opaque:material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero);material.SetInt("_ZWrite", 1);material.DisableKeyword("_ALPHATEST_ON");material.DisableKeyword("_ALPHABLEND_ON");material.DisableKeyword("_ALPHAPREMULTIPLY_ON");material.renderQueue = -1;break;case RenderingMode.Cutout:material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.Zero);material.SetInt("_ZWrite", 1);material.EnableKeyword("_ALPHATEST_ON");material.DisableKeyword("_ALPHABLEND_ON");material.DisableKeyword("_ALPHAPREMULTIPLY_ON");material.renderQueue = 2450;break;case RenderingMode.Fade:material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);material.SetInt("_ZWrite", 0);material.DisableKeyword("_ALPHATEST_ON");material.EnableKeyword("_ALPHABLEND_ON");material.DisableKeyword("_ALPHAPREMULTIPLY_ON");material.renderQueue = 3000;break;case RenderingMode.Transparent:material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);material.SetInt("_ZWrite", 0);material.DisableKeyword("_ALPHATEST_ON");material.DisableKeyword("_ALPHABLEND_ON");material.EnableKeyword("_ALPHAPREMULTIPLY_ON");material.renderQueue = 3000;break;}}public void OnTransparentTapped(){if (transparentvalue > 0)transparentvalue -= 0.1f;elsetransparentvalue = 1.0f;//到头了,重置GameObject.Find("SampleAnchorMe").GetComponent<MeshRenderer>().material.color = new Color(1, 1, 1, transparentvalue);SetMaterialRenderingMode(GameObject.Find("SampleAnchorMe").GetComponent<MeshRenderer>().material, RenderingMode.Fade);//此模式效果最好}
}

以上方法会改变物体的颜色为白色,为了不改变颜色,只改变透明度,用以下例子2。

代码挂载到button上,如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ChangeAparent : MonoBehaviour
{float transparentvalue = 1.0f;public void changeit()//改变透明度{if (transparentvalue > 0)transparentvalue -= 0.1f;elsetransparentvalue = 1.0f;//到头了,重置Color a = GameObject.Find("Screw1").GetComponent<MeshRenderer>().material.color;a.a = transparentvalue;GameObject.Find("Screw1").GetComponent<MeshRenderer>().material.color = a;Color b = GameObject.Find("Screw2").GetComponent<MeshRenderer>().material.color;b.a = transparentvalue;GameObject.Find("Screw2").GetComponent<MeshRenderer>().material.color = b;Debug.Log($"transparentvalue is: {transparentvalue}");}
}

材料设置如下:

另外单一改变某个物体(代码挂载到此物体上)颜色的代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Spherecolor : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){GetComponent<Renderer>().material.color = new Color(0, 1, 0);}// Update is called once per framevoid Update(){}
}

unity代码控制物体的透明度总结相关推荐

  1. [Unity]代码控制在3D物体上播放帧动画

    不使用Unity自带的Animation,在3D物体上播放帧动画 图片必须是可以整齐排列的 可以分割的完整的图片. 像这样 不能像这样: 也不能像这样,过于紧凑,不能完整切割 空项目,空场景, 场景中 ...

  2. Unity手势控制物体球形旋转

    目的:当我想让物体绕Y轴旋转时,无论他当前的朝向都可以绕绝对Y轴转,同理X轴,Z轴.同时不可以有万向锁. 原理:当我们物体绕轴旋转时,其实是矩阵相乘,所以我们需要先算出当前要旋转角度的旋转矩阵,代码如 ...

  3. Unity鼠标控制物体360°旋转和点击移动

    一:操作 创建一个游戏对象(方块) 把代码挂在摄像机上 二:代码 public Camera ca;     public GameObject transformObj; Ray ray;     ...

  4. unity脚本 --- 控制物体(游戏对象)移动

    一.键盘WSAD控制移动 void Update() {float horizontal = Input.GetAxis("Horizontal");float vertical ...

  5. Unity鼠标控制物体拖拽旋转

    using System.Collections; using System.Collections.Generic; using UnityEngine; public enum ShowType ...

  6. Unity中C#代码学习用wasd和上下左右键控制物体前后左右上下移动和绕轴旋转

    Unity中C#代码学习用wasd和上下左右键控制物体前后左右上下移动和绕轴旋转 using System.Collections; using System.Collections.Generic; ...

  7. unity 关闭自己脚本_unity中使用代码控制脚本的开启和关闭 enabled

    学习中遇到了使用enabled 来控制脚本的开关,中间遇到了一些问题,记录一下,以便遇到类似问题的新手同学少走弯路. 在想使用代码控制脚本的开启和关闭的时候,网上搜索到的解决方案是这样的: GameO ...

  8. T4M插件放入unity后怎么找不到_Unity动画系统详解4:如何用代码控制动画?

    摘要:通过上一篇咱们知道了播放动画需要使用Animator,那么如何用代码控制动画呢? 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这几周一起来复(yu)习(xi)动画系统 ...

  9. Unity 控制物体移动的一些方法

    Unity 控制物体移动的一些方法 开坑, 回头慢慢补. 移动方法的总结. 1, 直接+=Vector3 transform.position += Vector3.forward * moveSpe ...

最新文章

  1. linux下free命令详解
  2. bert中文预训练模型_[中文医疗预训练模型] MC-BERT
  3. python写货币转换_如何在Python中将货币字符串转换为浮点数?
  4. 信号处理:CTFS-CTFT
  5. C++资源库不完全版本
  6. 数据库中主键的选择和使用
  7. Struts2 + MySQL 实现分页
  8. vscode-icons插件使用
  9. 使用alarm API实现灵活的延时操作
  10. Spring boot 2.1版本、2.3及以上版本使用actuator实现优雅关闭程序
  11. JSON金额解析BUG的解决过程
  12. NSGA2学习(1)——与遗传算法的比较
  13. 找到Linux共享文件夹的实际位置
  14. USB Repair v8.1.3.1285 – USB 修复工具
  15. Iocomp Crack和ProEssentials Crack
  16. teamviewer介绍及操作
  17. 智能快递柜的电气特性
  18. 亚马逊最好用的选品工具_亚马逊为何要投资2020年最糟糕的IPO
  19. webstorm/idea license server
  20. 旅游公寓APP开发特点

热门文章

  1. 如何计算阻力系数与升力系数【翻译】
  2. 【docker】docker容器端口如何暴漏出来?
  3. Java中的七种设计原则
  4. 京东商城在掩盖什么?(1)
  5. java使用jacob给word添加水印
  6. 卧槽,GitHub 开源了一个看片神器!
  7. 小猫钓鱼java代码,【Java个人笔记】练习-小猫钓鱼
  8. 一个爬取图片的app
  9. 前端获取计算机设备信息,前端获取设备/APP信息
  10. 远程控制桌面,手机外网远程桌面连接内网的实现过程,详细图文并茂