|
@@ -18,65 +18,174 @@
|
|
|
|
|
|
克隆当前仓库或下载zip包解压,将CGTool文件夹放置于Unity项目文件夹内引用
|
|
|
|
|
|
+
|
|
|
+下文示例中,所涉及到的版本号均对应:
|
|
|
+
|
|
|
+```0``` 龙之沙漏前版本
|
|
|
+
|
|
|
+```1``` 龙之沙漏
|
|
|
+
|
|
|
+所涉及的所有index、serial均指代图档或动画的具体编号而非索引档中序号
|
|
|
+
|
|
|
+其他相关部分会逐渐更新完善
|
|
|
+
|
|
|
### 框架初始化
|
|
|
在入口或初始化脚本头部引入CGTool初始化文件
|
|
|
```csharp
|
|
|
using CGTool;
|
|
|
```
|
|
|
-并在关键位置对CGTool进行初始化
|
|
|
+并在相关初始化位置对CGTool进行初始化
|
|
|
```csharp
|
|
|
CGTool.CGTool.Init();
|
|
|
```
|
|
|
CGTool初始化时,会自动对相关索引Info文件进行解析,请根据实际所采用版本情况,对脚本代码中解析相关的文件名称进行修改调整
|
|
|
|
|
|
-### 获取图档索引数据
|
|
|
+
|
|
|
+### 获取图档索引数据(图档基本索引数据属性信息)
|
|
|
```csharp
|
|
|
-//通过地面编号获取GraphicInfo数据
|
|
|
+// 通过编号获取图档,无需版本号(推荐方法)
|
|
|
+GraphicInfo.GetGraphicInfoDataBySerial(uint Serial);
|
|
|
+
|
|
|
+// 通过编号获取图档,带版本号
|
|
|
+GraphicInfo.GetGraphicInfoDataBySerial(int version, uint Serial);
|
|
|
+
|
|
|
+// 通过地面编号获取GraphicInfo数据
|
|
|
GraphicInfo.GetGraphicInfoDataByMapSerial(int Version, uint MapSerial);
|
|
|
-//通过索引获取GraphicInfo数据
|
|
|
+
|
|
|
+// 通过索引获取GraphicInfo数据
|
|
|
GraphicInfo.GetGraphicInfoDataByIndex(int Version, uint Index);
|
|
|
```
|
|
|
|
|
|
-### 获取指定索引图档数据
|
|
|
+### 获取指定索引图档数据(图档实际数据,包含图像Sprite资源)
|
|
|
```csharp
|
|
|
-//通过图档索引编号获取GraphicData数据
|
|
|
+// 通过图档索引编号获取GraphicData数据
|
|
|
Graphic.GetGraphicData(GraphicInfoData graphicInfoData,int PaletIndex=0);
|
|
|
+
|
|
|
+/**
|
|
|
+ * 使用说明:
|
|
|
+ * 所有通过Graphic获取的图档Sprite均已做偏移处理,可直接使用
|
|
|
+ * 需自行判断图档是否存在,并处理图档不存在的情况
|
|
|
+ * 1.获取指定编号的图档索引信息
|
|
|
+ * 2.根据获取到的索引取得图档数据
|
|
|
+ * 3.使用图档数据中的Sprite资源进行绘制
|
|
|
+ */
|
|
|
+
|
|
|
+GraphicInfoData graphicInfoData = GraphicInfo.GetGraphicInfoDataBySerial(Serial);
|
|
|
+GraphicData graphicData = Graphic.GetGraphicData(graphicInfoData);
|
|
|
+SpriteRenderer(Image).sprite = graphicData.Sprite;
|
|
|
+```
|
|
|
+
|
|
|
+### 获取地图地面图档合批图档数据
|
|
|
+```csharp
|
|
|
+/**
|
|
|
+ * 针对地面数据将地面图档自动进行拼合成一个或多个2048*2048尺寸Texture2D
|
|
|
+ * 并将拼合后的Texture2D数据拆分为对应的Sprite资源
|
|
|
+ * 这样可以大幅降低地面图档的内存占用和Drawcall数量,提高渲染的动态合批性能
|
|
|
+ * 另:
|
|
|
+ * 代码中暂时禁用了已合并地面Texture2D的缓存功能,如需使用请取消相关代码注释或自行修改
|
|
|
+ * 由于4.0后地图模式变动,所以这个方法可能不适用于4.0后的地图
|
|
|
+ */
|
|
|
+Dictionary<int, GraphicData> MapGroundSerialDic =
|
|
|
+ Graphic.PrepareMapGroundTexture(
|
|
|
+ int MapID,
|
|
|
+ int PaletIndex,
|
|
|
+ List<GraphicInfoData> graphicInfoDataList
|
|
|
+ );
|
|
|
```
|
|
|
|
|
|
### 获取并播放动画数据
|
|
|
```csharp
|
|
|
/**
|
|
|
* 动画播放器,用于播放CG动画,支持多动画队列播放
|
|
|
-* 脚本需绑定至挂载了SpriteRenderer和RectTransform的对象上
|
|
|
-* 除此之外,还需绑定BoxCollider2D(可选),用于监听鼠标的移入移出事件
|
|
|
+* 1.4更新后已无需手动挂载SpriteRenderer、Image组件,程序会自动处理
|
|
|
+* 只需将AnimePlayer挂载到任意GameObject上即可,可手动指定渲染方式是否以Image组件渲染
|
|
|
+*
|
|
|
+* 动画解析Anime类中包含以下多个枚举预设:
|
|
|
+* DirectionType 方向类型,含8个不同方向
|
|
|
+* ActionType 动作类型,含20个不同动作
|
|
|
+* EffectType 动作效果,含Hit和HitOver两种判定
|
|
|
+* PlayType 播放类型,含Loop、Once、OnceAndDestory三种类型
|
|
|
*
|
|
|
* 当动画播放完成后会自动调用onFinishCallback回调函数
|
|
|
-* 另外可指定onActionListener和onAudioListener监听动画动作帧和音频帧
|
|
|
+* 另外可指定onActionListener和onAudioListener监听动画动作帧和音频帧相关判定
|
|
|
* 目前已知的动作帧有:
|
|
|
-* 击中 20000
|
|
|
-* 伤害结算 10000
|
|
|
+* 击中 Hit (未结束攻击动作,如小石像、黄蜂、绿螳螂等单次攻击动作中有多次击中效果)
|
|
|
+* 伤害结算 HitOver
|
|
|
*/
|
|
|
|
|
|
+AnimePlayer player = GetComponent<AnimePlayer>();
|
|
|
+
|
|
|
/**
|
|
|
* 播放动画,调用此方法将会清空当前播放队列,调用完成可通过链式调用nextPlay方法添加动画到播放队列
|
|
|
-* @param Serial 动画序列号
|
|
|
-* @param Direction 动画方向
|
|
|
+* @param Serial 动画序列号
|
|
|
+* @param Direction 动画方向
|
|
|
* @param ActionType 动画动作
|
|
|
-* @param Infinity 是否循环
|
|
|
-* @param Speed 播放速度,以 1s 为基准,根据动画帧率计算实际播放周期时长
|
|
|
+* @param PlayType 播放类型
|
|
|
+* @param Speed 播放速度倍率,以 1s 为单位基准,根据动画帧率计算实际播放周期时长
|
|
|
* @param onFinishCallback 动画结束回调
|
|
|
* @return AnimePlayer
|
|
|
*/
|
|
|
-AnimePlayer player.play(uint AnimeSerial, Anime.DirectionType.North, Anime.ActionType.Stand, true,0.1f,AnimeCallback onFinishCallback=null);
|
|
|
|
|
|
-//设置帧动效反馈监听
|
|
|
-AnimePlayer player.onEffectListener = effect => { };
|
|
|
+player.play(
|
|
|
+ uint Serial,
|
|
|
+ Anime.DirectionType Direction = Anime.DirectionType.North,
|
|
|
+ Anime.ActionType actionType = Anime.ActionType.Stand,
|
|
|
+ Anime.PlayType playType = Anime.PlayType.Once,
|
|
|
+ float Speed = 1f,
|
|
|
+ AnimeCallback onFinishCallback = null
|
|
|
+);
|
|
|
+
|
|
|
+// 简化方式: 此方法大多数情况下用以播放特效动画,没有方向和动作类型
|
|
|
+player.play(
|
|
|
+ uint Serial,
|
|
|
+ Anime.PlayType playType,
|
|
|
+ float speed = 1f,
|
|
|
+ AnimeCallback onFinishCallback = null
|
|
|
+);
|
|
|
+
|
|
|
+// 播放一次
|
|
|
+player.playOnce(Anime.DirectionType directionType,Anime.ActionType actionType,float Speed=1f,AnimeCallback onFinishCallback=null);
|
|
|
+
|
|
|
+// 循环播放
|
|
|
+player.playLoop(Anime.DirectionType directionType,Anime.ActionType actionType,float Speed=1f,AnimeCallback onFinishCallback=null);
|
|
|
+
|
|
|
+/**
|
|
|
+ * 可通过setter方法设置动画
|
|
|
+ * 通过setter方法设置的动画将使用以下默认配置
|
|
|
+ * DirectionType = DirectionType.North
|
|
|
+ * ActionType = ActionType.Stand
|
|
|
+ * PlayType = PlayType.Loop
|
|
|
+ * Speed = 1f
|
|
|
+ */
|
|
|
+player.Serial = uint AnimeSerial;
|
|
|
+
|
|
|
+// 设置帧动效反馈监听
|
|
|
+player.onEffectListener = effect => {...};
|
|
|
+
|
|
|
+// 设置帧音效反馈监听
|
|
|
+player.onAudioListener = audioIndex => {...};
|
|
|
+
|
|
|
+// 链式调用添加动作队列
|
|
|
+player.play(...params).nextPlay(...params);
|
|
|
+
|
|
|
+// 动态修改动画所用的调色板索引
|
|
|
+player.PaletIndex = int PaletIndex;
|
|
|
|
|
|
-//设置帧音效反馈监听
|
|
|
-AnimePlayer player.onAudioListener = audioIndex => { };
|
|
|
+// 动态修改动画播放类型
|
|
|
+player.PlayType = Anime.PlayType;
|
|
|
+
|
|
|
+// 动态调整当前动画方向
|
|
|
+player.DirectionType = Anime.DirectionType;
|
|
|
+
|
|
|
+// 动态调整当前动画动作
|
|
|
+player.ActionType = Anime.ActionType;
|
|
|
+
|
|
|
+// 动画帧延时,动态修改当前动画,延长每帧之间的时间间隔(此方法定义有歧义,后续更新调整)
|
|
|
+player.DelayPlay(float delayTime)
|
|
|
+
|
|
|
+// 停止动画
|
|
|
+player.Stop();
|
|
|
|
|
|
-//链式调用添加动作队列
|
|
|
-AnimePlayer player.play(...params).nextPlay(...params);
|
|
|
```
|
|
|
|
|
|
### 其他
|
|
@@ -99,6 +208,14 @@ AnimePlayer player.play(...params).nextPlay(...params);
|
|
|
|
|
|
|
|
|
## 4、更新日志
|
|
|
+### v 1.3
|
|
|
+> `UPD` 优化AnimePlayer组件的挂载和使用方式
|
|
|
+>
|
|
|
+> `UPD` 优化AnimePlayer动画播放器,增加动画相关处理方法
|
|
|
+>
|
|
|
+> `UPD` 更新README说明文档,增加、调整使用说明
|
|
|
+>
|
|
|
+
|
|
|
### v 1.2
|
|
|
|
|
|
> `FIX` 修正文件加载时判断为正则,避免因使用不同版本bin导致加载报错问题
|