Copying and Pasting cs Code
In cs, like in almost any computer programming language, reading data from a file can be tricky. You add extra lines of code to tell the computer what to do. Sometimes you can copy and paste these lines from other peoples’ code.
For example, you can follow the pattern in this listing: private void MakeAnimationCurves(GameObject root, AnimationClip animClip, Animation animation)
{
acb = new AnimationCurveBuilder();
//Get a list of all sprites on this GO
var allSprites = root.GetComponentsInChildren(true).Select(sr => AnimationUtility.CalculateTransformPath(sr.transform, root.transform));
//Add a key for all objects on the first frame
SetGameObjectForKey(root, animClip, animation.MainlineKeys.First(), 0);
foreach (var mainlineKey in animation.MainlineKeys)
{
var visibleSprites = SetGameObjectForKey(root, animClip, mainlineKey);
var hiddenSprites = allSprites.Except(visibleSprites);
HideSprites(root, hiddenSprites, mainlineKey.Time);
}
switch (animation.LoopType)
{
case LoopType.True:
//Cycle back to first frame
SetGameObjectForKey(root, animClip, animation.MainlineKeys.First(), animation.Length);
break;
case LoopType.False:
//Duplicate the last key at the end time of the animation
SetGameObjectForKey(root, animClip, animation.MainlineKeys.Last(), animation.Length);
break;
default:
Debug.LogWarning("Unsupported loop type: " + animation.LoopType.ToString());
break;
}
//Add the curves to our animation clip
//NOTE: This MUST be done before modifying the settings, thus the double switch statement
acb.AddCurves(animClip);
foreach (var sprite in spriteChangeKeys)
{
if (sprite.Value.Count > 0)
{
BuildSpriteChangeCurve(ref animClip, sprite);
}
}
//Set the loop/wrap settings for the animation clip
var animSettings = AnimationUtility.GetAnimationClipSettings(animClip);
switch(animation.LoopType)
{
case LoopType.True:
animClip.wrapMode = WrapMode.Loop;
animSettings.loopTime = true;
break;
case LoopType.False:
animClip.wrapMode = WrapMode.ClampForever;
break;
case LoopType.PingPong:
animClip.wrapMode = WrapMode.PingPong;
animSettings.loopTime = true;
break;
default:
Debug.LogWarning("Unsupported loop type: " + animation.LoopType.ToString());
break;
}
animClip.SetAnimationSettings(animSettings);
//Debug.Log(string.Format("Setting animation {0} to {1} loop mode (WrapMode:{2} LoopTime:{3}) ", animClip.name, animation.LoopType, animClip.wrapMode, animSettings.loopTime));
}
{
acb = new AnimationCurveBuilder();
//Get a list of all sprites on this GO
var allSprites = root.GetComponentsInChildren
//Add a key for all objects on the first frame
SetGameObjectForKey(root, animClip, animation.MainlineKeys.First(), 0);
foreach (var mainlineKey in animation.MainlineKeys)
{
var visibleSprites = SetGameObjectForKey(root, animClip, mainlineKey);
var hiddenSprites = allSprites.Except(visibleSprites);
HideSprites(root, hiddenSprites, mainlineKey.Time);
}
switch (animation.LoopType)
{
case LoopType.True:
//Cycle back to first frame
SetGameObjectForKey(root, animClip, animation.MainlineKeys.First(), animation.Length);
break;
case LoopType.False:
//Duplicate the last key at the end time of the animation
SetGameObjectForKey(root, animClip, animation.MainlineKeys.Last(), animation.Length);
break;
default:
Debug.LogWarning("Unsupported loop type: " + animation.LoopType.ToString());
break;
}
//Add the curves to our animation clip
//NOTE: This MUST be done before modifying the settings, thus the double switch statement
acb.AddCurves(animClip);
foreach (var sprite in spriteChangeKeys)
{
if (sprite.Value.Count > 0)
{
BuildSpriteChangeCurve(ref animClip, sprite);
}
}
//Set the loop/wrap settings for the animation clip
var animSettings = AnimationUtility.GetAnimationClipSettings(animClip);
switch(animation.LoopType)
{
case LoopType.True:
animClip.wrapMode = WrapMode.Loop;
animSettings.loopTime = true;
break;
case LoopType.False:
animClip.wrapMode = WrapMode.ClampForever;
break;
case LoopType.PingPong:
animClip.wrapMode = WrapMode.PingPong;
animSettings.loopTime = true;
break;
default:
Debug.LogWarning("Unsupported loop type: " + animation.LoopType.ToString());
break;
}
animClip.SetAnimationSettings(animSettings);
//Debug.Log(string.Format("Setting animation {0} to {1} loop mode (WrapMode:{2} LoopTime:{3}) ", animClip.name, animation.LoopType, animClip.wrapMode, animSettings.loopTime));
}