-
Notifications
You must be signed in to change notification settings - Fork 78
Standing Import
woctordho edited this page Sep 8, 2024
·
22 revisions
- Nova的一幅立绘由许多部件组合而成,建议画师把每个角色作为一个PSD文件,每个部件画在一个图层上
- TODO:按理说我们应该支持GIMP,各位小伙伴有空的话可以写一下GIMP导出图层的脚本
- 用
Tools/Standings/export_psd_layers.py
导出图层,这时生成的部件周围会有大量透明区域,需要裁剪 - 把所有部件放到
Assets/StandingsUncropped/<角色名称>/
文件夹下 - 在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
-
Max Size
:需要大于原图的尺寸- TODO:目前Unity支持的
Max Size
最大是16384,如果原图还要大,我们得想别的办法
- TODO:目前Unity支持的
-
Compression
:None
(否则会影响裁剪后图片的质量)
-
- 在Project中选中所有部件,右键点击任意部件,选择
Create -> Nova -> Uncropped Sprites
,文件夹下会生成UncroppedSprites.prefab
- 双击打开这个prefab
- 在Inspector中,不选
Use Capture Box
,点击Auto Crop All
,就会计算每个部件的裁剪框- TODO:如果没有打开prefab,就点击
Auto Crop All
,似乎会出问题
- TODO:如果没有打开prefab,就点击
- 在Hierarchy中选中各个
Layer
,在Inspector中检查黄色的裁剪框是否合适- 如果不合适,可以手动修改
Crop Rect
- 也可以调节
Auto Crop Padding
和Auto Crop Alpha
,再点击Auto Crop
重新自动裁剪
- 如果不合适,可以手动修改
- 在Hierarchy中选中
UncroppedSprites
,在Inspector中将outputDirectory
设为Assets/Resources/Standings/<角色名称>
- 点击
Write Cropped Textures
,就会把裁剪后的部件保存到这个文件夹- 如果文件夹不存在,会自动创建
- 在Project中选中所有裁剪后的部件,在Inspector中设置导入格式:
-
Texture Type
:Sprite (2D and UI)
-
Sprite Mode
:Single
-
Sprite Mode -> Pixels Per Unit
:保持默认值100 -
Sprite Mode -> Mesh Type
:建议设为Full Rect
-
Advanced -> Alpha Is Transparency
:true
(选中时Unity会自动做alpha bleeding) -
Max Size
:需要大于部件的尺寸- 如果这里提示
Only textures with width/height being multiple of 4 can be compressed...
,一般是因为这里的Max Size
或者裁剪前的Max Size
不够大
- 如果这里提示
-
Compression
:设置合适的压缩格式
-
- 再次在Hierarchy中选中
UncroppedSprites
,点击Generate Metadata
,就会在这个文件夹下生成一些asset,记录裁剪后的部件在原图中的偏移量
- 在Unity Editor的Hierarchy中的
Characters
下找到示例角色的game object(如Ergong
),把它复制一份 - 将game object的名字改成你的角色的名字(如
Xiaoming
),这个名字不会用在脚本中,只是为了在Hierarchy中好看 - 在Inspector中的
GameCharacterController
component中:- 将
luaGlobalName
改成你的角色的名字(如xiaoming
),脚本中使用的都是这个名字,注意大小写 - 这个名字必须符合Lua变量名的要求,只能包含字母、数字、下划线,并且不能以数字开头,不能包含中文、空格、其他符号等等
- 将
imageFolder
和voiceFolder
改成对应的文件夹
- 将
- 在
PostProcessing
component中更改luaName
,如ppXiaoming
- 打开
Assets/Nova/Lua/pose.lua
,在pose
table中为角色定义一些pose,定义时靠右的部件在显示时靠上层,如:
['xiaoming'] = {
['normal'] = 'body+mouth_normal+eye_normal',
},
- 在脚本中加入显示立绘的代码,如
show(xiaoming, 'normal')
- 在裁剪前和裁剪后,需要检查每个部件的
Max Size
是否大于图片的实际尺寸,如果不够就要增大Max Size
- 否则,Unity会自动把图片缩小,裁剪功能会出问题(TODO:支持在自动缩小之后裁剪)
-
Pixels Per Unit
越大,图片在画面中显示得就越小,一般保持默认值100即可- 如果立绘显示出来的尺寸特别大或者特别小,可以检查
Pixels Per Unit
是否被改动过
- 如果立绘显示出来的尺寸特别大或者特别小,可以检查