安装node最佳实践

1. 安装nvm

方法1(有梯子推荐):

winget install "NVM for Windows"

方法2:

nvm中文网下载安装文件

2. 安装指定版本node

查询支持版本
nvm list available
启用nvm
nvm on
安装指定版本
nvm install 12.1.0
切换版本
nvm use 16.16.0

3. 注意事项

如果之前已经安装好node了,那么需要把环境变量Path指向npm和nodejs的删掉,保留下面两项
NVM_HOME
NVM_SYMLINK

记一次sass-loader深坑

众所周知sass-loader需要依赖node-sass,但是往往版本对不上号,排查过程如下

1. 检查node版本

node -v
node-sass的页面有对应的版本

NodeJS Supported node-sass version Node Module
Node 17 7.0+ 102
Node 16 6.0+ 93
Node 15 5.0+, <7.0 88
Node 14 4.14+ 83
Node 13 4.13+, <5.0 79
Node 12 4.12+ 72
Node 11 4.10+, <5.0 67
Node 10 4.9+, <6.0 64
Node 8 4.5.3+, <5.0 57
Node <8 <5.0 <57

2. 安装对应版本的node-sass或者node

安装node-sass

npm i -D node-sass@对应版本

或者切换node版本

nvm use 12.1.0使用nvm切换对应node支持版本

3. 然后是sass-loader对应node-sass版本

sass-loader node-sass
sass-loader 4.1.1 node-sass 4.3.0
sass-loader 7.0.3 node-sass 4.7.2
sass-loader 7.3.1 node-sass 4.7.2
sass-loader 7.3.1 node-sass 4.14.1
sass-loader 10.0.1 node-sass 6.0.1

npm i -D sass-loader@对应版本

4. 接下来是最玄学的部分

如果你卡在中间位置,那怎么办。
假如node-sass版本4.12.1,那么sass-loader应该是7.3.1。
此时应该是能install成功的了,接下来就运行
如果运行报错,上下加减版本号,随机组合一下。

如何让Unity Mixer混合器音量控制符合体感

Unity Mixer是什么

游戏中的声音轨道有很多,使用Unity提供Mixer混响可以很方便按组控制音量,只需要暴露变量给代码,就可以调用Mixer.SetFloat("变量", 数值),数值单位是db。

Unity Mixer修改音量为什么不符合体感

真实世界中的声音通过震动产生,
人耳感受最小声压 :
2×10^{-5} (db)
人耳感受最大声压:
2×10^{-1} (db)
Mixer采用的单位是db,最高0db,最低-80db,以模拟真实世界。但是按照直觉我们拖动进度条控制音量[0,-80]反而觉得音量变化不是线性的。这需要看声压级公式:
LP(db) = 10Log_{10}^{(\frac{p}{p0})}
推导求声压比公式:
(\frac{p}{p0}) = 10^\frac{Lp}{10}
当声压级按[0,-80]线性变化时,体感音量(声压比 p/p0)的变化是对数变化,因此如果需要体感音量按线性变化,那么就对LP进行转换。

convertToLp(volume:number){
    let lp = 10 * Math.Log10(volume)
    lp = Math.max(-80, lp)
    return lp
}

convertToVolump(db:number){
    let volume = Math.pow(10, db/10)
    //体感最小音量
    if(volume <= Math.pow(10, -5))
        volume = 0
    return volume
}