|  |  |  |  | # 操作文档
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ## 文件夹目录
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### 美术资源目录
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ``` | 
					
						
							|  |  |  |  | \arts						美术资源总目录 | 
					
						
							|  |  |  |  | 	\character				角色动画 | 
					
						
							|  |  |  |  | 		exportAll.py		导出脚本 递归导出目录下的所有文件 | 
					
						
							|  |  |  |  | 		\hero				主角 | 
					
						
							|  |  |  |  | 			move.aseprite	若干个动画的文件 | 
					
						
							|  |  |  |  | 			export.py		导出脚本 | 
					
						
							|  |  |  |  | 			idle.png		单个动画的导出文件 | 
					
						
							|  |  |  |  | 		\monster			怪物 | 
					
						
							|  |  |  |  | 			... | 
					
						
							|  |  |  |  | 	\bullet					子弹 | 
					
						
							|  |  |  |  | 		\hero				主角的子弹 | 
					
						
							|  |  |  |  | 	\effect					特效 | 
					
						
							|  |  |  |  | 	\scene					场景 | 
					
						
							|  |  |  |  |         \object				场景内的物体 | 
					
						
							|  |  |  |  |         \terrain			场景地形 | 
					
						
							|  |  |  |  |         	level01.aseprite	level01的地形数据 多个图层 | 
					
						
							|  |  |  |  |         	exportTerrain.py	导出地形数据的脚本 | 
					
						
							|  |  |  |  |         	level01_block.png	导出的地形数据 空气墙 | 
					
						
							|  |  |  |  |         	level01_static.png	导出的地形数据 静态物体 | 
					
						
							|  |  |  |  |         	level01_terrain.png	导出的地形数据	动态生成的物体 | 
					
						
							|  |  |  |  | 			level01_terrain_r.png	地形R通道的贴图 手动绘制 | 
					
						
							|  |  |  |  | 			level01_terrain_g.png	地形G通道的贴图 手动绘制 | 
					
						
							|  |  |  |  | 			level01_terrain_b.png	地形B通道的贴图 手动绘制 | 
					
						
							|  |  |  |  | 	\ui						ui素材 | 
					
						
							|  |  |  |  | ``` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### 工程资源目录
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ``` | 
					
						
							|  |  |  |  | \client\Assets\Resources					资源总目录 | 
					
						
							|  |  |  |  | 	\Blueprint								蓝图 | 
					
						
							|  |  |  |  | 	\Bullet									子弹 | 
					
						
							|  |  |  |  | 	\Character								角色的动画资源 | 
					
						
							|  |  |  |  | 	\Icon									所有图标 | 
					
						
							|  |  |  |  | 	\Prefab									所有预制件 | 
					
						
							|  |  |  |  | 		\Bullet								子弹的预制件(不用管) | 
					
						
							|  |  |  |  | 		\Common								通用的预制件 比如影子 | 
					
						
							|  |  |  |  | 		\Effect								特效 | 
					
						
							|  |  |  |  | 		\Interact							交互物 | 
					
						
							|  |  |  |  | 		\Level								关卡 | 
					
						
							|  |  |  |  | 		\Monster							怪物 | 
					
						
							|  |  |  |  | 		Player.prefab						主角 | 
					
						
							|  |  |  |  | 	\SceneAsset								场景资源 | 
					
						
							|  |  |  |  | 		\Object								场景内的物体 | 
					
						
							|  |  |  |  | 		\Terrain							地形 | 
					
						
							|  |  |  |  | 	\Scenes									unity场景(不用管) | 
					
						
							|  |  |  |  | 	\Texture								不好分类的贴图 | 
					
						
							|  |  |  |  | 	\Timeline								时间轴 | 
					
						
							|  |  |  |  | 	\UIRes									FGUI导出路径 | 
					
						
							|  |  |  |  | ``` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ## 导表
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### 导表编辑器
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 在unity资源管理器种搜索`gamedata` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 双击这个文件,会打开一个网页 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 框选部分就是我们项目中使用的数据档。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### 在excel下编辑
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #### 1.导出
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. `在导表编辑器任意界面点击`Export`按钮 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 2. 勾选需要导出哪些表 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 3. 点击`Export`按钮,选择导出格式为excel | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 4. 浏览器下载列表会出现这个excel文件,编辑这个文件即可。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #### 2.导入
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. 任意界面点击`Import`按钮 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 2. 选择excel文件和要导入哪些表 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 3. 选择导入方式,一般选Replace直接覆盖 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 4. 点击Import按钮 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### 其他
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 他这个编辑器有点难玩,不如直接用excel编辑。主要是有自动生成代码的支持。后续可能改为直接编辑excel。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ## 制作角色动画
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### Step1.绘制动画
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. 在对应的美术资源目录下新建aseprite文件。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    - 对于一般角色,规定文件尺寸为`128*64` | 
					
						
							|  |  |  |  |    - 一个aseprite文件对应若干个动画,用tag区分每个动画的名字 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 2. 绘制动画 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    如图,2-7帧为attack01动画的帧,用tag区分 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    对于图层无要求,导出时会导出所有可见图层。目前分3层,上层是攻击特效(测试用),中层是动画,下层是背景。导出前将背景设为不可见。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### Step2.导出动画文件
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 动画文件会根据tag,从aseprite导出为若干个png,生成到aseprite文件所在目录。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 操作: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. 安装python3 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 2. 使用文本编辑器打开对应的导出脚本py文件,修改`ASEPRITE_PATH`字段,指向本机的aseprite软件的exe文件。(不能是steam的快捷方式文件) | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 3. 使用命令行切换到导出脚本所在目录,运行脚本文件: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    ``` | 
					
						
							|  |  |  |  |    python exportAll.py | 
					
						
							|  |  |  |  |    ``` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 4. 后续脚本完善就改为导出为exe执行,不需要其他操作。复制这一步也可以改为脚本执行。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### Step3.将导出的png文件复制到对应工程目录
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 例如:主角的动作文件`attack01.png` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 从`\arts\character\hero\`复制到`\client\Assets\Resources\Character\hero\` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 这里推荐使用文件浏览器软件:Q-Dir | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### Step4.从png生成anim
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 进入unity编辑器,使用生成工具进行生成 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 作用为: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. 自动调整texture属性 | 
					
						
							|  |  |  |  | 2. 自动切片 | 
					
						
							|  |  |  |  | 3. 按切片文件生成`.anim`动画文件 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 点完之后会在texture同目录下生成`.anim`动画文件,这个文件就是可以直接在时间轴、动画状态机等地方使用的文件。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ## 制作角色技能
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 角色技能比怪物技能承载了一些额外的信息,涉及连招和技能热拔插机制,需要在`Skill`表里配置。怪物的技能只需要制作`Timeline` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### Step1.配表
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 在技能表里新加一行,参数意义如下: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 需要配置的有: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. 开始姿态 | 
					
						
							|  |  |  |  | 2. 结束姿态 | 
					
						
							|  |  |  |  | 3. 释放类型 | 
					
						
							|  |  |  |  | 4. 时间轴 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 姿态枚举说明: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ``` | 
					
						
							|  |  |  |  | 0    Idle,				地面待机 | 
					
						
							|  |  |  |  | 1    Ground1,			地面姿态1 | 
					
						
							|  |  |  |  | 2    Ground2,			地面姿态2 | 
					
						
							|  |  |  |  | 3    Ground3, | 
					
						
							|  |  |  |  | 4    Ground4, | 
					
						
							|  |  |  |  | 5    Ground5, | 
					
						
							|  |  |  |  | 6    Ground6, | 
					
						
							|  |  |  |  | 7    Ground7, | 
					
						
							|  |  |  |  | 10    AirIdle = 10,		空中待机 | 
					
						
							|  |  |  |  | 11    Air1,				空中姿态1 | 
					
						
							|  |  |  |  | 12    Air2,				空中姿态2 | 
					
						
							|  |  |  |  | 13    Air3, | 
					
						
							|  |  |  |  | 99    None = 99,		没有(只出现在结束姿态,技能没有后续连招) | 
					
						
							|  |  |  |  | 100    Any = 100,		任意(只出现在开始姿态,任意姿态都可以释放这个技能) | 
					
						
							|  |  |  |  | 101    Cache = 101,		没用 | 
					
						
							|  |  |  |  | ``` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 释放类型枚举说明: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ``` | 
					
						
							|  |  |  |  | 0    LightAttack,			轻攻击按下 | 
					
						
							|  |  |  |  | 1    HeavyAttack,			重攻击按下 | 
					
						
							|  |  |  |  | 2    LightAttackRelease,	轻攻击抬起 | 
					
						
							|  |  |  |  | 3    HeavyAttackRelease,	重攻击抬起 | 
					
						
							|  |  |  |  | 4    Flash,					闪避 | 
					
						
							|  |  |  |  | 5    Jump,					跳跃 | 
					
						
							|  |  |  |  | ``` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 例如: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | | id   | startStance | endStance | triggerType | timeline     | | 
					
						
							|  |  |  |  | | ---- | ----------- | --------- | ----------- | ------------ | | 
					
						
							|  |  |  |  | | 2001 | 1           | 2         | 1           | hero/Skill01 | | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 即:在角色姿态为`1(地面姿态1)`时触发`1(重攻击按下)`,即可执行时间轴`hero/Skill01`,执行进入后摇阶段时姿态为`2(地面姿态2)` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### Step2.配置时间轴
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 以主角技能为例 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. 进入目录`\client\Assets\Resources\Timeline\Skill\hero`,复制一个`.playable`文件,重命名为自己想要的名字 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 2. 进入unity资源管理器找到这个文件,并双击 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 3. 此时会打开timeline编辑器。即可对时间轴进行编辑。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 4. 编辑操作 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    1. 添加Track:需要增加某一类型的操作时,在左边Track栏空白处点右键,选择需要添加的Track | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       红框中为项目中使用的自定义Track。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       点击后即可添加一个空的Track轨道。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    2. 添加Clip:在某个Track轨道的空白处点右键,添加Clip | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       unity添加clip的默认长度值很长,可以先手动修改一下clip的长度。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       单击clip,在右侧`inspector`页面中修改`duration`字段: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       s指的是秒数,f指的是帧数,修改任意一个即可。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    3. 修改Clip参数 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       单击clip,在右侧`inspector`页面中修改`Template`下的字段即可,每种clip的字段不一样,按具体含义修改。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |        | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### Step3.测试时间轴(可跳过)
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 这一步的目的主要是方便快速检测动画和判定框。这两种Clip比较需要实时检测。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. 选中Driver场景中的`Player`物体 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 2. 将需要检测的timeline文件(.playable)拖入右侧`inspector`页面中的`PlayableDirector` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 3. 将这图中两个物体拖入打开的时间轴编辑器内对应的Track中 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 4. 打开Scene页面,双击Player物体,使之位于屏幕中央 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 5. 预览时间轴效果。可以点击时间轴编辑器的播放按钮,也可以拖动时间轴上的锚点进行逐帧查看 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### Step4.测试技能
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. 进入游戏后按P呼出技能配置UI。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 2. 列表中是所有技能,绿色为已装备,灰色为未装备。点击自己要测试的技能装备上,即可按照连招树打出技能。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ## 制作关卡场景
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### Step1.复制一个场景文件
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 场景文件在`\client\Assets\Resources\Prefab\Level`,复制`level01.prefab`到同目录,重命名为想要的名字。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ### Step2.制作场景预制件
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 在unity资源编辑器中打开场景的prefab文件 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 场景prefab结构是这样的 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. Basic是地表的collider和sprite,以及雾效,这个不动就行了 | 
					
						
							|  |  |  |  | 2. LevelEditor生成场景物件,比如树,草 | 
					
						
							|  |  |  |  | 3. Entity 就是场景内的可交互实体,比如怪物,传送门,可破坏的箱子之类的 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | #### Step2.1.制作场景地表和物件
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ##### 绘制场景物件
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 场景物件路径在`\arts\scene\object`,没有特殊要求,绘制完毕之后复制到`\client\Assets\Resources\SceneAsset\Object\`即可。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ##### 绘制场景贴图
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 场景物件路径在`\arts\scene\terrain`,文件含义为: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | | 文件                  | 含义                    | 来源     | | 
					
						
							|  |  |  |  | | --------------------- | ----------------------- | -------- | | 
					
						
							|  |  |  |  | | level01.aseprite      | 贴图的原始文件          | 手动绘制 | | 
					
						
							|  |  |  |  | | level01_block.png     | 空气墙贴图              | 自动导出 | | 
					
						
							|  |  |  |  | | level01_static.png    | 静态物件贴图            | 自动导出 | | 
					
						
							|  |  |  |  | | level01_terrain.png   | 地表贴图                | 自动导出 | | 
					
						
							|  |  |  |  | | level01_terrain_r.png | 地表贴图R通达代表的贴图 | 手动绘制 | | 
					
						
							|  |  |  |  | | level01_terrain_g.png | 同上                    | 手动绘制 | | 
					
						
							|  |  |  |  | | level01_terrain_b.png | 同上                    | 手动绘制 | | 
					
						
							|  |  |  |  | | exportTerrain.py      | 导出脚本                | 无       | | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 主要需要制作的就是`level01.aseprite`文件: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 场景地编图分三层: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. block用于规定真实关卡范围,画空气墙 | 
					
						
							|  |  |  |  | 2. static用于用像素点来画静态景观的位置,比如树和灌木 | 
					
						
							|  |  |  |  | 3. terrain用来生成混合地表贴图,以及控制动态装饰物的生成,比如草 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 场景地编图规定大小为256x256 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ##### 导出场景贴图
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 目录下运行`exportTerrain.py`进行导出。方法同角色动画。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ##### 复制贴图到工程目录
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ``` | 
					
						
							|  |  |  |  | \client\Assets\Resources					资源总目录 | 
					
						
							|  |  |  |  | 	\SceneAsset								场景资源 | 
					
						
							|  |  |  |  | 		\Object								场景内的物体 | 
					
						
							|  |  |  |  | 		\Terrain							地形 | 
					
						
							|  |  |  |  | ``` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ##### 编辑场景物件
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | levelEditor节点挂了一个LevelDesign组件, | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. 把三张生成的地表图拖到这里(每个关卡不一样) | 
					
						
							|  |  |  |  | 2. material是透视效果需要的材质,这个不用动 | 
					
						
							|  |  |  |  | 3. static object 就是固定点的树,这里配置方式为 颜色(一定要rgb完全一样),贴图,权重,也就是一个颜色的点,对应权重随机选一个贴图来刷 | 
					
						
							|  |  |  |  | 4. dynamic object 就是地表上的随机装饰物,规则为:对于一个贴图,选择一个最可能刷这个装饰物的目标地表颜色,对于每一个地块读颜色,和这个目标颜色rgb作差,越接近的刷的概率越大,最后乘一个chance就是这个地块刷这个装饰物的概率 | 
					
						
							|  |  |  |  | 5. 最后点生成按钮就会在LevelEditor节点下生成object | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ##### 编辑场景实体
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. 在Entity节点下创建新的节点(结构随意),挂载`LevelNode`脚本 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 2. 编辑新增节点的位置信息。注意y值为0 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 3. 在`LevelNode`脚本中设置这个节点的类型(如怪物),Id(如怪物id),TargetId(额外信息,如传送门的目标关卡Id)。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 4. 一定要包含一个Type为`PlayerBorn`的节点,作为角色进入关卡时的默认位置。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ##### 编辑地表材质
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 不同关卡之间使用的地表材质融合方式是一样的,但是材质可能不一样。例如森林地图里材质贴图的RGB代表了泥土、浅草和深草,到了雪地地图可能变为石头、冰面、雪地。如果有这种需求需要对材质进行编辑。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 1. 新建材质,shader选择`Custom/Terrian` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 2. 将RGB通道代表的材质拖到对应的参数内。 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 3. 设置材质的Tilling,即材质采样时的缩小倍率。64x64的贴图,Tilling为64x64;32x32的图,Tilling为128x128,以此类推。 |