池州哪里做网站网站建设网络推广

pingmian/2025/10/13 2:34:56/文章来源:
池州哪里做网站,网站建设网络推广,界面设计的重要性,商城公众号开发文章目录 示例1#xff1a;角色与装备系统示例2#xff1a;UI控件库示例3#xff1a;渲染引擎模块示例4#xff1a;AI决策树算法示例5#xff1a;物理模拟引擎 在Unity游戏开发中#xff0c;桥接模式#xff08;Bridge Pattern#xff09;是一种设计模式#xff0c;它… 文章目录 示例1角色与装备系统示例2UI控件库示例3渲染引擎模块示例4AI决策树算法示例5物理模拟引擎 在Unity游戏开发中桥接模式Bridge Pattern是一种设计模式它用于将抽象部分与其实现部分分离从而允许它们独立变化。这种模式适用于以下场景 当一个类有多个维度的变化并且希望这些变化可以独立扩展而不影响彼此时。如果直接使用继承来处理多维度变化会导致类爆炸问题即需要创建大量子类。 桥接模式的组成部分 抽象Abstraction定义了抽象接口并包含对实现部分Implementor的操作。在Unity中这可能是某个基础组件或接口它提供了通用的功能描述但不关心具体的实现细节。 例如 public interface ICharacterControl {void Move();void Attack();void SetWeapon(IWeapon weapon); }public interface IWeapon {void Fire();void Reload(); }提炼的抽象Refined Abstraction继承自抽象类的具体角色它可能会添加更多特定的行为同时调用实现部分的方法。 public class Soldier : MonoBehaviour, ICharacterControl {private IWeapon _currentWeapon;public void Move(){// 实现移动逻辑}public void Attack(){if (_currentWeapon ! null)_currentWeapon.Fire();}public void SetWeapon(IWeapon weapon){_currentWeapon weapon;} }实现Implementor定义了实现接口这个接口通常代表了可变的部分如不同的武器类型。 public abstract class WeaponBase : IWeapon {public abstract void Fire();public abstract void Reload(); }public class Pistol : WeaponBase {public override void Fire(){Debug.Log(Pistol fires!);}public override void Reload(){Debug.Log(Pistol is reloading...);} }public class Shotgun : WeaponBase {public override void Fire(){Debug.Log(Shotgun fires!);}public override void Reload(){Debug.Log(Shotgun is reloading...);} }五个实例说明 角色和装备系统游戏角色可以有不同的移动方式跑、走、跳等以及不同的武器枪、剑、魔法等通过桥接模式可以使角色类型和武器类型相互独立地扩展。 渲染引擎模块抽象层为渲染器接口具体实现包括不同的渲染技术如Direct3D、OpenGL、Vulkan等。不论游戏采用哪种渲染技术上层的游戏对象渲染逻辑保持不变。 UI控件库抽象层定义了一系列UI控件按钮、文本框、滑块等的公共行为而具体实现可能基于不同的图形API或框架Unity UI、NGUI、TextMeshPro等。 AI决策树算法抽象层是决策树接口不同类型的AI实体可以根据需求选择不同的决策树实现简单状态机、有限状态机、蒙特卡洛搜索树等。 物理模拟引擎抽象层提供物理模拟功能如碰撞检测、刚体运动等而具体实现可以切换为不同的物理引擎Unity内置物理引擎、PhysX、Box2D等。 以下是在Unity中应用桥接模式的五个不同场景的简化代码示例 示例1角色与装备系统 // 抽象部分 - 角色接口 public interface ICharacter {void Move();void ChangeWeapon(IWeapon weapon); }// 实现部分 - 武器接口 public interface IWeapon {void Use();void Reload(); }// 具体抽象 - 战士类继承自ICharacter public class Warrior : MonoBehaviour, ICharacter {private IWeapon currentWeapon;public void Move(){// 移动逻辑}public void ChangeWeapon(IWeapon weapon){currentWeapon weapon;}public void Attack(){if (currentWeapon ! null)currentWeapon.Use();} }// 实现部分的具体类 - 短剑和长弓 public class ShortSword : IWeapon {public void Use(){Debug.Log(Short sword is used for attack!);}public void Reload(){// 无需重新加载} }public class LongBow : IWeapon {public void Use(){Debug.Log(Long bow fires an arrow!);}public void Reload(){Debug.Log(Reloading the long bow...);} }// 在游戏运行时切换武器 var warrior GetComponentWarrior(); warrior.ChangeWeapon(new ShortSword()); warrior.Attack(); // 输出Short sword is used for attack! warrior.ChangeWeapon(new LongBow()); warrior.Attack(); // 输出Long bow fires an arrow! 示例2UI控件库 // 抽象部分 - UI控件接口 public interface IUIControl {void Render();void SetText(string text); }// 实现部分 - 不同UI框架下的文本框实现 public abstract class TextControlBase : IUIControl {public abstract void Render();public abstract void SetText(string text); }public class UnityUITextControl : TextControlBase {public UnityEngine.UI.Text unityText; // Unity UI组件public override void Render(){// 使用Unity UI渲染文本}public override void SetText(string text){unityText.text text;} }public class NGUITextControl : TextControlBase {// 假设NGUI有对应的文本组件引用public override void Render(){// 使用NGUI渲染文本}public override void SetText(string text){// 设置NGUI文本内容} }// 在游戏运行时创建不同的UI文本框实例 var uiText new UnityUITextControl(); uiText.SetText(Hello from Unity UI); uiText.Render();var nguiText new NGUITextControl(); nguiText.SetText(Hello from NGUI); nguiText.Render();示例3渲染引擎模块 // 抽象部分 - 渲染器接口 public interface IRenderer {void RenderScene(GameObject scene); }// 实现部分 - 不同的渲染引擎实现 public class DirectXRenderer : IRenderer {public void RenderScene(GameObject scene){// 使用DirectX渲染场景Debug.Log(Rendering scene with DirectX...);} }public class OpenGLRenderer : IRenderer {public void RenderScene(GameObject scene){// 使用OpenGL渲染场景Debug.Log(Rendering scene with OpenGL...);} }// 游戏中的场景管理器调用渲染逻辑 public class SceneManager {private IRenderer _renderer;public SceneManager(IRenderer renderer){_renderer renderer;}public void RenderCurrentScene(){_renderer.RenderScene(currentScene);} }// 在游戏启动时根据需要选择渲染引擎 var directXRenderer new DirectXRenderer(); var sceneManager new SceneManager(directXRenderer); sceneManager.RenderCurrentScene(); // 输出Rendering scene with DirectX...// 如果需要切换到OpenGL只需更改渲染器实例 var openGLRenderer new OpenGLRenderer(); sceneManager._renderer openGLRenderer; sceneManager.RenderCurrentScene(); // 输出Rendering scene with OpenGL...示例4AI决策树算法 // 抽象部分 - 决策树接口 public interface IDecisionTree {Action Decide(AIState state); }// 实现部分 - 简单状态机和有限状态机 public class SimpleStateMachine : IDecisionTree {public Action Decide(AIState state){// 根据简单状态机决定动作Debug.Log($Decided action based on Simple State Machine: {state});return () { /* 执行具体动作 */ };} }public class FiniteStateMachine : IDecisionTree {public Action Decide(AIState state){// 根据有限状态机决定动作Debug.Log($Decided action based on Finite State Machine: {state});return () { /* 执行具体动作 */ };} }// AI角色类使用决策树接口 public class AIBot {private IDecisionTree _decisionTree;public AIBot(IDecisionTree decisionTree){_decisionTree decisionTree;}public void TakeAction(AIState currentState){var action _decisionTree.Decide(currentState);action?.Invoke();} }// 在游戏运行时选择不同的决策树 var simpleBot new AIBot(new SimpleStateMachine()); simpleBot.TakeAction(AIState.Idle);var fsmBot new AIBot(new FiniteStateMachine()); fsmBot.TakeAction(AIState.Patrolling);示例5物理模拟引擎 // 抽象部分 - 物理引擎接口 public interface IPhysicsEngine {void Simulate();Rigidbody CreateRigidbody(GameObject obj); }// 实现部分 - Unity内置物理引擎和Box2D public class UnityPhysicsEngine : IPhysicsEngine {public void Simulate(){// 调用Unity内置物理引擎进行模拟Physics.Simulate(Time.fixedDeltaTime);}public Rigidbody CreateRigidbody(GameObject obj){return obj.AddComponentRigidbody();} }public class Box2DPhysicsEngine : IPhysicsEngine {// 假设有一个用于与Box2D交互的封装类Box2DBodypublic void Simulate(){// 使用Box2D进行物理模拟// ...}public Rigidbody CreateRigidbody(GameObject obj){// 创建一个Box2D对应的刚体组件并附加到对象上// 返回Box2DBody的引用或包装对象return null; // 这里简化处理实际需要实现创建Box2D刚体} }// 游戏中的物理世界管理器使用物理引擎接口 public class PhysicsWorldManager {private IPhysicsEngine _physicsEngine;public PhysicsWorldManager(IPhysicsEngine physicsEngine){_physicsEngine physicsEngine;}public void UpdatePhysics(){_physicsEngine.Simulate();}public Rigidbody AddRigidbody(GameObject obj){return _physicsEngine.CreateRigidbody(obj);} }// 在游戏启动时选择物理引擎 var unityPhysics new UnityPhysicsEngine(); var physicsManager new PhysicsWorldManager(unityPhysics); // ...// 如果要切换到Box2D var box2DPhysics new Box2DPhysicsEngine(); physicsManager._physicsEngine box2DPhysics;python推荐学习汇总连接 50个开发必备的Python经典脚本(1-10) 50个开发必备的Python经典脚本(11-20) 50个开发必备的Python经典脚本(21-30) 50个开发必备的Python经典脚本(31-40) 50个开发必备的Python经典脚本(41-50) ———————————————— ​最后我们放松一下眼睛

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站上的充值链接怎么做wordpress toc

