• Unity 运行状态下动态保存 预制体/预制体上脚本参数


    前言:在Unity游戏制作过程中为了方便策划调试保存 通常会让策划可以在游戏运行时直接保存调整好的预制体

    在此背景下,出现了以下代码:

    一.运行状态下动态保存预制体

    代码:

    1. public class ChangePrefabs : MonoBehaviour {
    2. public bool Save = false;
    3. public string Name;
    4. private string path;
    5. void Start() {
    6. Name = this.gameObject.name;
    7. path = string.Format("Assets/Model/{0}", Name.Replace("(Clone)", "")) ;
    8. }
    9. void Update() {
    10. if(Save) {
    11. Save = false;
    12. PrefabUtility.SaveAsPrefabAsset(this.gameObject, path);
    13. }
    14. }
    15. }

    程序运行中修改预制体的上部球体的材质,然后点击Save,停止运行后 可以看到工程里的预制体也同样被改变了

    1.把脚本挂在预制体上

    2.修改预制体上部球体的材质

    修改前:

    修改后:

    点击Save

     

    3.停止运行后,工程中的预制体 上部球体变成了工程中修改的材质

    二.运行状态下动态保存预制体上的脚本参数

    代码:

    1. public class ChangePrefabScript : MonoBehaviour {
    2. public bool Save = false;
    3. public string path;
    4. public string canChange;
    5. GameObject player;
    6. void Start() {
    7. player = Addressables.LoadAssetAsync(path).Result;
    8. }
    9. // Update is called once per frame
    10. void Update() {
    11. if(Save) {
    12. Save = false;
    13. SerializedObject thisScript = new SerializedObject(this);
    14. if(player != null) {
    15. var oldChangePrefabScript = player.GetComponent();
    16. SerializedObject oldScript = new SerializedObject(oldChangePrefabScript);
    17. SerializedProperty serializedProperty = thisScript.FindProperty("canChange");
    18. oldScript.CopyFromSerializedProperty(serializedProperty);
    19. oldScript.ApplyModifiedProperties();
    20. }
    21. }
    22. }
    23. }

    程序运行中修改预制体上的脚本中的CanChange中的内容,然后点击Save,停止运行后 可以看到工程里的预制体上的脚本中的Can Change内容随之改变了

    1.把脚本挂在预制体上

    2.程序运行时改变Can Change的值 然后点击Save

    3.程序停止运行后,找到预制体上的相应脚本查看 Can Change值已经变成修改值 

     

  • 相关阅读:
    vue 使用 lodash 防抖
    Redis之与SSM集成Spring注解式缓存
    R可视化:给柱状图添加网格
    22、库存服务
    信息系统项目管理师核心考点(四十六)采购工作说明书(SOW)
    【react-native】关于ios与android的环境搭建
    Java:Java中单元测试的最佳实践
    mybatis初体验(细节满满)
    产品经理和项目经理谁才是项目管理界的NO.1?
    编译原理--中间代码优化算法总结
  • 原文地址:https://blog.csdn.net/SmillCool/article/details/127861962