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

宁波建网站哪家网络工程培训网络班

宁波建网站哪家,网络工程培训网络班,投资公司排名,郑州网站推广外包地址官网#xff1a;https://github.com/libgdx/ashley 我的libgdx学习代码#xff1a;nanshaws/LibgdxTutorial: libgdx 教程项目 本项目旨在提供完整的libgdx桌面教程#xff0c;帮助开发者快速掌握libgdx游戏开发框架的使用。成功的将gdx-ai和ashley的tests从官网剥离出来,并…官网https://github.com/libgdx/ashley 我的libgdx学习代码nanshaws/LibgdxTutorial: libgdx 教程项目 本项目旨在提供完整的libgdx桌面教程帮助开发者快速掌握libgdx游戏开发框架的使用。成功的将gdx-ai和ashley的tests从官网剥离出来,并成功运行。libgdx tutorial project This project aims to provide a complete libgdx desktop tutorial to help developers quickly master the use of libgdx game development framework. Successfully separated GDX-AI and Ashleys tests from the official website and ran them (github.com) 引入依赖 allprojects {apply plugin: eclipseversion 1.0ext {appName My GDX GamegdxVersion 1.12.1roboVMVersion 2.3.21box2DLightsVersion 1.5ashleyVersion 1.7.4aiVersion 1.8.2gdxControllersVersion 2.2.1}repositories {mavenLocal()mavenCentral()google()gradlePluginPortal()maven { url https://oss.sonatype.org/content/repositories/snapshots/ }maven { url https://oss.sonatype.org/content/repositories/releases/ }maven { url https://jitpack.io }} }dependencies {implementation com.badlogicgames.gdx:gdx:$gdxVersionimplementation com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersionimplementation com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktopimplementation com.badlogicgames.ashley:ashley:$ashleyVersiontestImplementation junit:junit:4.12 } 在这个ashley框架中分为 Component EntitySystem PooledEngine EntityListener 好理解吧。以下我用代码来演示 PooledEngine engine new PooledEngine();MovementSystem movementSystem new MovementSystem();PositionSystem positionSystem new PositionSystem();engine.addSystem(movementSystem);engine.addSystem(positionSystem);Listener listener new Listener();engine.addEntityListener(listener);Entity entity engine.createEntity();entity.add(new PositionComponent(10, 0)); PooledEngine engine new PooledEngine(); 这行代码创建了一个 PooledEngine 的实例。PooledEngine 是 Engine 的一个子类它可以重用实体和组件从而减少内存分配和垃圾回收提高性能。 MovementSystem movementSystem new MovementSystem(); 创建了一个 MovementSystem 的实例这是一个自定义的系统用于处理实体的移动逻辑。 PositionSystem positionSystem new PositionSystem(); 创建了一个 PositionSystem 的实例这是另一个自定义的系统用于处理实体的位置更新。 engine.addSystem(movementSystem);engine.addSystem(positionSystem); 这两行代码将 MovementSystem 和 PositionSystem 添加到 PooledEngine 中。这样当引擎更新时这些系统也会被更新。 Listener listener new Listener(); 创建了一个 Listener 的实例这是一个实体监听器它会在实体被添加或移除时收到通知。 engine.addEntityListener(listener); 将 Listener 添加到 PooledEngine 中使其成为实体事件的监听器。 Entity entity engine.createEntity(); 创建了一个新的 Entity 实例。在Ashley中实体是组件的容器组件用于存储数据。 entity.add(new PositionComponent(10, 0)); 向刚创建的实体添加了一个 PositionComponent 实例初始化位置为 (10, 0)。PositionComponent 是一个自定义的组件用于存储实体的位置信息。 每个人物或者标签都可以称之为实体比如说一个马里奥游戏马里奥、乌龟和金币都可以被视为实体。每个实体都可以拥有一组组件这些组件定义了实体的数据和状态。例如马里奥可能有位置组件PositionComponent、移动组件MovementComponent和图形组件GraphicsComponent等。 这里的实体就是Entity entity engine.createEntity(); 实体添加组件就是entity.add(new PositionComponent(10, 0)); 而PositionSystem就是各个组件合在一起的逻辑原理 private ComponentMapperPositionComponent pm ComponentMapper.getFor(PositionComponent.class); 这行代码创建了一个 ComponentMapper 对象专门用于 PositionComponent 类型的组件。这意味着你可以通过这个映射器快速访问任何实体的 PositionComponent。 private ComponentMapperMovementComponent mm ComponentMapper.getFor(MovementComponent.class); 类似地这行代码创建了一个 ComponentMapper 对象专门用于 MovementComponent 类型的组件。这使得你可以快速访问任何实体的 MovementComponent。 在MovementSystem里面的两行代码将每个实体里面的MovementComponent和PositionComponent组件都进行移动。这样的例子在我的libgdx学习代码的 gdx-ashley-tests   里面的RenderSystemTest文件运行起来会让一百个硬币移动 Overridepublic void update (float deltaTime) {for (int i 0; i entities.size(); i) {Entity e entities.get(i);PositionComponent p pm.get(e);MovementComponent m mm.get(e);p.x m.velocityX * deltaTime;p.y m.velocityY * deltaTime;}log(entities.size() Entities updated in MovementSystem.);} 演示一个简单案例吧 MovementComponent package com.badlogic.ashley.tests.components;import com.badlogic.ashley.core.Component;public class MovementComponent implements Component {public float velocityX;public float velocityY;public MovementComponent (float velocityX, float velocityY) {this.velocityX velocityX;this.velocityY velocityY;} }PositionComponent package com.badlogic.ashley.tests.components;import com.badlogic.ashley.core.Component;public class PositionComponent implements Component {public float x, y;public PositionComponent (float x, float y) {this.x x;this.y y;} }MovementSystem public static class MovementSystem extends EntitySystem {public ImmutableArrayEntity entities;private ComponentMapperPositionComponent pm ComponentMapper.getFor(PositionComponent.class);private ComponentMapperMovementComponent mm ComponentMapper.getFor(MovementComponent.class);Overridepublic void addedToEngine (Engine engine) {entities engine.getEntitiesFor(Family.all(PositionComponent.class, MovementComponent.class).get());log(MovementSystem added to engine.);}Overridepublic void removedFromEngine (Engine engine) {log(MovementSystem removed from engine.);entities null;}Overridepublic void update (float deltaTime) {for (int i 0; i entities.size(); i) {Entity e entities.get(i);PositionComponent p pm.get(e);MovementComponent m mm.get(e);p.x m.velocityX * deltaTime;p.y m.velocityY * deltaTime;}log(entities.size() Entities updated in MovementSystem.);}} PositionSystem public static class PositionSystem extends EntitySystem {public ImmutableArrayEntity entities;Overridepublic void addedToEngine (Engine engine) {entities engine.getEntitiesFor(Family.all(PositionComponent.class).get());log(PositionSystem added to engine.);}Overridepublic void removedFromEngine (Engine engine) {log(PositionSystem removed from engine.);entities null;}} Listener public static class Listener implements EntityListener {Overridepublic void entityAdded (Entity entity) {log(Entity added entity);}Overridepublic void entityRemoved (Entity entity) {log(Entity removed entity);}}public static void log (String string) {System.out.println(string);} 主类 public static void main (String[] args) {PooledEngine engine new PooledEngine();MovementSystem movementSystem new MovementSystem();PositionSystem positionSystem new PositionSystem();engine.addSystem(movementSystem);engine.addSystem(positionSystem);Listener listener new Listener();engine.addEntityListener(listener);for (int i 0; i 10; i) {Entity entity engine.createEntity();entity.add(new PositionComponent(10, 0));if (i 5) entity.add(new MovementComponent(10, 2));engine.addEntity(entity);}log(MovementSystem has: movementSystem.entities.size() entities.);log(PositionSystem has: positionSystem.entities.size() entities.);for (int i 0; i 10; i) {engine.update(0.25f);if (i 5) engine.removeSystem(movementSystem);}engine.removeEntityListener(listener);} 具体代码可以看 nanshaws/LibgdxTutorial: libgdx 教程项目 本项目旨在提供完整的libgdx桌面教程帮助开发者快速掌握libgdx游戏开发框架的使用。成功的将gdx-ai和ashley的tests从官网剥离出来,并成功运行。libgdx tutorial project This project aims to provide a complete libgdx desktop tutorial to help developers quickly master the use of libgdx game development framework. Successfully separated GDX-AI and Ashleys tests from the official website and ran them (github.com)
http://www.zqtcl.cn/news/664838/

