107 lines
2.8 KiB
C#
107 lines
2.8 KiB
C#
// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.
|
|
|
|
#if !(UNITY_FLASH || UNITY_METRO)
|
|
|
|
using System;
|
|
using UnityEngine;
|
|
|
|
namespace HutongGames.PlayMaker.Actions
|
|
{
|
|
[ActionCategory(ActionCategory.Application)]
|
|
[Tooltip("Saves a Screenshot. NOTE: Does nothing in Web Player. On Android, the resulting screenshot is available some time later.")]
|
|
public class TakeScreenshot : FsmStateAction
|
|
{
|
|
public enum Destination
|
|
{
|
|
MyPictures,
|
|
PersistentDataPath,
|
|
CustomPath
|
|
}
|
|
|
|
[Tooltip("Where to save the screenshot.")]
|
|
public Destination destination;
|
|
|
|
[Tooltip("Path used with Custom Path Destination option.")]
|
|
public FsmString customPath;
|
|
|
|
[RequiredField]
|
|
public FsmString filename;
|
|
|
|
[Tooltip("Add an auto-incremented number to the filename.")]
|
|
public FsmBool autoNumber;
|
|
|
|
[Tooltip("Factor by which to increase resolution.")]
|
|
public FsmInt superSize;
|
|
|
|
[Tooltip("Log saved file info in Unity console.")]
|
|
public FsmBool debugLog;
|
|
|
|
private int screenshotCount;
|
|
|
|
public override void Reset()
|
|
{
|
|
destination = Destination.MyPictures;
|
|
filename = "";
|
|
autoNumber = null;
|
|
superSize = null;
|
|
debugLog = null;
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (string.IsNullOrEmpty(filename.Value)) return;
|
|
|
|
string screenshotPath;
|
|
switch (destination)
|
|
{
|
|
case Destination.MyPictures:
|
|
screenshotPath = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
|
|
break;
|
|
case Destination.PersistentDataPath:
|
|
screenshotPath = Application.persistentDataPath;
|
|
break;
|
|
case Destination.CustomPath:
|
|
screenshotPath = customPath.Value;
|
|
break;
|
|
default:
|
|
screenshotPath = "";
|
|
break;
|
|
}
|
|
|
|
screenshotPath = screenshotPath.Replace("\\","/") + "/";
|
|
var screenshotFullPath = screenshotPath + filename.Value + ".png";
|
|
|
|
if (autoNumber.Value)
|
|
{
|
|
while (System.IO.File.Exists(screenshotFullPath))
|
|
{
|
|
screenshotCount++;
|
|
screenshotFullPath = screenshotPath + filename.Value + screenshotCount + ".png";
|
|
}
|
|
}
|
|
|
|
if (debugLog.Value)
|
|
{
|
|
Debug.Log("TakeScreenshot: " + screenshotFullPath);
|
|
}
|
|
|
|
#if UNITY_2017_1_OR_NEWER
|
|
ScreenCapture.CaptureScreenshot(screenshotFullPath, superSize.Value);
|
|
#else
|
|
Application.CaptureScreenshot(screenshotFullPath, superSize.Value);
|
|
#endif
|
|
|
|
Finish();
|
|
}
|
|
|
|
#if UNITY_EDITOR
|
|
public override string AutoName()
|
|
{
|
|
return ActionHelpers.AutoName(this, filename) + (autoNumber.Value ? " [autoNumber]" : "" );
|
|
}
|
|
#endif
|
|
|
|
}
|
|
}
|
|
|
|
#endif |