Jump to content
Unity Insider Forum

Klasse klonen


erixx

Recommended Posts

Hi, ich würde gerne eine Klasse klonen, damit ich eine unabhängige Kopie erhalte.

Im Moment schaut das so aus:

 

	public static Skill Clone(Skill original){
		Skill clone=new Skill();
		clone.skillTarget=original.skillTarget;
		clone.skillName=original.skillName;
		clone.skillTooltip=original.skillTooltip;
		clone.skillLevel=original.skillLevel;
		clone.skillMainType=original.skillMainType;
		clone.icon=original.icon;
		clone.bookIcon=original.bookIcon;
		clone.skillCostType=original.skillCostType;
		clone.skillCost=original.skillCost;
		clone.skillCostAdd=original.skillCostAdd;
		clone.skillCooldown=original.skillCooldown;
		clone.skillCurCooldown=original.skillCurCooldown;
		clone.skillCooldownAdd=original.skillCooldownAdd;
		clone.usingCooldown=original.usingCooldown;
		clone.skillRangeType=original.skillRangeType;
		clone.skillRange=original.skillRange;
		clone.skillType=original.skillType;
		clone.skillDamageMultiplier=original.skillDamageMultiplier;
		clone.levelTypeDamageMultiplier=original.levelTypeDamageMultiplier;
		clone.requiredWeapon=original.requiredWeapon;
		clone.gotRightWeapon=original.gotRightWeapon;
		clone.applyType=original.applyType;
		clone.applyAmount=original.applyAmount;
		clone.applyAmountAdd=original.applyAmountAdd;
		clone.skillCastParticle=original.skillCastParticle;
		clone.skillDuration=original.skillDuration;
		clone.skillDurationAdd=original.skillDurationAdd;
		clone.statusEffect=original.statusEffect;
		clone.statusEffectChance=original.statusEffectChance;
		clone.statusEffectChanceAdd=original.statusEffectChanceAdd;
		clone.statusEffectDuration=original.statusEffectDuration;
		clone.statusEffectDurationAdd=original.statusEffectDurationAdd;
		
		return clone;

	}

 

Nun meine Frage dazu, geht das nicht auch einfacher?

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier ist eine Methode (gerade gefunden), funktioniert aber nur denke ich mit Klassen dessen Member serialisierbar sind:

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

  public static class GenericCopyMaker<T>
	{
	    public static T GetDeepCopy(object objectToCopy)
	    {
	        using (MemoryStream memoryStream = new MemoryStream())
	        {
	            BinaryFormatter binaryFormatter = new BinaryFormatter();
	            binaryFormatter.Serialize(memoryStream, objectToCopy);
	            memoryStream.Seek(0, SeekOrigin.Begin);
	            return (T) binaryFormatter.Deserialize(memoryStream);
	        }
	    }
	}


Also sowas hier:

   [System.Serializable]
     public class SaveGlob
     {
         public int level;
         public float health;
         public bool isHardMode;
     }

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...