跳到主要内容

安装与初始化

Guide

从 Asset Store 导入 GCS,先运行随包 Demo 确认安装结果,再用 Initialize System 为自己的场景接通 Manager、六类数据库、Bootstrap 与战斗表现层

导入 GCS 并确认项目环境

GCS 支持 Unity 2021.3 及更高版本,推荐使用 Unity 6,随包 Demo 已适配 Built-in Render Pipeline 与 URP,运行时不依赖第三方插件

提示

HDRP管线在最新的Unity版本中已被弃用,GCS将不会为此而适配

通过 Unity Asset Store 获取 GCS 后,在编辑器中完成导入

  1. 打开 Window > Package Manager
  2. 将左上角的 Packages 切换为 My Assets,找到 Game Card System
  3. 点击 Download,下载完成后点击 Import
  4. 等待 Unity 完成资源导入与脚本编译

Unity 的完整操作说明见 Asset Store 资源包导入说明

导入完成后,GCS 的包内容位于以下目录

Assets/TinyGiants/GameCardSystem/

此时先确认 Console 中没有 GCS 编译错误,再打开编辑器工具,脚本仍在编译时,窗口内容可能暂时为空或显示不完整

先运行随包 Demo

在搭建自定义场景之前,先运行一场已经完成内容、运行时与表现层接线的战斗,可以最快确认资源导入、脚本编译、输入系统与 Demo UI 都处于可用状态

在 Project 窗口中打开

Assets/TinyGiants/GameCardSystem/Demo/Scenes/Hunter/1-Fenmoss Hollow.unity
提示

如果 Unity 弹出 TextMeshProUGUI 资源缺失提示,先导入 TMP Essential Resources,再重新打开场景

一般在空工程内双击任意的演示Demo,都会自动触发一次TMP Essential Resources的安装

进入 Play Mode 后,棋盘上应出现起手手牌、能量、玩家与敌人单位、敌人意图和结束回合按钮,此时已经可以选择目标并打出卡牌,如果战斗可以正常操作,则说明包资源、脚本与 Demo 表现层已经完成接入,完整的 Demo 验证过程见第一场战斗,而对于自己创建的场景则从下面开始接入同一套运行环境

初始化自己的战斗场景

创建或打开要承载战斗的场景,将它保存并保持为当前活动场景,随后从 Unity 顶部菜单打开 GCS 总面板

Tools > TinyGiants > GCS > Game Card System

Game Card System 总面板,包含系统初始化、环境信息、编辑工具与资源快捷入口

这个窗口把首次接入需要完成的工作与用户常用操作集中在了同一处,你可以先通过 System Information 确认当前项目环境,再用 Initialize System 为活动场景补齐 GCS 运行对象,待初始化完成后,Workbench 与 Monitor 也会从这里进入可用状态,面板其余入口见系统面板

确认 System Information

System Information 会读取当前 Unity 版本、渲染管线、编辑器平台与脚本后端,让环境信息在初始化前就可以直接核对

System Information 显示当前 Unity Version、Render Pipeline、Editor Platform 与 Scripting Backend

随包 Demo 当前支持 Built-in Render Pipeline 与 URP,如果这里检测到其他渲染管线,应先切换到受支持的管线或自行处理材质与 Shader 适配,再继续验证 Demo 表现

运行 Initialize System

场景尚未接入 GCS 时,初始化卡片会显示黄色 Initialize System 按钮与未初始化提示

场景尚未初始化时,Game Card System 面板显示 Initialize System 按钮

点击 Initialize System 后,GCS 会围绕当前活动场景完成以下接线

接入内容初始化结果
Manager 与启动入口创建或复用 GameCardManager,并在同一 GameObject 上补充 GameCardEncounterBootstrap
六类内容数据库注册随包的 Card、Deck、Player Unit、Enemy Unit、Status 与 Encounter 预设数据库
战斗场景根对象从随包场景模板补齐 Main CameraEventSystemBackgroundBattle RuntimeBattle Fx Directors
输入与背景为主相机补充 2D 射线检测,并为自定义场景接入预设遭遇战背景解析

