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

企业网站设计与推广化妆品电子商务网站建设策划书

企业网站设计与推广,化妆品电子商务网站建设策划书,免费建网站哪个网好,友情链接交换的方法文章目录 简介示例1#xff1a;基础角色状态切换示例2#xff1a;添加更多角色状态示例3#xff1a;战斗状态示例4#xff1a;动画同步状态示例5#xff1a;状态机管理器示例6#xff1a;状态间转换的条件触发示例7#xff1a;多态行为与上下文类 简介 Unity 中的状态模… 文章目录 简介示例1基础角色状态切换示例2添加更多角色状态示例3战斗状态示例4动画同步状态示例5状态机管理器示例6状态间转换的条件触发示例7多态行为与上下文类 简介 Unity 中的状态模式State Pattern是一种行为设计模式它允许一个对象在其内部状态改变时改变其行为。在游戏开发中状态模式常用于实现角色的不同行为状态切换例如玩家角色的行走、奔跑、跳跃、攻击等不同状态。下面将通过五个简化示例来阐述如何在Unity中实现状态模式 示例1基础角色状态切换 // 定义抽象状态类 public abstract class CharacterState {protected Character character;public void SetCharacter(Character _character){this.character _character;}// 抽象方法子类需要实现具体行为public abstract void Update(); }// 具体状态类IdleState public class IdleState : CharacterState {public override void Update(){Debug.Log(角色处于闲置状态);// 检查是否应该转换到其他状态如按下移动键则切换至MoveStateif (Input.GetKey(KeyCode.W)){character.ChangeState(new MoveState());}} }// 具体状态类MoveState public class MoveState : CharacterState {public override void Update(){Debug.Log(角色正在移动);// 检查是否应返回闲置状态或切换至其他状态if (!Input.GetKey(KeyCode.W)){character.ChangeState(new IdleState());}} }// 角色类持有当前状态并处理状态切换 public class Character : MonoBehaviour {private CharacterState currentState;public void ChangeState(CharacterState newState){if (currentState ! null){currentState.SetCharacter(null);}currentState newState;currentState.SetCharacter(this);}void Update(){currentState.Update();} }示例2添加更多角色状态 public class JumpState : CharacterState {public override void Update(){Debug.Log(角色正在跳跃);// 跳跃动作完成后切换回Idle或Move状态if (IsJumpFinished()){character.ChangeState(currentlyOnGround ? new IdleState() : new MoveState());}} }// 初始化时设置初始状态 void Start() {currentState new IdleState();currentState.SetCharacter(this); }示例3战斗状态 public class CombatState : CharacterState {// 实现战斗相关的更新逻辑比如检测敌人、攻击等public override void Update(){Debug.Log(角色处于战斗状态);// 检查战斗是否结束结束后切换回Idle或Run状态if (CombatIsOver()){character.ChangeState(new IdleState());}} }示例4动画同步状态 public class AnimationState : CharacterState {Animator anim;public AnimationState(Character character, Animator animator){SetCharacter(character);anim animator;}public override void Update(){// 根据当前状态播放相应的动画switch (GetType().Name){case nameof(IdleState):anim.Play(Idle);break;case nameof(MoveState):anim.Play(Run);break;// 其他状态对应的动画...}} }示例5状态机管理器 // 为了更复杂的系统可以创建一个专门管理状态切换和维护状态栈的类 public class StateMachine {StackCharacterState stateStack new StackCharacterState();public void PushState(CharacterState newState){stateStack.Push(newState);newState.SetCharacter(character);}public void PopState(){if (stateStack.Count 0){var oldState stateStack.Pop();oldState.SetCharacter(null);if (stateStack.Count 0){currentState stateStack.Peek();currentState.SetCharacter(character);}}}// 更新调用当前栈顶状态的方法public void Update(){currentState?.Update();} }以上代码仅作示例并未涵盖所有异常处理和实际项目中的细节但足以说明如何在Unity中应用状态模式来组织和管理不同角色状态的切换。 示例6状态间转换的条件触发 在某些情况下角色的状态切换可能需要基于特定的游戏事件或条件。下面展示一个基于冷却时间Cooldown的状态切换示例 public class AttackState : CharacterState {private float attackCoolDown;private bool canAttack;public AttackState(float coolDownTime){attackCoolDown coolDownTime;canAttack true;}public override void Update(){if (canAttack Input.GetKeyDown(KeyCode.Space)){Debug.Log(角色进行攻击);// 触发攻击动作OnAttack();canAttack false;Invoke(nameof(ResetAttack), attackCoolDown);}}private void ResetAttack(){canAttack true;// 攻击结束后根据情况切换至其他状态例如Idlecharacter.ChangeState(new IdleState());}private void OnAttack(){// 实际执行攻击逻辑如播放动画、计算伤害等} }示例7多态行为与上下文类 为了进一步解耦状态和角色实体可以创建一个抽象的上下文类Context由它来持有当前状态并处理状态之间的切换 // 抽象上下文类 public abstract class CharacterContext {protected CharacterState currentState;public virtual void ChangeState(CharacterState newState){currentState?.Exit();currentState newState;currentState.Enter(this);}public abstract void Update();// 状态进入和退出时调用的方法public virtual void NotifyStateEnter() currentState.Enter(this);public virtual void NotifyStateExit() currentState.Exit(); }// 具体上下文类游戏角色实体 public class Player : CharacterContext {// 其他游戏相关属性...public override void Update(){currentState.Update();}// 重写以添加额外的进入/退出通知逻辑public override void NotifyStateEnter() { ... }public override void NotifyStateExit() { ... } }// 每个状态类实现Enter和Exit方法 public class WalkState : CharacterState {public override void Enter(CharacterContext context){// 进入行走状态时的行为比如启动行走动画}public override void Exit(){// 退出行走状态时的行为比如停止行走动画} }以上示例展示了如何通过状态模式在Unity中灵活管理角色的不同状态并允许状态之间根据特定条件和事件平滑切换。每个具体状态类都负责自己的行为逻辑而上下文类则统一管理这些状态的切换。 python推荐学习汇总连接 50个开发必备的Python经典脚本(1-10) 50个开发必备的Python经典脚本(11-20) 50个开发必备的Python经典脚本(21-30) 50个开发必备的Python经典脚本(31-40) 50个开发必备的Python经典脚本(41-50) ———————————————— ​最后我们放松一下眼睛
http://www.hkea.cn/news/14500214/

