Skip to content

Standing Import

woctordho edited this page May 21, 2021 · 22 revisions

立绘导入

  1. Nova的一幅立绘由许多部件组合而成,建议画师把每个角色作为一个PSD文件,每个部件画在一个图层上
    • TODO:按理说我们应该支持GIMP,各位小伙伴有空的话可以写一下GIMP导出图层的脚本
  2. Tools/Standings/export_psd_layers.py导出图层,这时生成的部件周围会有大量透明区域,需要裁剪
  3. 把所有部件放到Assets/StandingsUncropped/<角色名称>/文件夹下
  4. 在Unity Editor的Project中选中所有部件,在Inspector中设置导入格式:
    • Texture Type: Sprite (2D and UI)
    • Sprite Mode: Single
    • Sprite Mode -> Pixels Per Unit: 保持一致,一般用默认值100
    • Advanced -> Read/Write Enabled: true
    • Advanced -> Generate Mip Maps: false
    • Compression: None(否则会影响裁剪后图片的质量)
  5. 在Project中选中所有部件,右键点击任意部件,选择Create -> Nova -> Uncropped Standing,文件夹下会生成UncroppedStanding.prefab
  6. 双击打开这个prefab
  7. 在Inspector中点击Auto Crop All,就会计算每个部件的裁剪框
  8. 在Hierarchy中选中各个StandingComponent,在Inspector中检查裁剪是否合适
    • 如果不合适,可以手动修改裁剪框,或者调节Auto Crop PaddingAuto Crop Alpha之后重新进行自动裁剪
  9. 在Hierarchy中选中UncroppedStanding,在Inspector中将Output Directory设为Resources/<作品名称>/Standings/<角色名称>,在Project中创建这个文件夹(TODO:自动完成这一步)
  10. 点击Write Cropped Textures,就会把裁剪后的部件保存到这个文件夹
  11. 点击Generate Metadata,就会在这个文件夹下生成一些asset,记录裁剪后的部件在原图中的偏移量(TODO:自动完成这一步)
  12. 在Project中选中所有裁剪后的部件,在Inspector中设置导入格式:(TODO:自动完成这一步)
    • Texture Type: Sprite (2D and UI)
    • Sprite Mode: Single
    • Sprite Mode -> Pixels Per Unit: 保持一致,一般用默认值100
    • 设置合适的压缩

角色创建

  1. 在Unity Editor的Hierarchy中的Characters下找到示例角色的game object(如Ergong),把它复制一份
  2. 将game object的名字改成你的角色的名字(如Xiaoming),这个名字不会用在脚本中,只是为了在Hierarchy中好看
  3. 在Inspector中的Character Texture Merger component中:
    • Lua Global Name改成你的角色的名字(如xiaoming),脚本中使用的都是这个名字,注意大小写
    • Image FolderVoice Folder改成对应的文件夹
  4. 打开Assets/Nova/Lua/pose.lua,在pose表中为角色定义一些pose,定义时靠右的部件在显示时靠上层,如:
['xiaoming'] = {
    ['normal'] = {'body', 'mouth_normal', 'eye_normal'},
},
  1. 在脚本中加入显示立绘的代码,如show(xiaoming, 'normal')

关于立绘尺寸的说明

  • Unity中图片默认的Max Size是2048,在裁剪前和裁剪后需要检查每个部件的尺寸,如果尺寸超过了这个值,就要增大这个值
    • 否则,Unity会自动把图片缩小,我们的裁剪功能会出问题(TODO:支持在自动缩小之后裁剪)
  • Characters/TextureMerger game object的Character Texture Merger component中:
    • Reference Size控制合成后立绘的texture尺寸,目前所有立绘的texture尺寸为(Reference Size / 2, Reference Size)(TODO:以后我们可能会重写这部分,支持不同尺寸的texture)
    • Pixels Per Unit越大,合成后的立绘在texture中就会越大,太小的值会浪费texture空间,太大的值会超出texture边界
  • 在角色的game object的Game Overlay Texture Changer component中,可以设置一个Actual Image Object,然后用这个game object的transform来调节立绘的位置偏移量和大小
    • 如果对一个角色的整套立绘进行大幅度改动,可以在这里调节位置偏移量和大小,而不用改动脚本

Clone this wiki locally