材质 动态自发光

动态修改材质自发光

  1. 新建一个场景,关闭方向光;目的:自发光更明显
  2. 创建2个立方体;
  3. 创建一个材质;
  4. 材质赋值给新建的两个立方体;
  5. 两个立方体挂载脚本。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestEmssion : MonoBehaviour
{
    MaterialPropertyBlock block;
    Renderer render;
    Color defaultColor;
    private void Start()
    {
        block = new MaterialPropertyBlock();
        render = GetComponent<Renderer>();
    }
    private void OnMouseEnter()//鼠标移入 碰撞体触发
    {
        render.GetPropertyBlock(block);
        render.material.EnableKeyword("_EMISSION");//开启自发光
        block.SetColor("_EmissionColor", Color.blue);//设置颜色
        render.SetPropertyBlock(block);
    }
    private void OnMouseExit()//鼠标移出 碰撞体触发
    {
        render.GetPropertyBlock(block);    
        block.SetColor("_EmissionColor", defaultColor);//设置颜色
        render.material.DisableKeyword("_EMISSION");//关闭高光
        render.SetPropertyBlock(block);
    }
}

存在问题

编辑模式下,有高光效果。发布后,没有高光效果。

解决方法

  1. 材质勾选Emssion;
  2. Global Illumination 设置为Realtime或者None即可

原因

Global Illumination:指定此材质发出的光如何影响附近其他游戏对象的环境光照。

  1. Realtime:Unity 将此材质的⾃发光添加到场景的 Realtime Global Illumination(实时全局光照)计算中。这意味着此⾃发光会影响附近游戏对象(包括正在移动的游戏对象)的光照。
  2. Baked:Unity 将此材质的⾃发光烘焙到场景的静态全局光照中。此材质会影响附近静态游戏对象的光照,但不会影响动态游戏对象的光照。但是,光照探针仍然会影响动态游戏对象的光照。
  3. None:此材质的⾃发光不会影响场景中的实时光照贴图、烘焙光照贴图或光照探针。此⾃发光不会照亮或影响其他游戏对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值