2025-04-19 18:59:26 +08:00
|
|
|
|
# ichni编辑器指南
|
|
|
|
|
|
|
|
|
|
|
|
## 前言
|
|
|
|
|
|
|
|
|
|
|
|
ichni巴拉巴拉待会写
|
|
|
|
|
|
|
|
|
|
|
|
## 进入程序 新建项目
|
|
|
|
|
|
|
|
|
|
|
|
~~如果有一般的写谱经验那么大概都可以知道是做什么的~~
|
|
|
|
|
|
|
|
|
|
|
|
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. **鼠标右键**:按下时开始旋转场景相机,释放时停止旋转。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### **音乐播放器操作**
|
|
|
|
|
|
|
|
|
|
|
|
1. **Enter**:播放或暂停音乐。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### **轨道操作**
|
|
|
|
|
|
|
|
|
|
|
|
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-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-04-19 23:21:27 +08:00
|
|
|
|
|
|
|
|
|
|
### pathnode
|
|
|
|
|
|
|
|
|
|
|
|
无疑,pathnode是track下最主要的部分,但是也是最简单的部分,~~但是扛不住量大~~
|
|
|
|
|
|
|
|
|
|
|
|
pathnode带有位置,旋转,缩放,颜色等,用于调整track部分的颜色
|
|
|
|
|
|
|
|
|
|
|
|
建议实操
|
|
|
|
|
|
|
|
|
|
|
|
### 事件
|
|
|
|
|
|
|
|
|
|
|
|
事件是一个很大的基础类,包揽了track外几乎所有的动态效果
|
|
|
|
|
|
|
|
|
|
|
|
事件包含displacement,swirl,scale,若是有过动效类型写谱的话,事件系统应当不难理解
|
|
|
|
|
|
|
|
|
|
|
|
另外还有一个特殊的事件用在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
|
|
|
|
|
|
|
|
|
|
建议实操
|
|
|
|
|
|
|
|
|
|
|
|
### Trail
|
|
|
|
|
|
|
|
|
|
|
|
由于0.2(旧版本)的某些神奇效果使我们再次增加了Trail,Trail的原型是unity的尾迹效果,所以需要注意的是当用各种手段使trail瞬移的时候会拉出长长的痕迹
|
|
|
|
|
|
|
|
|
|
|
|
trail配有位置,材质,颜色等(仍在开发)
|
|
|
|
|
|
|
|
|
|
|
|
目前Trail只能在trackPercentPoint下生成,但是有一点奇技淫巧是可以把他复制出来然后直接粘贴在folder下,这样就可以通过事件控制他了
|
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-05-30 19:37:54 +08:00
|
|
|
|
#### 击打效果和判定模式
|
2025-05-04 14:09:02 +08:00
|
|
|
|
|
|
|
|
|
|
由于不同主题包拥有不同击打效果和判定模式,在add页需要输入字符来创建
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 谱面存档
|
|
|
|
|
|
|
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
|
|
|
|
这个属于与本体对接的功能,目的是生成本体用的加密版谱面
|
|
|
|
|
|
|
|
|
|
|
|
## 一般写谱流程
|
|
|
|
|
|
|
|
|
|
|
|
### 0,寻找音源,确定bpm,选择主题包
|
|
|
|
|
|
|
|
|
|
|
|
### 1,创建摄像机轨道
|
|
|
|
|
|
|
|
|
|
|
|
我们建议在开始创建谱面的第一个操作就是创建摄像机文件夹,因为摄像机是每个谱面都必须要有的元素。
|
|
|
|
|
|
|
|
|
|
|
|
在刚打开工程时,您是通过自由视角摄像机 `Scene Camera` 来预览内容的,但这并不是游戏本体使用的摄像机。想要您的谱面被正确显示在游戏本体上,您需要创建一个游戏摄像机 `Game Camera` 来“拍摄”您的谱面。
|
|
|
|
|
|
|
|
|
|
|
|
#### 创建摄像机文件夹
|
|
|
|
|
|
|
|
|
|
|
|
您需要创建一个摄像机文件夹来放置摄像机及其附着的轨道(如果有),现有的两个方法便是使用cross track point或者直接对摄像机所在的文件夹增加动画,动画法可以直接参照其他元素的方法来进行创建,而cross track point可以获取到文件夹内对应的track,然后使用类似track precent point的设置来调节,当然Cross track point里设有快捷设置所有的Track,也就是说可以完全不用管cross track point的东西,直接在文件夹下把track和对应的起止时间都写好,然后直接使用paste track list粘贴所有的时间。
|
|
|
|
|
|
|
|
|
|
|
|
和beta版不同的是cross track point是会自动设置旋转的,默认的旋转方向对应的是当前track的切线方向(形象的说法就是你用track画一个圆,然后设置之后不用手动操作,你的摄像机就可以自动沿着圆旋转,如果把y值设为了90,它就可以始终看向圆的中心点)
|
|
|
|
|
|
|
|
|
|
|
|
### 2,创建track
|
|
|
|
|
|
|
|
|
|
|
|
#### 1, movable track
|
|
|
|
|
|
由于movable track的功能介绍早在前面有提及,这里不过多介绍
|
|
|
|
|
|
|
|
|
|
|
|
|