Skip to content

Standing Import

woctordho edited this page Sep 8, 2024 · 22 revisions

立绘导入与角色创建

立绘导入

  1. Nova的一幅立绘由许多部件组合而成,建议画师把每个角色作为一个PSD文件,每个部件画在一个图层上
    • TODO:按理说我们应该支持GIMP,各位小伙伴有空的话可以写一下GIMP导出图层的脚本
  2. Tools/Standings/export_psd_layers.py导出图层,这时生成的部件周围会有大量透明区域,需要裁剪
  3. 把所有部件放到Assets/StandingsUncropped/<角色名称>/文件夹下
  4. 在Unity Editor的Project中选中所有部件,在Inspector中设置导入格式:
    • Texture TypeSprite (2D and UI)
    • Sprite ModeSingle
    • Sprite Mode -> Pixels Per Unit:保持默认值100
    • Advanced -> Read/Write Enabledtrue
    • Advanced -> Generate Mip Mapsfalse
    • Max Size:需要大于原图的尺寸
      • TODO:目前Unity支持的Max Size最大是16384,如果原图还要大,我们得想别的办法
    • CompressionNone(否则会影响裁剪后图片的质量)
  5. 在Project中选中所有部件,右键点击任意部件,选择Create -> Nova -> Uncropped Sprites,文件夹下会生成UncroppedSprites.prefab
  6. 双击打开这个prefab
  7. 在Inspector中,不选Use Capture Box,点击Auto Crop All,就会计算每个部件的裁剪框
    • TODO:如果没有打开prefab,就点击Auto Crop All,似乎会出问题
  8. 在Hierarchy中选中各个Layer,在Inspector中检查黄色的裁剪框是否合适
    • 如果不合适,可以手动修改Crop Rect
    • 也可以调节Auto Crop PaddingAuto Crop Alpha,再点击Auto Crop重新自动裁剪
  9. 在Hierarchy中选中UncroppedSprites,在Inspector中将outputDirectory设为Assets/Resources/Standings/<角色名称>
  10. 点击Write Cropped Textures,就会把裁剪后的部件保存到这个文件夹
    • 如果文件夹不存在,会自动创建
  11. 在Project中选中所有裁剪后的部件,在Inspector中设置导入格式:
    • Texture TypeSprite (2D and UI)
    • Sprite ModeSingle
    • Sprite Mode -> Pixels Per Unit:保持默认值100
    • Sprite Mode -> Mesh Type:建议设为Full Rect
    • Advanced -> Alpha Is Transparencytrue(选中时Unity会自动做alpha bleeding)
    • Max Size:需要大于部件的尺寸
      • 如果这里提示Only textures with width/height being multiple of 4 can be compressed...,一般是因为这里的Max Size或者裁剪前的Max Size不够大
    • Compression:设置合适的压缩格式
  12. 再次在Hierarchy中选中UncroppedSprites,点击Generate Metadata,就会在这个文件夹下生成一些asset,记录裁剪后的部件在原图中的偏移量

角色创建

  1. 在Unity Editor的Hierarchy中的Characters下找到示例角色的game object(如Ergong),把它复制一份
  2. 将game object的名字改成你的角色的名字(如Xiaoming),这个名字不会用在脚本中,只是为了在Hierarchy中好看
  3. 在Inspector中的GameCharacterController component中:
    • luaGlobalName改成你的角色的名字(如xiaoming),脚本中使用的都是这个名字,注意大小写
    • 这个名字必须符合Lua变量名的要求,只能包含字母、数字、下划线,并且不能以数字开头,不能包含中文、空格、其他符号等等
    • imageFoldervoiceFolder改成对应的文件夹
  4. PostProcessing component中更改luaName,如ppXiaoming
  5. 打开Assets/Nova/Lua/pose.lua,在pose table中为角色定义一些pose,定义时靠右的部件在显示时靠上层,如:
['xiaoming'] = {
    ['normal'] = 'body+mouth_normal+eye_normal',
},
  1. 在脚本中加入显示立绘的代码,如show(xiaoming, 'normal')

关于立绘尺寸的说明

  • 在裁剪前和裁剪后,需要检查每个部件的Max Size是否大于图片的实际尺寸,如果不够就要增大Max Size
    • 否则,Unity会自动把图片缩小,裁剪功能会出问题(TODO:支持在自动缩小之后裁剪)
  • Pixels Per Unit越大,图片在画面中显示得就越小,一般保持默认值100即可
    • 如果立绘显示出来的尺寸特别大或者特别小,可以检查Pixels Per Unit是否被改动过
Clone this wiki locally