例如,我在播放模式下直接在材质上进行颜色交换,但是当我回到编辑模式时,设置仍然保留吗?
例如 mymaterial.SetColor(" _ Color",蓝色); 要么 mymaterial.color = blue;
这实际上与 SetColor无关 和 color ,以及与场景对象和资产之间的差异有关的一切。
SetColor
color
对于场景中的数据,例如场景层次结构中的游戏对象及其组件以及某些照明设置,Unity会在进入"播放模式"之前保存打开的场景的副本.当您退出"播放模式"时,它将恢复保存的副本,从而有效擦除/重置游戏运行时场景中发生的任何更改。
但是资产文件(例如材料,纹理,可脚本化对象,游戏对象的预制件等)不在您的场景中.它们是您项目文件夹中自己的独立资产文件.因此,在进入"播放模式"时,它们不会被清除并保存为这种方式,也不会在以后还原。
如果您想调整材质使其看起来恰到好处,或者一组游戏参数要在特定的游戏时刻感觉恰到好处,那么这很有用,然后退出游戏模式并保持更改。
如果您不想以这种方式修改您的源资产,则应该创建它的副本.如果您使用 Renderer.material,这将自动发生 或 Renderer.materials 财产获取者.但您也可以使用以下方法手动复制它:
Renderer.material
Renderer.materials
var myMaterial = Instantiate(sourceMaterial);
然后您可以修改 myMaterial 而这些影响不会溢出到盘上对源资产的持续更改中。
myMaterial
这实际上与
SetColor
无关 和color
,以及与场景对象和资产之间的差异有关的一切。对于场景中的数据,例如场景层次结构中的游戏对象及其组件以及某些照明设置,Unity会在进入"播放模式"之前保存打开的场景的副本.当您退出"播放模式"时,它将恢复保存的副本,从而有效擦除/重置游戏运行时场景中发生的任何更改。
但是资产文件(例如材料,纹理,可脚本化对象,游戏对象的预制件等)不在您的场景中.它们是您项目文件夹中自己的独立资产文件.因此,在进入"播放模式"时,它们不会被清除并保存为这种方式,也不会在以后还原。
如果您想调整材质使其看起来恰到好处,或者一组游戏参数要在特定的游戏时刻感觉恰到好处,那么这很有用,然后退出游戏模式并保持更改。
如果您不想以这种方式修改您的源资产,则应该创建它的副本.如果您使用
Renderer.material
,这将自动发生 或Renderer.materials
财产获取者.但您也可以使用以下方法手动复制它:然后您可以修改
myMaterial
而这些影响不会溢出到盘上对源资产的持续更改中。