zoukankan      html  css  js  c++  java
  • Unity3D + C#: Cloning the Content of a Serializable Class

    Unity3D + C#: Cloning the Content of a Serializable Class

     

    Found a pretty simple and neat method for cloning the contents of a serializable class from one to another: http://stackoverflow.com/questions/78536/cloning-objects-in-c-sharp

    Here's a copy of the script (for Unity use), to make your life easier:
    Download

    Given the serializable class:

    [System.Serializable]
    public class SimpleClass
    {
     
        publicint x;
        publicint y;
        publicint z;
    }

    and the situation:
    // where you can change the value inside the inspector
    public SimpleClass simpleClass;
    private SimpleClass newSimpleClass; 

    protected void Start()
    {
        newSimpleClass = simpleClass;
        newSimpleClass.x = 123;

        Debug.Log(simpleClass.x); // return 123
    }
     
    If you're doing it this way, you're simply just referencing simpleClass to newSimpleClass.
    And when you change the values inside newSimpleClass (x, y, or z), the values in simpleClass will change too.
     
    Some may try to copy all the values one by one:
     
    protected void Start()
    {
        newSimpleClass = simpleClass;
        newSimpleClass.x = simpleClass.x;
        newSimpleClass.y = simpleClass.y;
        newSimpleClass.z = simpleClass.z;
    }
     
    It works fine, but it's "not a very elegant way of handling the situation".
     
    The ObjectCopier script provided by user "johnc", was a much more elegant way of doing it.
    Where you can just "clone" the contents from one serializable object to another:
    protected void Start()
    {
        newSimpleClass = ObjectCopier.Clone(simpleClass);
        newSimpleClass.x = 123;

        Debug.Log(simpleClass); // shouldn't return 123
    }
  • 相关阅读:
    vector存入共享内存(了解)
    vector内存分配
    关于传值的小问题
    c++11 lambda(匿名函数)
    std::function,std::bind复习
    项目分析(人物上线消息)
    mongo 1067错误
    随笔1
    随笔
    交换机的体系结构和各部件说明
  • 原文地址:https://www.cnblogs.com/shawnzxx/p/2909054.html
Copyright © 2011-2022 走看看