Giter Club home page Giter Club logo

2dexplorer's Introduction

2D 探索游戏

游戏规则

操纵主角在地图上避开机关的攻击, 找到出口.

开发笔记

开发过程中对某些模块的使用心得.

项目结构

文件目录

仅描述 Assets 文件夹.

  • Audios: 音频文件
  • GameFramework: 导入的 GameFramework
  • Materials: 大部分材质球
  • Plugins: 插件
  • Prefabs: 预制体
  • Resources: 仅 DOTween 使用
  • Scenes: 场景
  • Scripts: 脚本
  • Settings: 记录游戏设置的 ScriptableObject
  • Shaders: 用 ShaderGraph 制作的 shader
  • Sprites: 2D Sprite
  • Tiles: 瓦片模板和画板(编辑器用)

代码结构

该游戏核心代码程序集定义在Scripts的根目录下, Editor 里是另一个程序集. 通过定义程序集的方式将项目中的代码切割为不同的编译对象, 减少代码变更时的编译代价, 同时也能强化各个模块的独立性, 明确依赖关系.

  • CharCtrl: 角色控制. 操控刚体和按键映射
  • DI: 依赖注入相关. 定义场景中的类的绑定关系
  • Editor: 编辑器相关, 为某些类添加辅助功能
  • EditorTool: 简化编辑器代码的一些工具
  • Effect: 特效实现
  • Entity: 实体. 如主角, 炮塔, 子弹
    • Decorator: 修饰实体的组件, 如引力场
  • Game: 游戏过程总的管理中心, 包括游戏状态的管理
  • TileDataIO: 瓦片数据输入输出, 管理瓦片数据的序列化, 也包括瓦片所对应的外部 GO.
  • Tiles: 瓦片类
  • TileTool: 瓦片地图相关的一些工具类
  • Unitilities: Unitilities 所在目录

引入的非官方包和插件

  • ZenJect GitHub链接 本地插件路径: 围绕 Unity 的控制反转依赖注入模块

    • 摆脱简单单例模式带来的依赖顺序问题
    • 提供一个比 Awake() 更早的依赖注入, 对场景静态物体而言相当于增加了一个比 Awake()更早的事件
    • 面向接口的绑定关系
  • DOTween 官网链接 本地插件路径: 一个灵活而方便的动画过渡过程控制插件

    • 将空间变换, Material 属性变化, Rigidbody 运动过程等常用的动画过渡过程(下称 Tween )实现为扩展方法, 可以直接用一个方法触发
    • Tween 提供丰富控制参数, 如过渡方式
    • Tween 提供完善的控制方法和回调函数, 包括 Kill(), OnComplete(callback)
    • 易于实现连续动画过程, 或称序列 Sequence
  • UnityGameFramework GitHub链接 本地插件路径: 一个包含常见业务逻辑和设计模式的框架

    • 有限状态机IFsm<T>实现了由状态机实例管理被管理的目标对象, 状态类仅实现逻辑不记录额外信息的状态机模式.
    • 事件系统实现了一个线程安全的事件订阅-发布机制, 使用整型 id 进行事件绑定
  • Unitilities GitHub链接 本地路径: 由 @LovelyCatHyt 制作的 Unity 的一些工具类

    • 很多零碎的小东西, 但也有比较独立的模块
    • 使用 git submodule 实现源码级依赖
    • 随本项目的开发而不定期更新

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.