2025-04-19 18:59:26 +08:00
# ichni编辑器指南
## 前言
2025-06-07 00:01:54 +08:00
和 arcade, rpe 等制谱器相比, ichni Editor 是十分复杂的~~建模软件~~制谱器。如果您是新手, 建议在Editor内~~玩玩~~上手。如果您发现有本教程中不完善的部分,请向 sls 反馈,我们会尽快(存疑)补充相关内容。
2025-04-19 18:59:26 +08:00
## 进入程序 新建项目
~~如果有一般的写谱经验那么大概都可以知道是做什么的~~
Project name: 项目名字, 即这张谱面的名字, 建议的是 “曲名” +“ ”+“难度名称”
Creator: 你的名字/谱师马甲
BPM: 节拍, 由于ichni是按照秒数存储谱面, 而有变bpm的曲子少之又少, 所以是固定bpm
2025-05-30 19:37:54 +08:00
不知道bpm是什么的: [歌曲bpm是什么 - 搜索 ](https://cn.bing.com/search?q=%e6%ad%8c%e6%9b%b2bpm%e6%98%af%e4%bb%80%e4%b9%88&FORM=QSRE1 )
bpm测试器: [歌曲调性和BPM查找器 - 多功能音乐分析器 ](https://vocalremover.org/zh/key-bpm-finder )
2025-04-19 18:59:26 +08:00
Delay: 这里的Delay只是单纯的调整谱面开始的时间, 调为负数可以在歌曲开始前开始谱面, 如果有偏移( offset) 的需求建议剪一下曲子
Song Location: 歌曲路径: 导入后歌曲存储在编辑器内, 与原路径的文件无关
**<mark>Theme Bundle Selection</mark>**:选择主题包,~~之后写~~
2025-04-19 23:21:27 +08:00
## 快捷键
注意, 颇多的快捷键都是在要鼠标在对应UI下才能触发的
### **场景操作**
1. **W ** :向前移动场景相机。
2. **S ** :向后移动场景相机。
3. **A ** :向左移动场景相机。
4. **D ** :向右移动场景相机。
5. **E ** :向上移动场景相机。
6. **Q ** :向下移动场景相机。
7. **鼠标右键 ** :按下时开始旋转场景相机,释放时停止旋转。
---
### **音乐播放器操作**
2025-06-21 23:09:34 +08:00
1. **Space ** :播放或暂停音乐。
2. **右Alt ** :临时播放音乐,松开后回到按下之前的位置
2025-04-19 23:21:27 +08:00
---
### **轨道操作**
1. **Alt + P ** :显示或隐藏所有路径节点。
2. **Alt + D ** :启用或隐藏所有轨道路径显示。
---
### **保存与导出**
1. **Ctrl + S ** :保存项目。
2. **Ctrl + E ** :导出项目。
---
### **复制、粘贴与删除**
1. **Ctrl + C ** :复制选中的游戏元素(目前仅支持单选)。
2. **Ctrl + V ** :粘贴游戏元素。
3. **Ctrl + D ** :删除选中的游戏元素。
---
### **分辨率提示**
1. **Ctrl + 1 ** :切换到手机分辨率提示。
2. **Ctrl + 2 ** :切换到平板分辨率提示。
3. **Ctrl + 3 ** :切换到绝对安全区域提示。
---
### **UI 操作**
1. **Ctrl + U ** :切换所有静态窗口的显示状态。
2025-05-04 14:09:02 +08:00
2. **Ctrl+ ↑/↓ ** : 放大, 缩小ui大小
2025-04-19 23:21:27 +08:00
---
### **摄像机切换**
1. **Ctrl + M ** :切换摄像机。
---
### **元素选择**
1. **鼠标左键 ** :点击选择场景中的游戏元素(需不在 UI 上)。
2025-06-07 00:01:54 +08:00
## 某些具有特殊功能的窗口
2025-06-01 15:36:20 +08:00
### Logger
Logger窗口在播放控制器的上方, 会显示和程序有关的信息
> 绿色=执行没问题,白色=提示
> 红色=有重大问题, 截图发给开发者, 先保存项目, 并切记不要删除AutoSave
> 黄色=小警告,通常不影响正常写谱
2025-06-07 00:01:54 +08:00
### EditorManager
EditorManager会展示有些关于当前谱面的信息和开关某些东西( 网格, 判定模式等) , 还有创建一些特殊元素
2025-04-19 18:59:26 +08:00
## 谱面结构
由于ichni的自由度极高, 其谱面结构偏向原生unity, 现在讲述简要功能
2025-04-19 23:21:27 +08:00
### Element Folder
2025-04-19 18:59:26 +08:00
本质上是一个空节点,拥有自己的位置属性,可以在下面放置其他的元素
### Camera
2025-04-19 23:21:27 +08:00
可以直接在folder下( 简单情况) , 也可以放在cross Track Point里( 需要多机位的特殊情况) , 需要注意的是, **一张谱面只能有一个camera**
camera的职责很简单: 做一个camera。带着他或者他所在的folder和cross Track Point里的track乱动, 他也就动起来了
### Track
Track是ichni的核心元件, 以下分为几种
2025-05-30 19:37:54 +08:00
#### 基础: TrackPath
2025-04-19 23:21:27 +08:00
TrackPath属性: 空间形状, 前进方式, 是否闭合
前进方式: track的前进方式分为time和distance, time会把每两个pathnode之间的段分为相同的时间分别前进,diasance则会根据距离等量均分, 如果有缓动那么将会强制使用diasance
```示例
以下是一个示例(代码块仅示意,没有实际意义和语法)
new track{
pathnode0(0,0,0)
2025-05-30 19:37:54 +08:00
pathnode1(0,0,1)
pathnode2(0,0,10)
starttime:0
endtime:2
2025-04-19 23:21:27 +08:00
}
若是time模式下, 0到1秒的时间track从0到1, 而在剩下的1秒会从1直接冲到10
distance就不会
```
2025-05-30 19:37:54 +08:00
#### 路径方式
2025-04-19 23:21:27 +08:00
1. Movable
2. Static
2025-05-30 19:37:54 +08:00
#### 显示方式
2025-04-19 23:21:27 +08:00
1. AutoOrient
2. TrackPath
2025-05-30 19:37:54 +08:00
#### movable属性:
2025-04-19 23:21:27 +08:00
2025-05-30 19:37:54 +08:00
开始时间,结束时间,可视长度,缓动
其中开始时间和结束时间是**track的头部**到达首尾的时间,而 结束时间+可视长度 则是**track尾**到达尾部的时间
在movable中, note以<mark>固定的位置生成在track上</mark>, 在放note时切记判定时间要在track的启停时间之间
2025-04-19 23:21:27 +08:00
2025-05-30 19:37:54 +08:00
#### Static属性:
下落时间,下落缓动
Static的track若是有选择显示方式, 则会始终显示整条track
在static中, note从track的<mark>**尾部运动到头部**</mark>
2025-04-19 23:21:27 +08:00
2025-05-30 19:37:54 +08:00
#### 显示属性
2025-04-19 23:21:27 +08:00
2025-05-30 19:37:54 +08:00
无论是AutoOrient还是TrackPath, 都拥有一个材质系统, 你可以选择主题包中的材质, 两个显示方式不同的是, track path会由于其中pathnode的方向而改变面的朝向, 而AutoOrient会强制track的面始终面向摄像机( 这段建议实操看看效果, 各有各的好)
2025-06-07 00:01:54 +08:00
对于绝大部分始终处于同一平面内的轨道,应该使用 `TrackRendererPathGenerator` 的渲染方式,并且其所有节点的法向量应当一致,垂直于这个平面。当然,调整法向量也可使轨道扭转,制作各种特效。
而对于在三维空间运动的轨道,比如螺旋线,建议使用 `TrackRendererAutoOrient` 的渲染方式,使轨道法向量始终朝向摄像机。这样得到的轨道在视觉上是等宽的,比手动调节节点法向量要方便的多。
除了 `TrackRendererPathGenerator` 和 `TrackRendererAutoOrient` 两种轨道渲染方式之外,还有 `TrackRenderSurface` 这种方式。这种方式把**闭合轨道**围成的区域渲染成一个面。您需要注意:
- 调整节点的法向量,朝向不对会使面变得扭曲。
轨道宽度由节点的 `Scale` 来控制,默认 1。增加或减小这个值会使轨道变宽或变窄, 更改为 0 会使轨道不可见,一些谱面中轨道末端变细的特效就是通过这种方法实现的。此外,您也可以使轨道宽度突然变化以营造律动感。
2025-04-19 23:21:27 +08:00
### pathnode
无疑, pathnode是track下最主要的部分, 但是也是最简单的部分, ~~但是扛不住量大~~
pathnode带有位置, 旋转, 缩放, 颜色等, 用于调整track部分的颜色
建议实操
### 事件
事件是一个很大的基础类, 包揽了track外几乎所有的动态效果
事件包含displacement, swirl, scale, 若是有过动效类型写谱的话, 事件系统应当不难理解
2025-06-07 00:01:54 +08:00
每当新建一个事件, 建议在0-1的位置放置一个打底事件, 本体有没有都没问题但是在编辑器下可能会导致一些问题
在一般的动画类中, 你应该可以看到除了三个动画表外的第四个按钮: GraphicEditor
点击之后会打开当前动画的图形编辑器(去看图形编辑器的文档)
2025-04-19 23:21:27 +08:00
另外还有一个特殊的事件用在track下: trackPercentPoint
2025-05-30 19:37:54 +08:00
trackPercentPoint使用0到1的值代表track进程, 配合trail使用可以实现 ~~反复横跳~~ 精细控制
还有一个trackHeadPoint是trackPercentPoint的简化版, 虽然不该放在这里但是我真的懒得开一个来讲
2025-04-19 23:21:27 +08:00
建议实操
2025-06-07 00:01:54 +08:00
### 缓动
缓动是控制数值随时间变化的参数,默认为 `Linear` , 即匀速。更改缓动可以实现加速、减速及其他效果。
您可以在下图中查看各种缓动类型,对于加速/减速建议使用 `in/outQuad` ,平滑淡入淡出可以使用 `in/out/inoutSine` 。如果您想创建一个复杂的动画<font color = gray>(比如先加速后匀速)</font>,并且要无缝衔接,建议分两段制作,并慢慢调整数值使整体更为流畅。
如果您希望缓动能被看出来,请尽量延长缓动的时间。对于短时间的动画<font color = gray>(比如小于 1 秒)</font>,各种缓动的差别并不是很大。从另一个角度讲,如果动画的时间较短,那么一些瑕疵<font color = gray>(比如摄像机在前一个轨道的末尾和后一个轨道的开头具有不一样的速度)</font>也不会被看出来。总而言之,不要过度依赖数学计算,看上去是对的就行了。
关于缓动请查看:[缓动查看 ](https://easings.net/zh-cn ) 或者直接去事件编辑器那里拉几个看看效果
2025-04-19 23:21:27 +08:00
### Trail
由于0.2( 旧版本) 的某些神奇效果使我们再次增加了Trail, Trail的原型是unity的尾迹效果, 所以需要注意的是当用各种手段使trail瞬移的时候会拉出长长的痕迹
2025-06-07 00:01:54 +08:00
trail配有位置, 材质, 颜色等
2025-04-19 23:21:27 +08:00
2025-06-07 00:01:54 +08:00
>**编辑器存在的Bug**
>目前的Trail在暂停时会消失, 这是很头疼的一个点, 因为Unity组件原生原因, 这个Bug不大可能修复
>当然你不用担心,本体不会出现这个问题,如果没事,做完动效再播放一遍就是原本的效果了
2025-04-19 18:59:26 +08:00
2025-05-04 14:09:02 +08:00
### Note
2025-05-30 19:37:54 +08:00
#### 基础
2025-05-04 14:09:02 +08:00
note可以视为环境物体, 拥有击打时间, 击打效果等
2025-06-01 15:36:20 +08:00
exactJudgeTime 就是 Note 的判定时间。随后点击 New Note Visual ,展开 Note 可以看到 New Note Visual ,选中它,在右边的 Choose 那里下拉菜单选择 Note 样式所属的主题包。点击 generate , Note Visual 就创建好了。此时您播放谱面,应该会有一个 Tap 落下并在相应秒被判定。
通过调整 position 即可实现无轨的效果, Note 可以适当大些,这样在小屏幕上也不会显得太小。
创建 Stay 的过程与创建 Note 大同小异。选中 note 轨道,点击 Stay 以创建 Stay, 随后创建 Note Visual、
>**Stay 可以使用 Tap 的材质吗?**
>
>- 您可能注意到了,编辑器并不限制您做这件事。从视觉上讲,这相当于创建了一个判定更宽的 Tap, 因此逻辑上是被允许的。但是, **Tap 不可以使用 Stay 的材质**, 这与读谱的基本逻辑相悖。Hold 的材质与上述两者有较大不同,不能和它们混用。
2025-06-07 00:01:54 +08:00
> **关于斜轨下落**
>
> 您可以从 sls 或其他谱师那里获取谱面进行学习。要注意的一点是,**确保斜轨 Note 在屏幕上的投影具有足够的宽度**。宽度太小意味着像素太少, Note 会闪烁,造成不良观感。您可以通过以下几种方法来解决这个问题:
> - 使用 3d note
> - 让摄像机视角略微朝下
> - 将判定线贴近摄像机
2025-05-04 14:09:02 +08:00
击打时间:建议使用采音器=>见采音器指南
2025-06-07 00:01:54 +08:00
> **注意事项**
>
> - 请不要让 Note 的出现的时间过长,这会造成读谱困难。对于直轨下落,建议 Note 从出现 <font color = gray>(无论是从屏幕外进入还是从屏幕中浮现)</font>到判定时间不要超过 1 秒。对于斜轨下落, 请根据个人斜轨的游玩经验控制下落速度。由于电脑屏幕较大, 视觉上的流速应当偏快, 您可以录制视频并在移动设备上播放以确定流速是否合适, 或者直接让sls包一个本体看看效果。
>
> - 按Ctrl+1, 2, 3可以显示对应的安全范围。默认窗口大小为 16: 9。您的谱面应当尽量适配这三个范围, 如果做不到完全适配, 请至少不要把 Note 写到这些范围之外。
2025-06-01 15:36:20 +08:00
##### 导出 Note 配置
在导出 Note 配置之后,您就不必通过复制的方式创建 Note, 像之前那样单击轨道下的相应按钮即可, 新创建的 Note 会自动使用导出的 Note 配置。在noteinfo旁有save Note Prefab, Save之后可以直接在顶上的EditorManger选择Use Note Prefab, 这样之后放置note就可以自动套用对应的Note Visual
2025-05-30 19:37:54 +08:00
#### 击打效果和判定模式
2025-05-04 14:09:02 +08:00
由于不同主题包拥有不同击打效果和判定模式, 在add页需要输入字符来创建
2025-06-07 00:01:54 +08:00
### Effect
#### 介绍
Effect是一个~~特殊的动画组件~~, 可以通过note的指定操作或者直接通过时间( Time Effects Collection) 触发
每个可以添加Effect的地方都配有一个输入框, 可以搭配特效查阅表, 输入指定的Effect来调
比如DTM的NoteVisual有Perfect/Good/Bad/Miss字段, 在下添加Effect就是这个Note判定Perfect/Good/Bad/Miss时触发的特效, 在EditorManager里可以选择预览谱面时的判定模式
关于Effect( 以及分支控制) 我们会专门做一个Markdown来说明
### 环境物体
2025-06-01 15:36:20 +08:00
2025-06-07 00:01:54 +08:00
使用环境物体可以创建立方体、球等几何结构,可以创建假 Note 用于表演,也可以将节点绑定至环境物体上实现同步运动。具体怎么用问问 sls 吧,我也懒得写了。
2025-05-04 14:09:02 +08:00
## 谱面存档
2025-05-30 19:37:54 +08:00
望文生义,不必多说
2025-05-04 14:09:02 +08:00
### 自动保存
ichni每隔一段时间就会自动保存谱面, 如果要回档, 需要手动替换
### Clip
2025-05-30 19:37:54 +08:00
类似beta的export和import, 如果你选中了一个文件夹按s clip, 再命个名字, 这就相当于保存了一小段谱面。然后在别的地方用l clip读取, 好处就是可以跨越多个谱面, 起到一个类似预制件的作用。
2025-05-04 14:09:02 +08:00
### Export
2025-04-19 18:59:26 +08:00
2025-05-30 19:37:54 +08:00
这个属于与本体对接的功能,目的是生成本体用的加密版谱面
2025-06-01 15:36:20 +08:00
---
2025-05-30 19:37:54 +08:00
## 一般写谱流程
### 0, 寻找音源, 确定bpm, 选择主题包
### 1, 创建摄像机轨道
我们建议在开始创建谱面的第一个操作就是创建摄像机文件夹,因为摄像机是每个谱面都必须要有的元素。
在刚打开工程时,您是通过自由视角摄像机 `Scene Camera` 来预览内容的,但这并不是游戏本体使用的摄像机。想要您的谱面被正确显示在游戏本体上,您需要创建一个游戏摄像机 `Game Camera` 来“拍摄”您的谱面。
#### 创建摄像机文件夹
2025-06-01 15:36:20 +08:00
现有的两个移动game camera方法便是使用cross track point或者直接对摄像机所在的文件夹增加动画, 动画法可以直接参照其他元素的方法来进行创建, 而cross track point可以获取到文件夹内对应的track, 然后使用类似track precent point的设置来调节, 当然Cross track point里设有快捷设置所有的Track, 也就是说可以完全不用管cross track point的东西, 直接在文件夹下把track和对应的起止时间都写好, 然后直接使用paste track list粘贴所有的时间。
2025-05-30 19:37:54 +08:00
和beta版不同的是cross track point是会自动设置旋转的, 默认的旋转方向对应的是当前track的切线方向( 形象的说法就是你用track画一个圆, 然后设置之后不用手动操作, 你的摄像机就可以自动沿着圆旋转, 如果把y值设为了90, 它就可以始终看向圆的中心点)
### 2, 创建track
#### 1, movable track
2025-06-07 00:01:54 +08:00
由于movable track的功能介绍早在前面有提及, 这里不过多介绍: [关于MovableTrack ](#movable属性: )
2025-06-01 15:36:20 +08:00
需要注意的是, 尽量不要让track面的旋转垂直于屏幕, 也就是“不要竖着看一张纸”
2025-06-07 00:01:54 +08:00
当然如果是autoOrient( 自动面向摄像机) 当我没说
2025-06-01 15:36:20 +08:00
#### 2, Static track
Static track适合生成装饰兼任下落note的方法
2025-06-07 00:01:54 +08:00
功能介绍早在前面有提及,这里不过多介绍:[关于StaticTrack ](#Static属性: )
2025-05-30 19:37:54 +08:00
2025-06-01 15:36:20 +08:00
### 3, 创建Note
2025-06-07 00:01:54 +08:00
Note的相关介绍( [关于Note ](#Note ))
### 4, 其他。。。