LCR 076. 数组中的第 K 个最大元素 题目链接:LCR 076. 数组中的第 K 个最大元素 下面这个题与这个题一样: 题目链接:215. 数组中的第K个最大元素 这个代码只能通过第一个题,如下: class Solution { public:int fin…

高端旅游的网站建设新人跑业务怎么找客户

在学习使用websocket之前我们先了解一下websocket: WebSocket是一种在单个TCP连接上进行全双工通信的通信协议。与HTTP协议不同,它允许服务器主动向客户端发送数据,而不需要客户端明确地请求。这使得WebSocket非常适合需要实时或持续通信的应…

网站建设哪些模板号wordpress手机登陆不了

2023年10.13日,下午1点,在北京大红门国际会展中心召开了中国人口文化促进会社区文化推广工作委员会成立暨2024社区春晚文艺活动新闻发布会。来自政府相关部门、社会组织、新闻媒体和公益企业界的相关领导与代表齐聚一堂,共襄盛举。 本次大会由…

php源码织梦网站需要优化

应急响应的基本思路 a. 收集信息:收集告警信息、客户反馈信息、设备主机信息等 b. 判断类型:安全事件类型判断。(钓鱼邮件、Webshll、爆破、中毒等) c. 控制范围:隔离失陷设备 d. 分析研判:根据收集回来的…

网站建设预算计算方法网站建设实验

文章目录 300.最长递增子序列思路代码实现 674. 最长连续递增序列思路代码实现 718. 最长重复子数组思路代码实现 300.最长递增子序列 题目链接 思路 单个字符都是一个长为1的子序列,直接初始化dp为1。先固定一个元素位置i,判断0-i范围内到i的最长子序…

医院网站官方微信精神文明建设网站制作软件下载安装

问题一、canape绘制目标时,二维结构体变量只能录制16个的解决办法 打开ASAP2 Studio 2.6 -Expert 软件。 把该软件中的设置项如下图进行修改。 然后用ASAP2 Studio 2.6 -Expert 软件 打开elf文件导出成A2L文件。 最后关闭该软件。 再在canape工程中重新加载刚才…

如花建站jsp做的网页是网站吗

摘要:基于OpenGL (ES)的跨平台2D/3D游戏开发框架libGDX不仅开源免费,而且具有极为强大的兼容性和高效性,近日,libGDX发布全新1.2.0版本,除修复Bug之外,还新增了OpenGL性能分析、gdx-ai等一系列功能扩展和方…

做网站需要什么编程语言教育网站建设网

160. 相交链表 1、题目2、题目分析3、解题步骤4、复杂度最优解代码示例5、抽象与扩展 1、题目 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向…

邯郸建设网站wordpress ip地址只能访问首页

微服务化的负载均衡组件源码剖析与实战开发全流程 什么是负载均衡负载均衡的种类服务器端负载均衡(S-LB)客户端负载均衡(C-LB)注解LoadBalancedLoadBalancerAutoConfiguration类LoadBalancerClient类源码分析 ServiceInstanceChoo…

国发网站建设中小企业认定证明

Detecting endosperm cracks in soaked maize using μCT technology and R-YOLOv7-tiny 1、模型1.1 C3_TR module(自己提出修改)1.2 CoT block注意力1.3 GhostConv模块2、模型整体流程图3、实验采用r - yolov7微模型和μCT技术对浸水玉米胚乳裂纹进行了检测。提出的ryolov7微…

珠宝网站形象设计广州建筑工程公司名单

程序员生活指南之 【蛀牙】如何选择牙刷,牙膏和牙杯(含其他日常牙具:牙线,漱口水,冲牙器) 文章目录 一、如何选择牙刷,牙膏和牙杯1、如何选择牙刷2、如何选择牙膏3、如何选择牙杯 二、日常牙具&…

网站怎么查询注册商网站建设工

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

企业网站关键词排名什么网站类型

线上会存在一种任务,定时或者手动出发,我们称之为“脚本”,也可以称之为“job” 一、脚本的特性 无过程:只有开始和结束,过程迅速且黑盒。无交互:脚本处理的业务场景都几乎没有交互,只有数据被…

南部县网站建设连连跨境电商网站怎么做

全国职业院校技能大赛 高等职业教育组 信息安全管理与评估 任务书 模块二 网络安全事件响应、数字取证调查、应用程序安全 比赛时间及注意事项 本阶段比赛时长为180分钟,时间为13:30-16:30。 【注意事项】 比赛结束,不得关机;选手首先需要…

网站国内服务器租用网站查询地址

/*出处:https://video.100ask.net/p/t_pc/course_pc_detail/column/p_6503fadfe4b064a82f0ab191本专栏一切无特殊声明的知识转述(源码、文字以及图表)版权均归属于百问网,源码仅供学习,请勿用于商业用途;不…

企业网站优化服务商如何韩国视频网站模板下载 迅雷下载地址

前言 首先谢谢好友推荐的这篇论文及代码,前面学习的caffe可能比较浅显,想要深入caffe就可以从这个代码下手了,配置方法还是挺简单的,但是可能会出现部分问题。在作者的论文中有github的地址。注意,本文只介绍如何配置…

企业网站建设平台的功能北京泰达建设有限公司网站

给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。 说明: 返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每…

iis7 默认网站目录seo页面内容优化

4-16: 有人提出一个问题,就是说领导要让在一个什么都没装的linu系统中防止一个文件以供访问,已帮助(https://ask.csdn.net/questions/8089263?spm1001.2014.3001.5501)有人在全屏播放视频的视频上创建一个div悬浮在视…

网站建设与管理教学视频教程做地方网站数据哪里来

1.CGAN原理 生成器,输入的是c和z,z是随机噪声,c是条件,对应MNIST数据集,要求规定生成数字是几。 输出是生成的虚假图片。 判别器的输入是 1.生成器输出的虚假图片x; 2.对应图片的标签c 来自真实数据集,且…

外贸网站模板 外贸网站制作常宁网站开发

https://gitee.com/kekingcn/file-online-preview