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

做笑话网站需要什么开发网站建设公司

做笑话网站需要什么,开发网站建设公司,杭州企业管理咨询有限公司,泉州西街需求描述 在游戏中#xff0c;开发者为了让玩家更直接地看到待拾取的物品从而为其添加一种闪烁效果#xff0c;或者模拟现实中闪烁的灯光效果#xff0c;我能够想到的一种方案则是通过控制光照强度来实现#xff0c;那么本篇文章我们就尝试通过这个方案来实现一下#xff…需求描述 在游戏中开发者为了让玩家更直接地看到待拾取的物品从而为其添加一种闪烁效果或者模拟现实中闪烁的灯光效果我能够想到的一种方案则是通过控制光照强度来实现那么本篇文章我们就尝试通过这个方案来实现一下看看是否能够满足这类需求这也能够作为我们个人资源库的一部分以后如果在开发中有这方面需求就可以直接把这个方案搬过来用虽然这可能只是一个小小的功能但这是一个积少成多的过程只要我们能够完整地实现并使之通过测试那么就算是一种成功也能够从中获得收获。 功能描述 如果大家了解过Light和Light2D组件那么就应该知道其中的intensity属性用于控制光照强度本质上闪烁就是通过改变光照强度的值来控制的从暗到明则对应intensity的值从小到大。         首先我们需要两个属性——光照强度起始值beginValue和光照强度最终值endValue还有从beginValue到endValue的光照强度变化的步长值stepValue同时还要确定等待时间的属性timeSpan。为了使得这个组件应用更广泛我们不公开beginValue和endValue而是让使用者明确光照强度的最小值minValue以及光照强度最大值maxValue所以beginValue既可以是minValue也可以是maxValue这取决于使用者的需求。 其次就是需要明确从beginValue到endValue的过渡方式了我首先能够想到的是是否需要循环闪烁假定属性Loop用于明确是否循环闪烁如果不循环闪烁那么只要从beginValue过渡到endValue就结束若需要循环闪烁则需要明确循环的方式如果每次循环都是从beginValue过渡到endValue则可以假定这种方式叫BeginToEnd除此之外还可以是先从beginValue过渡到endValue然后再过渡到beginValue类似一个钟摆一样假定这种方式叫Pendulum。 最后我们还可以规定beginValue的取值我们规定它要么是minValue要么是maxValue只要确定了beginValue就可以确定endValue所以我们假定属性beginValueType用于明确光照强度起始值的类型。 属性解释LightUnity的Light组件Light2DUniversal RP中的Light2D组件intensity Light/Light2D组件的光照强度属性 beginValue光照强度起始值endValue光照强度最终值stepValue光照强度变化的步长值timeSpan光照强度变化的时间间隔minValue光照强度的最小值maxValue光照强度的最大值Loop是否循环闪烁BeginToEnd每次循环都是从beginValue过渡到endValuePendulum先从beginValue过渡到endValue然后再过渡到beginValue类似一个钟摆beginValueType光照强度起始值的类型 代码展示(C#) CommonLightTransition.cs using System.Collections; using UnityEngine;namespace Tools {public class CommonLightTransition : MonoBehaviour{[Header(必要属性)][Tooltip(光照强度变化平均值,默认值为0.1(值0))][SerializeField] private float IntensityStepValue 0.1f;[Tooltip(光照强度最小值,默认值为1(值属于[0,IntensityMaxValue)))][SerializeField] private float IntensityMinValue 1;[Tooltip(光照强度最大值,默认值为2(值IntensityMinValue))][SerializeField] private float IntensityMaxValue 2;[Tooltip(过渡时间间隔,默认值为0.05,单位s(值0))][SerializeField] private float TransitionTimeSpan 0.05f;[Tooltip(是否开启光照过渡循环,默认值为true)][SerializeField] private bool Loop true;[Tooltip(光照过渡循环方式,需要勾选Loop该选项才有效,BeginToEnd是每次循环从光照过渡起始值开始,Pendulum是从光照过渡起始值至光照过渡最终值再过渡至光照过渡起始值(钟摆式过渡))][SerializeField] private LoopMode TheLoopMode;[Tooltip(光照过渡起始值类型,Min代表起始值从IntensityMinValue开始,Max同理)][SerializeField] private BeginValueType TransitionBeginValueType;protected bool toMax;protected bool lockUnLoopTransition;protected int index;protected bool _isInit { get isInit; }protected float[] _changedValues { get changedValues; }protected BeginValueType _transitionBeginValueType { get TransitionBeginValueType; }protected bool _loop { get Loop; }protected LoopMode _loopMode { get TheLoopMode; }protected float _intensityMinValue { get IntensityMinValue; }protected float _intensityMaxValue { get IntensityMaxValue; }private bool isInit, endTransition;private float[] changedValues;private IEnumerator coroutine;/// summary/// 启动过渡/// /summarypublic void StartTransition(){if (isInit endTransition){StartCoroutine(coroutine);endTransition false;}}/// summary/// 停止过渡/// /summarypublic void StopTransition(){if (isInit !endTransition){StopCoroutine(coroutine);endTransition true;}}/// summary/// 初始化游戏对象相关组件/// para返回值:初始化组件成功则返回true,否则返回false/para/// /summaryprotected virtual bool InitComponents() { return false; }/// summary/// 光照过渡类型处理/// /summaryprotected virtual void TransitionTypeDeal() { }/// summary/// 非循环光照过渡/// /summaryprotected virtual void UnLoopLightTransition() { }/// summary/// 循环光照过渡/// /summaryprotected virtual void LoopLightTransition() { }/// summary/// 组件检测控制台提示方法/// para声明:该方法仅在Unity Editor模式下且当Inspector面板中组件属性发生更改时执行/para/// /summaryprotected virtual void ComponentLog() { }/// summary/// 光照过渡起始值类型/// /summaryprotected enum BeginValueType{Min, Max}/// summary/// 循环光照过渡方式/// /summaryprotected enum LoopMode{BeginToEnd, Pendulum}private void Start(){isInit InitComponents() InitParameters();}//初始化游戏对象相关参数private bool InitParameters(){if (IntensityStepValue 0 || IntensityMinValue 0 || IntensityMaxValue 0) return false;if (IntensityMinValue IntensityMaxValue) return false;if (TransitionTimeSpan 0) return false;changedValues NumberRange.FloatRange(IntensityMinValue, IntensityMaxValue, IntensityStepValue, true);if (changedValues null changedValues.Length 0) return false;TransitionTypeDeal();coroutine UnLoopTransition();if (Loop){lockUnLoopTransition true;coroutine LoopTransition();}endTransition true;return true;}private IEnumerator LoopTransition(){while (true){LoopLightTransition();yield return new WaitForSeconds(TransitionTimeSpan);}}private IEnumerator UnLoopTransition(){while (!lockUnLoopTransition){UnLoopLightTransition();yield return new WaitForSeconds(TransitionTimeSpan);}endTransition true;}#if UNITY_EDITORprivate void OnValidate(){ComponentLog();} #endif} } LightTransition2D.cs  using UnityEngine.Experimental.Rendering.Universal; using UnityEngine;namespace Tools {public class LightTransition2D : CommonLightTransition{[Header(必要组件(需要下载扩展包:Universal RP))][Tooltip(Light2D组件)][SerializeField] private Light2D Light2D;private bool isLight2DLog;//初始化游戏对象相关组件protected sealed override bool InitComponents(){if (Light2D null) return false;return true;}//光照过渡类型处理protected sealed override void TransitionTypeDeal(){if (_transitionBeginValueType BeginValueType.Min){Light2D.intensity _intensityMinValue;index 0;toMax true;}else{Light2D.intensity _intensityMaxValue;index _changedValues.Length - 1;toMax false;}}//非循环光照过渡protected sealed override void UnLoopLightTransition(){if (_isInit !lockUnLoopTransition){if (_transitionBeginValueType BeginValueType.Min){if (index _changedValues.Length){lockUnLoopTransition true;return;}Light2D.intensity _changedValues[index];}else{if (index 0){lockUnLoopTransition true;return;}Light2D.intensity _changedValues[index--];}}}//循环光照过渡protected sealed override void LoopLightTransition(){if (_isInit _loop){if (_loopMode LoopMode.Pendulum){if (index 0) toMax true;else if (index _changedValues.Length - 1) toMax false;}else if (index 0 || index _changedValues.Length - 1) TransitionTypeDeal();if (toMax) Light2D.intensity _changedValues[index];else Light2D.intensity _changedValues[index--];}}//组件检测控制台提示方法protected sealed override void ComponentLog(){if (Light2D null){if (!isLight2DLog){Debug.LogWarning(The component \colororangebLight2D/b/color\ is null.);isLight2DLog true;}}else isLight2DLog false;}} } LightTransition.cs  using UnityEngine;namespace Tools {public class LightTransition : CommonLightTransition{[Header(必要组件)][Tooltip(Light组件)][SerializeField] private Light Light;private bool isLightLog;//初始化游戏对象相关组件protected sealed override bool InitComponents(){if (Light null) return false;return true;}//光照过渡类型处理protected sealed override void TransitionTypeDeal(){if (_transitionBeginValueType BeginValueType.Min){Light.intensity _intensityMinValue;index 0;toMax true;}else{Light.intensity _intensityMaxValue;index _changedValues.Length - 1;toMax false;}}//非循环光照过渡protected sealed override void UnLoopLightTransition(){if (_isInit !lockUnLoopTransition){if (_transitionBeginValueType BeginValueType.Min){if (index _changedValues.Length){lockUnLoopTransition true;return;}Light.intensity _changedValues[index];}else{if (index 0){lockUnLoopTransition true;return;}Light.intensity _changedValues[index--];}}}//循环光照过渡protected sealed override void LoopLightTransition(){if (_isInit _loop){if (_loopMode LoopMode.Pendulum){if (index 0) toMax true;else if (index _changedValues.Length - 1) toMax false;}else if (index 0 || index _changedValues.Length - 1) TransitionTypeDeal();if (toMax) Light.intensity _changedValues[index];else Light.intensity _changedValues[index--];}}//组件检测控制台提示方法protected sealed override void ComponentLog(){if (Light null){if (!isLightLog){Debug.LogWarning(The component \colororangebLight/b/color\ is null.);isLightLog true;}}else isLightLog false;}} } NumberRange.cs  using System.Collections.Generic; using System.Linq;namespace Tools {/// summary/// 数值范围数组工具类/// /summarypublic static class NumberRange{/// summary/// 获取指定范围内指定步长的Float数值数组/// parap_start:起始值/para/// parap_end:终点值/para/// parap_step:步长值/para/// para[ContainsEnd]:是否包括终点值,默认为false/para/// para返回值:Float[]/para/// /summarypublic static float[] FloatRange(float p_start, float p_end, float p_step, bool ContainsEnd false){if (!ContainsEnd) return DoFloatRange(p_start, p_end, p_step).ToArray();else{Listfloat result DoFloatRange(p_start, p_end, p_step).ToList();result.Add(p_end);return result.ToArray();}}static IEnumerablefloat DoFloatRange(float p_start, float p_end, float p_step){for (float i p_start; i p_end; i p_step){yield return i;}}} } 界面展示 LightTransition2D LightTransition 部分演示效果 LightTransition2D组件的简单演示效果 LightTransition2D - Demo 资源下载 GitHub_LightTransition     百度网盘 如果这篇文章对你有帮助请给作者点个赞吧
http://wiki.neutronadmin.com/news/18946/

