• 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值已经变成修改值 

     

  • 相关阅读:
    RHCE8 资料整理(六)
    vscode 下载安装
    备份服务器数据的重要
    解决javax.mail.MessagingException: Could not convert socket to TLS;
    MySQL表的操作
    正厚软件干货|DOCKER环境部署(linux版)
    JVM-环境准备&性能指标&基础知识
    Angular-02:环境等说明
    Docker 容器上部署 Zabbix
    【网络】详解http协议
  • 原文地址:https://blog.csdn.net/SmillCool/article/details/127861962