当前位置: 首页 > news >正文

河南政务服务网查二建证书合肥网络seo推广服务

河南政务服务网查二建证书,合肥网络seo推广服务,溆浦县建筑公司网站,wordpress网站如何清理js前言 如下图所示,直播玩法中需要实现受击变红的效果: 关于大批量加载,可以参考我的上篇博客。 关于实现方式,网上参考资料较少,经过一段时间的研究,我终于实现了以上效果。 大致步骤为: 1&a…

前言

如下图所示,直播玩法中需要实现受击变红的效果:

关于大批量加载,可以参考我的上篇博客。

关于实现方式,网上参考资料较少,经过一段时间的研究,我终于实现了以上效果。

大致步骤为:

1,修改shader group,以实现对修改颜色的支持

2,在加载的实体上挂载脚本,以方便能找到修改的实体

3,代码动态更改IComponentData的值,以实现对物体的颜色控制

1,修改shader group

实现原理参考了这篇官方帖子。

关于shader group的基础知识这里不做赘述,直接拷贝原始模版:

并进行如下修改:

a,添加lerp

在原有basecolor中添加一个lerp,以实现将叠加的红色赋值进来

b,公开addValue属性

修改addValue的公开属性,为可更改的值

c,查看属性

最后,我们可以在引用的材质球上,看到addValue的属性

这就表明,我们可以在代码中去修改这个参数。

2,需要修改的实体挂载脚本

a,新建一个IComponentData

在dots里,每个属性基本都是对应一个IComponentData。

所以,我们声明一个Render_AddColor,其中[MaterialProperty("_addValue")]代表shader group中公开的值:

 [BurstCompile][MaterialProperty("_addValue")]public struct Render_AddColor : IComponentData{public float value;public Render_AddColor(float c) { value = c; }}

我这里为了省事,把这个放到这块了:

这个放到别的地方应该不影响。

b,新建一个ChangeColorBarkerBehaviour脚本

这个脚本的作用在于,存储需要修改的实体:

using UnityEngine;
using Unity.Entities;namespace GPUECSAnimationBaker.Engine.AnimatorSystem
{public class ChangeColorBarkerBehaviour : MonoBehaviour{public GameObject[] prefabs;}public class ChangeColorBarker : Baker<ChangeColorBarkerBehaviour>{public override void Bake(ChangeColorBarkerBehaviour authoring){Entity entity = GetEntity(TransformUsageFlags.None);// 添加一个动态缓冲区来存储每个 Prefab 的实体DynamicBuffer<AddColorBufferElement> addColorBuffer = AddBuffer<AddColorBufferElement>(entity);// 遍历 prefabs 数组for (int prefabIndex = 0; prefabIndex < authoring.prefabs.Length; prefabIndex++){// 获取 Prefab 对应的实体Entity prefabEntity = GetEntity(authoring.prefabs[prefabIndex], TransformUsageFlags.Dynamic);                 // 将实体添加到缓冲区为实体添加 Render_AddColor 组件,这里有点问题//AddComponent(prefabEntity, new Render_AddColor()//{//    value = 0//});addColorBuffer.Add(new AddColorBufferElement(){entity = prefabEntity});}}}// 定义一个缓冲区元素类型public struct AddColorBufferElement : IBufferElementData{public Entity entity;}
}
b,找到需要修改的实体

挂载方式如下:

这样,就可以动态获取到该实体。

3,动态修改需要改变的值

这一步其实就比较简单了,首先获取到entity实体,修改函数如下:

    public void ChangeColor2(EntityManager entityManager, Entity e){DynamicBuffer<AddColorBufferElement> buffer = entityManager.GetBuffer<AddColorBufferElement>(e);Debug.Log("Buffer Length: " + buffer.Length);// 创建一个列表来存储缓冲区中的元素var list = new List<AddColorBufferElement>();foreach (var element in buffer){list.Add(element);}// 遍历列表并处理每个元素for (int i = list.Count - 1; i >= 0; i--){var bufferElement = list[i];Entity prefabEntity = bufferElement.entity;// 确保实体存在if (!entityManager.Exists(prefabEntity)){Debug.LogWarning($"Entity {prefabEntity} does not exist.");continue;}// 检查并添加 Render_AddColor 组件if (!entityManager.HasComponent<Render_AddColor>(prefabEntity)){Debug.Log("添加");entityManager.AddComponentData(prefabEntity, new Render_AddColor(0));}else{// 获取组件数据并更新其值Render_AddColor addColor = entityManager.GetComponentData<Render_AddColor>(prefabEntity);Debug.Log($"Entity: {prefabEntity}, AddColor Value: {addColor.value}");// 更新组件的值addColor.value = Random.Range(0.3f, 0.9f);entityManager.SetComponentData(prefabEntity, addColor);}}}

这个函数是测试用的, 作用在于每秒随机显示不同value的红色,最终测试画面如下:

4,结语

如果有其他的需求,可以自定义shadergroup,然后自定义公开值。

有需要可以联系我。

http://www.cadmedia.cn/news/3273.html

相关文章:

  • 购物网站建设目标保定seo排名外包
  • 视频制作培训海淀区seo多少钱
  • 下载中国建设银行网站宁波seo智能优化
  • 不知道怎么选阿里巴巴怎么优化关键词排名
  • 下载网站源码网站排名怎么做
  • wordpress获取当前文章名称seo排名优化是什么意思
  • 长沙专门做网站公司有哪些做网站的公司有哪些
  • wordpress可复制代码高亮百度搜索关键词排名优化
  • 广告制作合同范本盐城seo推广
  • 加强网站安全建设怎么接广告赚钱
  • 深圳企业网站建设公司哪家好在线注册免费域名
  • 石景山网站建设建设网站的基本流程
  • 龙岗建设局网站seo算法优化
  • 广州建设银行分行招聘网站做网站哪个平台好
  • 电脑网站设计页面企业产品营销策划推广
  • 编程入门先学什么好搜索引擎优化的内容有哪些
  • 商贸企业网站建设设计方案中国军事新闻最新消息
  • 深圳办公室租金seo诊断的网络问题
  • 2023b站免费推广网营销网站制作公司
  • 国外设计灵感网站网页制作
  • 武隆网站建设哪家好个人免费建站系统
  • 英文网站建设报价西安网站制作建设
  • 房山新农村建设网站百度站长平台论坛
  • 宁波企业网站排名优化微信公众号推广软文案例
  • 沈阳制作公司网站其中包括
  • 国企网站建设合同郑州seo顾问外包
  • 临沂建设质量监督站网站网络营销策划方案书范文
  • 淘宝网站建设靠不靠谱网页优化包括
  • 山东网站营销seo哪家好谷歌浏览器网页版入口在哪里
  • 郑州网站建设有限公司seo是哪个国家