CubismParameterStore (Cocos Creator)
最終更新: 2023年3月14日
此页面适用于Cubism 4.2及更早版本的旧版本。 点击此处查看最新页面
概述
通过使用CubismParameterStore,您可以保存/恢复CubismModel的参数和部件值。
如果不使用CubismParameterStore,则通过Expression等处理值的结果可能不正确。
如果在恢复~保存之间进行了Expression等值的操作,值的操作结果会被保存,所以将与恢复的操作后的值进行加算/正片叠底,不会得到预期的结果。
如果您在恢复~保存之外操作该值,则您操作该值之前的状态会被恢复,因此之后通过加算/正片叠底操作值的结果将是正确的。
请参考此处查看相关教程文章。
执行以下处理来保存/恢复CubismModel的参数和部件值。
- 获取保存/恢复的参数和部件参考
- 保存参数和部件值
- 恢复参数和部件值
获取保存/恢复的参数和部件参考
在CubismParameterStore.onEnable中缓存对CubismModel参数和部件的参考。
if (this.destinationParameters == null) { this.destinationParameters = ComponentExtensionMethods.findCubismModel(this)?.parameters ?? null; } if (this.destinationParts == null) { this.destinationParts = ComponentExtensionMethods.findCubismModel(this)?.parts ?? null; }
这个处理由CubismParameterStore.onEnable()
执行。
保存参数和部件值
保存模型的当前参数和部件值。
在应用动画之后和在Cubism各个组件中操作值之前保存值。
// save parameters value if (this.destinationParameters != null && this._parameterValues == null) { this._parameterValues = new Array<number>(this.destinationParameters.length); } if (this._parameterValues != null && this.destinationParameters != null) { for (let i = 0; i < this._parameterValues.length; ++i) { if (this.destinationParameters[i] != null) { this._parameterValues[i] = this.destinationParameters[i].value; } } } // save parts opacity if (this.destinationParts != null && this._partOpacities == null) { this._partOpacities = new Array(this.destinationParts.length); } if (this._partOpacities != null && this.destinationParts != null) { for (let i = 0; i < this._partOpacities.length; ++i) { this._partOpacities[i] = this.destinationParts[i].opacity; } }
这个处理由CubismParameterStore.saveParameters()
执行。
恢复参数和部件值
恢复保存的参数和部件值。
在应用动画之前恢复值。
// restore parameters value if (this._parameterValues != null && this.destinationParameters != null) { for (let i = 0; i < this._parameterValues.length; ++i) { this.destinationParameters[i].value = this._parameterValues[i]; } } // restore parts opacity if (this._partOpacities != null && this.destinationParts != null) { for (let i = 0; i < this._partOpacities.length; ++i) { this.destinationParts[i].opacity = this._partOpacities[i]; } }
这个处理由CubismParameterStore.restoreParameters()
执行。
请问这篇文章对您有帮助吗?
是否