接线完成后,按钮会变为绿色 System Initialized · Re-initialize,下方状态条会显示 Manager、六类数据库与 Bootstrap 已经就绪

初始化完成后,Game Card System 面板显示 System Initialized 与 ready 状态

这个绿色状态表示场景中已经存在 GameCardManager,并且六个数据库组都至少注册了一个数据库

提示

场景是否会在 Play Mode 自动开始战斗,还要继续确认数据库的活动状态与 Bootstrap 的遭遇战设置

Re-initialize 可以用于补齐后来缺失的对象或数据库,它会复用已有 Manager、跳过已经注册的数据库并保留自定义数据库,而被手动关闭的数据库则不会在重新初始化时自动启用,现有活动状态始终以 Manager Inspector 中的开关为准

检查 Manager 与六类数据库

在 Hierarchy 中选中 GameCardManager,Inspector 会依次显示 Card、Deck、Player Unit、Enemy Unit、Status 与 Encounter 六个数据库组,全新初始化的场景中,每组都应显示 1/1 Active

GameCardManager Inspector 中六个预设数据库组均显示 1/1 Active

数据库决定哪些内容可以被编辑器选择器与战斗运行时发现,只把资产放进项目并不会自动让它参与战斗,如果某组显示 0/1 Active,应手动重新启用对应预设数据库

数据库添加、排序与活动的具体规则详见数据库设置

指定启动遭遇战

数据库接通后,在同一 GameObject 上展开 GameCardEncounterBootstrap,把 Default Encounter 设置为要运行的遭遇战,首次验证建议选择 Fenmoss Hollow,并保持 Auto Start On Play 开启

字段作用首次验证
Default Encounter指定进入 Play Mode 后要创建的玩家、敌人、规则与奖励选择 Fenmoss Hollow
Auto Start On Play控制 Bootstrap 是否在场景启动时自动发起战斗保持开启
Events在战斗启动后调用 UnityEvent,或在启用 GES 集成时发送 GES 事件暂时保持默认

完成设置后,Inspector 会显示绿色 Ready — starts on Play 状态

GameCardEncounterBootstrap 已选择 Fenmoss Hollow,并显示 Ready — starts on Play

到这里,场景中的内容来源、启动入口与默认遭遇战已经连成一条完整链路,战斗既可以由 Bootstrap 自动开始,也可以交给地图、关卡或存档流程通过代码决定开始时机

进入 Play Mode

保持 Default Encounter 已指定、Auto Start On Play 已开启,然后进入 Play Mode,Bootstrap 会把该遭遇战交给 GameCardManager,战斗随场景一起开始

战斗的其他启动方式、运行前条件与事件时机见战斗启动

确认场景已经可以运行

进入 Play Mode 后,从场景对象到可玩的战斗应当形成以下连续结果

  1. GameCardEncounterBootstrap 读取已指定的 Default Encounter
  2. GameCardManager 加载遭遇战引用的玩家、卡组、敌人、规则与奖励
  3. Battle Runtime 创建玩家、敌人、手牌、能量、意图与回合状态
  4. Battle UI 显示棋盘,玩家可以选择目标、打出卡牌并结束回合

同时确认 Console 中没有 GCS 报错,Hierarchy 中保留 GameCardManagerMain CameraEventSystemBackgroundBattle RuntimeBattle Fx Directors

回到 GameCardManager Inspector 时,六个数据库组都应保持活动状态

提示
  • 如果进入 Play Mode 后没有开始战斗,先检查 Default EncounterAuto Start On Play

  • 如果战斗已经开始但手牌或单位内容缺失,再检查对应数据库是否为 Active,更多定位入口见常见问题

场景通过这组验证后,可以继续了解项目结构,把随包 Demo 与自己的正式内容分开放置,也可以直接进入第一场战斗,沿着完整回合验证出牌、状态、敌人意图与奖励结算