相关文章:

  • php响应式个人博客网站设计如何查询网站的空间商
  • 关于网站首页建设的文章农产品电子商务网站建设要求
  • 临沂建网站哪家好网站建设 局部放大镜功能
  • 网站建设会犯法吗wordpress插件怎么安装
  • 网站推广途径有哪些手机编辑html的工具
  • 关于vi设计的网站一款非常不错的seo网站优化公司源码
  • 基于php的家具公司网站网站建设一般需要多久
  • 网站的主要功能松山湖网站建设
  • 安徽建设监理协会网站网站设计中新闻版块怎么做
  • 污水处理厂网站建设装修公司室内装饰
  • wordpress网站被黑wordpress 搜索功能
  • 国外自助建站免费建站平台专业的网站建设企业
  • 一般网站后台地址2021国内最好用免费建站系统
  • 在网站里文本链接怎么做做网站时如何确定网站主题
  • 2018年政务公开与网站建设总结app 网站开发团队人员配置
  • 小程序网站建站模板app开发一般收费
  • 官方网站下载免费外贸服装网
  • 湘潭网站建设有名磐石网络赤峰网站建设公司
  • 科技网站制作公司贵州企业网站建设价格
  • 西部数码虚拟主机怎么做网站做视频网站利润如何
  • 高要区公路建设规划局网站微信软件如何开发
  • 房地产企业网站模板免费下载免费模板下载个人简历
  • 网站营销单页怎么设计方案湖南手机响应式网站建设企业
  • 做服装店网站的素材大连企业网站模板
  • 专业做商铺的网站wordpress crossapple
  • 湛江做网站的公司客户关系管理系统软件
  • 网站建设图片如何加载济南网站建设培训班
  • wordpress扫码下载文件博客seo怎么做
  • 邯郸网站制作官网有机蔬菜网站是如何建设
  • 网站运营需要哪些技术推广普通话奋进新征程手抄报