相关文章:

  • 陶瓷类网站建设免费会员管理软件
  • 网站建设 用户管理一个服务器多个网站好吗
  • php做网站特效wordpress开启xmlrppc
  • 顺义重庆网站建设纪检监察网站建设
  • 网站制作源码企业品牌推广方式有哪些
  • 简述制作网站的流程网站开发后端用什么
  • 长沙好的网站建设公司厦门建网站多少钱
  • wordpress id清0中山网站的优化
  • 泰州网站制作维护服务器调用wordpress
  • 网站建设飠金手指下拉c 网站开发 环境配置
  • 派点网站建设物流公司做网站哪家好
  • 最便宜的外贸自建站平台wordpress 主题 mip
  • wordpress动漫视频网站黄冈网站推广策略
  • 做推广的网站带宽需要多少钱asp网站防攻击
  • 网站企业wordpress需要php几
  • 广州微信网站制作icp备案号查询官网
  • 网站建设 搜狐网络游戏排行榜2020
  • 比较好的做简历的网站更换网站模板
  • 网站如何兼容大多浏览器怎么做运营网站
  • 企业网站首页flash口红机网站怎么做的
  • 建网站算法制作网页软件手机版
  • vr技术在网站建设的应用营销内容包括哪些方面
  • 网站规划与开发技术专业优化措施二十条
  • 通州区网站快速排名方案视频网站视频预览怎么做
  • 同创企业网站源码建筑行业公司排名
  • 温州网站建设服务建设商务网站公司
  • 导视设计网站推荐创业平台的选择
  • 营销网站建设设计义乌 网站制作
  • 南通企业网站建设公司庆阳网站建设与制作
  • 做k12网站wordpress调用第一张图片不显示