相关文章:

  • 手机购物网站模板下载如何做可以赚钱的网站
  • 2018年临沂建设局网站网站开发用到的虚拟机有哪些
  • 如何给网站增加关键词千图网免费设计图片素材网
  • 兰州网站建设设计江阴安泰物流有限公司网站谁做的
  • 网站开发计什么科目青岛网站建设维护
  • 网站建设 中企动力烟台广州刚刚通报
  • 做机械外贸什么网站好泰安房产网网上交易中心
  • 手机app ui设计在线网站网站在线帮助如何设计
  • 付费网站怎么做小企业网站建设和管理
  • 海宁做网站iis wordpress index.php
  • 网站建设方案平台架构优良的网站邮箱服务器提供商isp
  • 世界杯哪个网站做代理调用wordpress相关文章
  • 3g医院网站模板如何成立一个网站
  • 如何搭建一个公司网站seo中文全称是什么
  • 网站备案 99网站建设和前端开发的区别
  • 珠宝商城网站模板免费下载评析网站建设报价单
  • 如何做贷款网站网站建设公司的商业模式
  • 可以在线编程的网站国家企业信用信息公示网官网查询
  • 表格布局的网站网站没备案怎么做淘宝客
  • 重庆seo网站建设优化网站建设项目管理论文
  • 大屏手机网站代运营公司哪里有
  • 投票网站设计网站建设app开发 微信小程序 网站开发 自动脚本
  • 线上运营怎么做台州百度搜索优化
  • 网站建设项目中标通知wordpress播放器源码
  • 响应式网站设计企业seo快速整站上排名教程
  • 建德网站建设德品牌网西乡移动网站建设
  • 300个吉祥公司取名大全搜索引擎优化seo网站
  • 做网站收费标网站ip访问做图表
  • 做短租有哪些网站给你一个网站你怎么做
  • 北京网站设计网站设计公司价格云南省建设厅网站怎么进不去