스크린샷 촬영 시 캐릭터 애니메이션 추가 및 촬영 사운드 추가
This commit is contained in:
8
Assets/Audio.meta
Normal file
8
Assets/Audio.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 11df597fea8fb461a965d831c26e7568
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/Audio/camera-shutter1.mp3
Executable file
BIN
Assets/Audio/camera-shutter1.mp3
Executable file
Binary file not shown.
23
Assets/Audio/camera-shutter1.mp3.meta
Normal file
23
Assets/Audio/camera-shutter1.mp3.meta
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6a6771d05326c4775a47c0ec4c4e4558
|
||||||
|
AudioImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 8
|
||||||
|
defaultSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
loadType: 0
|
||||||
|
sampleRateSetting: 0
|
||||||
|
sampleRateOverride: 44100
|
||||||
|
compressionFormat: 1
|
||||||
|
quality: 1
|
||||||
|
conversionMode: 0
|
||||||
|
preloadAudioData: 0
|
||||||
|
platformSettingOverrides: {}
|
||||||
|
forceToMono: 0
|
||||||
|
normalize: 1
|
||||||
|
loadInBackground: 0
|
||||||
|
ambisonic: 0
|
||||||
|
3D: 1
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -308,6 +308,8 @@ GameObject:
|
|||||||
- component: {fileID: 162178408}
|
- component: {fileID: 162178408}
|
||||||
- component: {fileID: 162178410}
|
- component: {fileID: 162178410}
|
||||||
- component: {fileID: 162178409}
|
- component: {fileID: 162178409}
|
||||||
|
- component: {fileID: 162178412}
|
||||||
|
- component: {fileID: 162178411}
|
||||||
m_Layer: 5
|
m_Layer: 5
|
||||||
m_Name: Image Character
|
m_Name: Image Character
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@@ -331,7 +333,7 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
m_AnchoredPosition: {x: -267.873, y: 126.63}
|
m_AnchoredPosition: {x: -162, y: 80}
|
||||||
m_SizeDelta: {x: 424.251, y: 424.25}
|
m_SizeDelta: {x: 424.251, y: 424.25}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &162178409
|
--- !u!114 &162178409
|
||||||
@@ -372,6 +374,247 @@ CanvasRenderer:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 162178407}
|
m_GameObject: {fileID: 162178407}
|
||||||
m_CullTransparentMesh: 1
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!82 &162178411
|
||||||
|
AudioSource:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 162178407}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 4
|
||||||
|
OutputAudioMixerGroup: {fileID: 0}
|
||||||
|
m_audioClip: {fileID: 0}
|
||||||
|
m_Resource: {fileID: 8300000, guid: 6a6771d05326c4775a47c0ec4c4e4558, type: 3}
|
||||||
|
m_PlayOnAwake: 0
|
||||||
|
m_Volume: 1
|
||||||
|
m_Pitch: 1
|
||||||
|
Loop: 0
|
||||||
|
Mute: 0
|
||||||
|
Spatialize: 0
|
||||||
|
SpatializePostEffects: 0
|
||||||
|
Priority: 128
|
||||||
|
DopplerLevel: 1
|
||||||
|
MinDistance: 1
|
||||||
|
MaxDistance: 500
|
||||||
|
Pan2D: 0
|
||||||
|
rolloffMode: 0
|
||||||
|
BypassEffects: 0
|
||||||
|
BypassListenerEffects: 0
|
||||||
|
BypassReverbZones: 0
|
||||||
|
rolloffCustomCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 1
|
||||||
|
value: 0
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
panLevelCustomCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
spreadCustomCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
reverbZoneMixCustomCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
--- !u!114 &162178412
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 162178407}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 4d0390bd8b8ffd640b34fe25065ff1df, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Assembly-CSharp-firstpass::DG.Tweening.DOTweenAnimation
|
||||||
|
updateType: 0
|
||||||
|
isSpeedBased: 0
|
||||||
|
hasOnStart: 0
|
||||||
|
hasOnPlay: 1
|
||||||
|
hasOnUpdate: 0
|
||||||
|
hasOnStepComplete: 0
|
||||||
|
hasOnComplete: 1
|
||||||
|
hasOnTweenCreated: 0
|
||||||
|
hasOnRewind: 0
|
||||||
|
onStart:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
onPlay:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls:
|
||||||
|
- m_Target: {fileID: 162178409}
|
||||||
|
m_TargetAssemblyTypeName: UnityEngine.UI.Image, UnityEngine.UI
|
||||||
|
m_MethodName: set_sprite
|
||||||
|
m_Mode: 2
|
||||||
|
m_Arguments:
|
||||||
|
m_ObjectArgument: {fileID: 21300000, guid: b003007f0724f4eb39ca05642c497ce4, type: 3}
|
||||||
|
m_ObjectArgumentAssemblyTypeName: UnityEngine.Sprite, UnityEngine
|
||||||
|
m_IntArgument: 0
|
||||||
|
m_FloatArgument: 0
|
||||||
|
m_StringArgument:
|
||||||
|
m_BoolArgument: 0
|
||||||
|
m_CallState: 2
|
||||||
|
- m_Target: {fileID: 162178411}
|
||||||
|
m_TargetAssemblyTypeName: UnityEngine.AudioSource, UnityEngine
|
||||||
|
m_MethodName: Play
|
||||||
|
m_Mode: 1
|
||||||
|
m_Arguments:
|
||||||
|
m_ObjectArgument: {fileID: 0}
|
||||||
|
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||||
|
m_IntArgument: 0
|
||||||
|
m_FloatArgument: 0
|
||||||
|
m_StringArgument:
|
||||||
|
m_BoolArgument: 0
|
||||||
|
m_CallState: 2
|
||||||
|
onUpdate:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
onStepComplete:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
onComplete:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls:
|
||||||
|
- m_Target: {fileID: 162178409}
|
||||||
|
m_TargetAssemblyTypeName: UnityEngine.UI.Image, UnityEngine.UI
|
||||||
|
m_MethodName: set_sprite
|
||||||
|
m_Mode: 2
|
||||||
|
m_Arguments:
|
||||||
|
m_ObjectArgument: {fileID: 21300000, guid: 7ab63bd8191ef49a6918352ece3c5364, type: 3}
|
||||||
|
m_ObjectArgumentAssemblyTypeName: UnityEngine.Sprite, UnityEngine
|
||||||
|
m_IntArgument: 0
|
||||||
|
m_FloatArgument: 0
|
||||||
|
m_StringArgument:
|
||||||
|
m_BoolArgument: 0
|
||||||
|
m_CallState: 2
|
||||||
|
onTweenCreated:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
onRewind:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
targetIsSelf: 1
|
||||||
|
targetGO: {fileID: 0}
|
||||||
|
tweenTargetIsTargetGO: 1
|
||||||
|
delay: 0
|
||||||
|
duration: 0.5
|
||||||
|
easeType: 6
|
||||||
|
easeCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 1
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
loopType: 0
|
||||||
|
loops: 1
|
||||||
|
id:
|
||||||
|
isRelative: 0
|
||||||
|
isFrom: 0
|
||||||
|
isIndependentUpdate: 0
|
||||||
|
autoKill: 0
|
||||||
|
autoGenerate: 1
|
||||||
|
isActive: 1
|
||||||
|
isValid: 1
|
||||||
|
target: {fileID: 162178408}
|
||||||
|
animationType: 9
|
||||||
|
targetType: 5
|
||||||
|
forcedTargetType: 0
|
||||||
|
autoPlay: 0
|
||||||
|
useTargetAsV3: 0
|
||||||
|
endValueFloat: 0
|
||||||
|
endValueV3: {x: 0, y: 10, z: 1}
|
||||||
|
endValueV2: {x: 0, y: 0}
|
||||||
|
endValueColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
endValueString:
|
||||||
|
endValueRect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 0
|
||||||
|
height: 0
|
||||||
|
endValueTransform: {fileID: 0}
|
||||||
|
optionalBool0: 0
|
||||||
|
optionalBool1: 0
|
||||||
|
optionalFloat0: 1
|
||||||
|
optionalInt0: 1
|
||||||
|
optionalRotationMode: 0
|
||||||
|
optionalScrambleMode: 0
|
||||||
|
optionalShakeRandomnessMode: 0
|
||||||
|
optionalString:
|
||||||
--- !u!1 &240954698
|
--- !u!1 &240954698
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -469,6 +712,18 @@ MonoBehaviour:
|
|||||||
m_StringArgument:
|
m_StringArgument:
|
||||||
m_BoolArgument: 0
|
m_BoolArgument: 0
|
||||||
m_CallState: 2
|
m_CallState: 2
|
||||||
|
- m_Target: {fileID: 162178412}
|
||||||
|
m_TargetAssemblyTypeName: DG.Tweening.DOTweenAnimation, Assembly-CSharp-firstpass
|
||||||
|
m_MethodName: DORestart
|
||||||
|
m_Mode: 1
|
||||||
|
m_Arguments:
|
||||||
|
m_ObjectArgument: {fileID: 0}
|
||||||
|
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||||
|
m_IntArgument: 0
|
||||||
|
m_FloatArgument: 0
|
||||||
|
m_StringArgument:
|
||||||
|
m_BoolArgument: 0
|
||||||
|
m_CallState: 2
|
||||||
--- !u!114 &240954701
|
--- !u!114 &240954701
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -522,7 +777,7 @@ MonoBehaviour:
|
|||||||
selectMonitorIndex: 2
|
selectMonitorIndex: 2
|
||||||
takeNumber: 0
|
takeNumber: 0
|
||||||
inputPrefix: {fileID: 56188227}
|
inputPrefix: {fileID: 56188227}
|
||||||
inputResult: {fileID: 0}
|
inputResult: {fileID: 975488549}
|
||||||
directorySelector: {fileID: 1438379834}
|
directorySelector: {fileID: 1438379834}
|
||||||
--- !u!1 &519420028
|
--- !u!1 &519420028
|
||||||
GameObject:
|
GameObject:
|
||||||
@@ -889,7 +1144,7 @@ MonoBehaviour:
|
|||||||
m_lineSpacingMax: 0
|
m_lineSpacingMax: 0
|
||||||
m_paragraphSpacing: 0
|
m_paragraphSpacing: 0
|
||||||
m_charWidthMaxAdj: 0
|
m_charWidthMaxAdj: 0
|
||||||
m_TextWrappingMode: 3
|
m_TextWrappingMode: 1
|
||||||
m_wordWrappingRatios: 0.4
|
m_wordWrappingRatios: 0.4
|
||||||
m_overflowMode: 3
|
m_overflowMode: 3
|
||||||
m_linkedTextComponent: {fileID: 0}
|
m_linkedTextComponent: {fileID: 0}
|
||||||
@@ -1395,7 +1650,7 @@ MonoBehaviour:
|
|||||||
m_InputType: 0
|
m_InputType: 0
|
||||||
m_AsteriskChar: 42
|
m_AsteriskChar: 42
|
||||||
m_KeyboardType: 0
|
m_KeyboardType: 0
|
||||||
m_LineType: 0
|
m_LineType: 1
|
||||||
m_HideMobileInput: 0
|
m_HideMobileInput: 0
|
||||||
m_HideSoftKeyboard: 0
|
m_HideSoftKeyboard: 0
|
||||||
m_CharacterValidation: 0
|
m_CharacterValidation: 0
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: d4fb1de9b00bfac42af0a35ff2a01f89
|
guid: 9f80792dcd2829e41b1f075e7245ca5b
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<doc>
|
|
||||||
<assembly>
|
|
||||||
<name>DOTweenUpgradeManager</name>
|
|
||||||
</assembly>
|
|
||||||
<members>
|
|
||||||
<member name="T:DG.DOTweenUpgradeManager.Autorun">
|
|
||||||
<summary>
|
|
||||||
This class and its whole library are deleted the first time DOTween's setup is run after an upgrade (or after a new install).
|
|
||||||
NOTE: DidReloadScripts doesn't work on first install so it's useless, InitializeOnLoad is the only way
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
</members>
|
|
||||||
</doc>
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 3df9fdaadcb4c394e826a4d8d20bb952
|
|
||||||
TextScriptImporter:
|
|
||||||
userData:
|
|
||||||
AssetOrigin:
|
|
||||||
serializedVersion: 1
|
|
||||||
productId: 27676
|
|
||||||
packageName: DOTween (HOTween v2)
|
|
||||||
packageVersion: 1.2.790
|
|
||||||
assetPath: Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.XML
|
|
||||||
uploadId: 831234
|
|
||||||
Binary file not shown.
@@ -1,29 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 2bf936a5d80799e4e88ec9270fea75a4
|
|
||||||
PluginImporter:
|
|
||||||
serializedVersion: 1
|
|
||||||
iconMap: {}
|
|
||||||
executionOrder: {}
|
|
||||||
isPreloaded: 0
|
|
||||||
platformData:
|
|
||||||
Any:
|
|
||||||
enabled: 0
|
|
||||||
settings: {}
|
|
||||||
Editor:
|
|
||||||
enabled: 1
|
|
||||||
settings:
|
|
||||||
DefaultValueInitialized: true
|
|
||||||
WindowsStoreApps:
|
|
||||||
enabled: 0
|
|
||||||
settings:
|
|
||||||
CPU: AnyCPU
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
AssetOrigin:
|
|
||||||
serializedVersion: 1
|
|
||||||
productId: 27676
|
|
||||||
packageName: DOTween (HOTween v2)
|
|
||||||
packageVersion: 1.2.790
|
|
||||||
assetPath: Assets/Plugins/Demigiant/DOTween/Editor/DOTweenUpgradeManager.dll
|
|
||||||
uploadId: 831234
|
|
||||||
8
Assets/Resources.meta
Normal file
8
Assets/Resources.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: edff7c9c5dfec49dbae75dcfc0b847d3
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
54
Assets/Resources/DOTweenSettings.asset
Normal file
54
Assets/Resources/DOTweenSettings.asset
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 16995157, guid: a811bde74b26b53498b4f6d872b09b6d, type: 3}
|
||||||
|
m_Name: DOTweenSettings
|
||||||
|
m_EditorClassIdentifier: DOTween.dll::DG.Tweening.Core.DOTweenSettings
|
||||||
|
useSafeMode: 1
|
||||||
|
safeModeOptions:
|
||||||
|
logBehaviour: 2
|
||||||
|
nestedTweenFailureBehaviour: 0
|
||||||
|
timeScale: 1
|
||||||
|
unscaledTimeScale: 1
|
||||||
|
useSmoothDeltaTime: 0
|
||||||
|
maxSmoothUnscaledTime: 0.15
|
||||||
|
rewindCallbackMode: 0
|
||||||
|
showUnityEditorReport: 0
|
||||||
|
logBehaviour: 0
|
||||||
|
drawGizmos: 1
|
||||||
|
defaultRecyclable: 0
|
||||||
|
defaultAutoPlay: 3
|
||||||
|
defaultUpdateType: 0
|
||||||
|
defaultTimeScaleIndependent: 0
|
||||||
|
defaultEaseType: 6
|
||||||
|
defaultEaseOvershootOrAmplitude: 1.70158
|
||||||
|
defaultEasePeriod: 0
|
||||||
|
defaultAutoKill: 1
|
||||||
|
defaultLoopType: 0
|
||||||
|
debugMode: 0
|
||||||
|
debugStoreTargetId: 1
|
||||||
|
showPreviewPanel: 1
|
||||||
|
storeSettingsLocation: 0
|
||||||
|
modules:
|
||||||
|
showPanel: 0
|
||||||
|
audioEnabled: 1
|
||||||
|
physicsEnabled: 1
|
||||||
|
physics2DEnabled: 1
|
||||||
|
spriteEnabled: 1
|
||||||
|
uiEnabled: 1
|
||||||
|
textMeshProEnabled: 0
|
||||||
|
tk2DEnabled: 0
|
||||||
|
deAudioEnabled: 0
|
||||||
|
deUnityExtendedEnabled: 0
|
||||||
|
epoOutlineEnabled: 0
|
||||||
|
createASMDEF: 0
|
||||||
|
showPlayingTweens: 0
|
||||||
|
showPausedTweens: 0
|
||||||
8
Assets/Resources/DOTweenSettings.asset.meta
Normal file
8
Assets/Resources/DOTweenSettings.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f3fb915957f684d8abb924862bfc3cb3
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,43 +1,28 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Windows.Forms; // 모니터 식별 및 스크린 정보
|
|
||||||
using System.Drawing; // Bitmap 관련
|
|
||||||
using System.Drawing.Imaging;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using TMPro;
|
using TMPro;
|
||||||
using Unity.VisualScripting;
|
using System.Runtime.InteropServices;
|
||||||
using Application = UnityEngine.Application;
|
|
||||||
using Screen = System.Windows.Forms.Screen;
|
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Drawing.Imaging;
|
||||||
using Graphics = System.Drawing.Graphics;
|
using Graphics = System.Drawing.Graphics;
|
||||||
|
#endif
|
||||||
|
|
||||||
public class TakeScreen : MonoBehaviour
|
public class TakeScreen : MonoBehaviour
|
||||||
{
|
{
|
||||||
// 캡처할 모니터 인덱스 (2 = 첫번째 모니터)
|
|
||||||
public int selectMonitorIndex = 2;
|
public int selectMonitorIndex = 2;
|
||||||
public int takeNumber;
|
public int takeNumber;
|
||||||
int monitorIndex = 0;
|
|
||||||
|
|
||||||
MONITORINFO selectMonitor;
|
[SerializeField] TMP_InputField inputPrefix;
|
||||||
int selectWidth;
|
[SerializeField] TMP_InputField inputResult;
|
||||||
int selectHeight;
|
[SerializeField] DirectorySelect directorySelector;
|
||||||
|
|
||||||
[SerializeField]
|
|
||||||
TMP_InputField inputPrefix;
|
|
||||||
|
|
||||||
[SerializeField]
|
|
||||||
TMP_InputField inputResult;
|
|
||||||
|
|
||||||
[SerializeField]
|
|
||||||
DirectorySelect directorySelector;
|
|
||||||
|
|
||||||
// WinAPI 구조체
|
|
||||||
[StructLayout(LayoutKind.Sequential)]
|
|
||||||
public struct RECT
|
|
||||||
{
|
|
||||||
public int left, top, right, bottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// --- Windows 전용 구조체 및 변수 ---
|
||||||
|
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
|
||||||
|
[StructLayout(LayoutKind.Sequential)] public struct RECT { public int left, top, right, bottom; }
|
||||||
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
|
||||||
public struct MONITORINFO
|
public struct MONITORINFO
|
||||||
{
|
{
|
||||||
@@ -45,109 +30,107 @@ public class TakeScreen : MonoBehaviour
|
|||||||
public RECT rcMonitor;
|
public RECT rcMonitor;
|
||||||
public RECT rcWork;
|
public RECT rcWork;
|
||||||
public int dwFlags;
|
public int dwFlags;
|
||||||
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string szDevice;
|
||||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
|
|
||||||
public string szDevice;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// WinAPI 델리게이트
|
|
||||||
private delegate bool MonitorEnumProc(IntPtr hMonitor, IntPtr hdcMonitor, ref RECT lprcMonitor, IntPtr dwData);
|
private delegate bool MonitorEnumProc(IntPtr hMonitor, IntPtr hdcMonitor, ref RECT lprcMonitor, IntPtr dwData);
|
||||||
|
[DllImport("user32.dll")] private static extern bool EnumDisplayMonitors(IntPtr hdc, IntPtr lprcClip, MonitorEnumProc lpfnEnum, IntPtr dwData);
|
||||||
|
[DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern bool GetMonitorInfo(IntPtr hMonitor, ref MONITORINFO lpmi);
|
||||||
|
[DllImport("user32.dll")] private static extern IntPtr GetDC(IntPtr hWnd);
|
||||||
|
[DllImport("gdi32.dll")] private static extern IntPtr CreateCompatibleDC(IntPtr hdc);
|
||||||
|
[DllImport("gdi32.dll")] private static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int width, int height);
|
||||||
|
[DllImport("gdi32.dll")] private static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj);
|
||||||
|
[DllImport("gdi32.dll")] private static extern bool BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop);
|
||||||
|
[DllImport("gdi32.dll")] private static extern bool DeleteObject(IntPtr hObject);
|
||||||
|
[DllImport("gdi32.dll")] private static extern bool DeleteDC(IntPtr hdc);
|
||||||
|
[DllImport("user32.dll")] private static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
|
||||||
|
|
||||||
// WinAPI 함수
|
MONITORINFO selectMonitor;
|
||||||
[DllImport("user32.dll")]
|
int selectWidth;
|
||||||
private static extern bool EnumDisplayMonitors(IntPtr hdc, IntPtr lprcClip, MonitorEnumProc lpfnEnum, IntPtr dwData);
|
int selectHeight;
|
||||||
|
int monitorIndex = 0;
|
||||||
[DllImport("user32.dll", CharSet = CharSet.Auto)]
|
#endif
|
||||||
private static extern bool GetMonitorInfo(IntPtr hMonitor, ref MONITORINFO lpmi);
|
|
||||||
|
|
||||||
[DllImport("user32.dll")]
|
|
||||||
private static extern IntPtr GetDC(IntPtr hWnd);
|
|
||||||
|
|
||||||
[DllImport("gdi32.dll")]
|
|
||||||
private static extern IntPtr CreateCompatibleDC(IntPtr hdc);
|
|
||||||
|
|
||||||
[DllImport("gdi32.dll")]
|
|
||||||
private static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int width, int height);
|
|
||||||
|
|
||||||
[DllImport("gdi32.dll")]
|
|
||||||
private static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj);
|
|
||||||
|
|
||||||
[DllImport("gdi32.dll")]
|
|
||||||
private static extern bool BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight,
|
|
||||||
IntPtr hdcSrc, int nXSrc, int nYSrc, CopyPixelOperation dwRop);
|
|
||||||
|
|
||||||
[DllImport("gdi32.dll")]
|
|
||||||
private static extern bool DeleteObject(IntPtr hObject);
|
|
||||||
|
|
||||||
[DllImport("gdi32.dll")]
|
|
||||||
private static extern bool DeleteDC(IntPtr hdc);
|
|
||||||
|
|
||||||
[DllImport("user32.dll")]
|
|
||||||
private static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
|
|
||||||
|
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
Debug.Log("=== 모든 모니터 정보 ===");
|
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
|
||||||
EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero, MonitorCallback, IntPtr.Zero);
|
EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero, MonitorCallback, IntPtr.Zero);
|
||||||
|
#else
|
||||||
|
Debug.Log("macOS 환경입니다. 시스템 기본 스크린샷 기능을 사용합니다.");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
|
||||||
private bool MonitorCallback(IntPtr hMonitor, IntPtr hdcMonitor, ref RECT lprcMonitor, IntPtr dwData)
|
private bool MonitorCallback(IntPtr hMonitor, IntPtr hdcMonitor, ref RECT lprcMonitor, IntPtr dwData)
|
||||||
{
|
{
|
||||||
MONITORINFO mi = new MONITORINFO();
|
MONITORINFO mi = new MONITORINFO();
|
||||||
mi.cbSize = Marshal.SizeOf(typeof(MONITORINFO));
|
mi.cbSize = Marshal.SizeOf(typeof(MONITORINFO));
|
||||||
monitorIndex++;
|
monitorIndex++;
|
||||||
|
|
||||||
if (GetMonitorInfo(hMonitor, ref mi) && monitorIndex == selectMonitorIndex)
|
if (GetMonitorInfo(hMonitor, ref mi) && monitorIndex == selectMonitorIndex)
|
||||||
{
|
{
|
||||||
int width = mi.rcMonitor.right - mi.rcMonitor.left;
|
|
||||||
int height = mi.rcMonitor.bottom - mi.rcMonitor.top;
|
|
||||||
bool isPrimary = (mi.dwFlags & 1) != 0;
|
|
||||||
|
|
||||||
Debug.Log(
|
|
||||||
$"{mi.szDevice} 모니터 \n" +
|
|
||||||
$" - 해상도 : {width} x {height}\n" +
|
|
||||||
$" - 위치 : x = {mi.rcMonitor.left}, y = {mi.rcMonitor.top}\n" +
|
|
||||||
$" - 주 모니터 여부 : {isPrimary}\n"
|
|
||||||
);
|
|
||||||
|
|
||||||
selectMonitor = mi;
|
selectMonitor = mi;
|
||||||
selectWidth = width;
|
selectWidth = mi.rcMonitor.right - mi.rcMonitor.left;
|
||||||
selectHeight = height;
|
selectHeight = mi.rcMonitor.bottom - mi.rcMonitor.top;
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
return true; // 계속 나머지 모니터 순회
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
public void Take()
|
public void Take()
|
||||||
{
|
{
|
||||||
string fileName = $"{inputPrefix.text}_{string.Format("{0:D2}", takeNumber)}.png";
|
string fileName = $"{inputPrefix.text}_{takeNumber:D2}.png";
|
||||||
string savePath = Path.Combine(directorySelector.selectedFolderPath, fileName);
|
string savePath = Path.Combine(directorySelector.selectedFolderPath, fileName);
|
||||||
|
|
||||||
Shot(selectMonitor.rcMonitor.left, selectMonitor.rcMonitor.top, selectWidth, selectHeight, savePath);
|
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
|
||||||
|
ShotWin(selectMonitor.rcMonitor.left, selectMonitor.rcMonitor.top, selectWidth, selectHeight, savePath);
|
||||||
|
#elif UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX
|
||||||
|
ShotMac(savePath);
|
||||||
|
#endif
|
||||||
|
inputResult.text = savePath;
|
||||||
|
takeNumber++;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shot(int x, int y, int width, int height, string savePath)
|
// Windows 캡처 로직
|
||||||
|
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
|
||||||
|
void ShotWin(int x, int y, int width, int height, string savePath)
|
||||||
{
|
{
|
||||||
IntPtr desktopDC = GetDC(IntPtr.Zero);
|
IntPtr desktopDC = GetDC(IntPtr.Zero);
|
||||||
IntPtr memoryDC = CreateCompatibleDC(desktopDC);
|
IntPtr memoryDC = CreateCompatibleDC(desktopDC);
|
||||||
IntPtr bitmap = CreateCompatibleBitmap(desktopDC, width, height);
|
IntPtr bitmap = CreateCompatibleBitmap(desktopDC, width, height);
|
||||||
IntPtr oldBitmap = SelectObject(memoryDC, bitmap);
|
IntPtr oldBitmap = SelectObject(memoryDC, bitmap);
|
||||||
|
|
||||||
BitBlt(memoryDC, 0, 0, width, height, desktopDC, x, y, CopyPixelOperation.SourceCopy | CopyPixelOperation.CaptureBlt);
|
// 0x00CC0020 = SRCCOPY, 0x40000000 = CAPTUREBLT
|
||||||
|
BitBlt(memoryDC, 0, 0, width, height, desktopDC, x, y, 0x00CC0020 | 0x40000000);
|
||||||
|
|
||||||
using (Bitmap bmp = Image.FromHbitmap(bitmap))
|
using (Bitmap bmp = Image.FromHbitmap(bitmap))
|
||||||
{
|
{
|
||||||
bmp.Save(savePath, ImageFormat.Png);
|
bmp.Save(savePath, ImageFormat.Png);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 정리
|
|
||||||
SelectObject(memoryDC, oldBitmap);
|
SelectObject(memoryDC, oldBitmap);
|
||||||
DeleteObject(bitmap);
|
DeleteObject(bitmap);
|
||||||
DeleteDC(memoryDC);
|
DeleteDC(memoryDC);
|
||||||
ReleaseDC(desktopDC, memoryDC);
|
ReleaseDC(IntPtr.Zero, desktopDC);
|
||||||
|
|
||||||
inputResult.text = savePath;
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// macOS 캡처 로직
|
||||||
|
#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX
|
||||||
|
void ShotMac(string savePath)
|
||||||
|
{
|
||||||
|
// macOS는 시스템 명령어를 통해 스크린샷을 찍는 것이 가장 안정적입니다.
|
||||||
|
// -x: 소리 없음, -C: 커서 포함(선택)
|
||||||
|
// 만약 특정 모니터만 찍어야 한다면 -D 옵션을 사용합니다 (예: -D 1)
|
||||||
|
string args = $"-x \"{savePath}\"";
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
System.Diagnostics.Process.Start("screencapture", args);
|
||||||
|
Debug.Log($"macOS 스크린샷 저장 완료: {savePath}");
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogError($"macOS 스크린샷 실패: {e.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@ EditorBuildSettings:
|
|||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Scenes:
|
m_Scenes:
|
||||||
- enabled: 1
|
- enabled: 0
|
||||||
path: Assets/Scenes/SampleScene.unity
|
path: Assets/Scenes/SampleScene.unity
|
||||||
guid: 8c9cfa26abfee488c85f1582747f6a02
|
guid: 8c9cfa26abfee488c85f1582747f6a02
|
||||||
m_configObjects:
|
m_configObjects:
|
||||||
|
|||||||
@@ -12,16 +12,16 @@ PlayerSettings:
|
|||||||
targetDevice: 2
|
targetDevice: 2
|
||||||
useOnDemandResources: 0
|
useOnDemandResources: 0
|
||||||
accelerometerFrequency: 60
|
accelerometerFrequency: 60
|
||||||
companyName: DefaultCompany
|
companyName: Cooney Studio
|
||||||
productName: ScreenCapture
|
productName: Screen Capture
|
||||||
defaultCursor: {fileID: 0}
|
defaultCursor: {fileID: 0}
|
||||||
cursorHotspot: {x: 0, y: 0}
|
cursorHotspot: {x: 0, y: 0}
|
||||||
m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
|
m_SplashScreenBackgroundColor: {r: 0.8, g: 0.8, b: 0.8, a: 1}
|
||||||
m_ShowUnitySplashScreen: 1
|
m_ShowUnitySplashScreen: 1
|
||||||
m_ShowUnitySplashLogo: 1
|
m_ShowUnitySplashLogo: 1
|
||||||
m_SplashScreenOverlayOpacity: 1
|
m_SplashScreenOverlayOpacity: 1
|
||||||
m_SplashScreenAnimation: 1
|
m_SplashScreenAnimation: 1
|
||||||
m_SplashScreenLogoStyle: 1
|
m_SplashScreenLogoStyle: 0
|
||||||
m_SplashScreenDrawMode: 0
|
m_SplashScreenDrawMode: 0
|
||||||
m_SplashScreenBackgroundAnimationZoom: 1
|
m_SplashScreenBackgroundAnimationZoom: 1
|
||||||
m_SplashScreenLogoAnimationZoom: 1
|
m_SplashScreenLogoAnimationZoom: 1
|
||||||
@@ -42,8 +42,8 @@ PlayerSettings:
|
|||||||
m_SplashScreenLogos: []
|
m_SplashScreenLogos: []
|
||||||
m_VirtualRealitySplashScreen: {fileID: 0}
|
m_VirtualRealitySplashScreen: {fileID: 0}
|
||||||
m_HolographicTrackingLossScreen: {fileID: 0}
|
m_HolographicTrackingLossScreen: {fileID: 0}
|
||||||
defaultScreenWidth: 1920
|
defaultScreenWidth: 480
|
||||||
defaultScreenHeight: 1080
|
defaultScreenHeight: 320
|
||||||
defaultScreenWidthWeb: 960
|
defaultScreenWidthWeb: 960
|
||||||
defaultScreenHeightWeb: 600
|
defaultScreenHeightWeb: 600
|
||||||
m_StereoRenderingPath: 0
|
m_StereoRenderingPath: 0
|
||||||
@@ -83,7 +83,7 @@ PlayerSettings:
|
|||||||
androidApplicationEntry: 2
|
androidApplicationEntry: 2
|
||||||
defaultIsNativeResolution: 1
|
defaultIsNativeResolution: 1
|
||||||
macRetinaSupport: 1
|
macRetinaSupport: 1
|
||||||
runInBackground: 0
|
runInBackground: 1
|
||||||
muteOtherAudioSources: 0
|
muteOtherAudioSources: 0
|
||||||
Prepare IOS For Recording: 0
|
Prepare IOS For Recording: 0
|
||||||
Force IOS Speakers When Recording: 0
|
Force IOS Speakers When Recording: 0
|
||||||
@@ -91,7 +91,7 @@ PlayerSettings:
|
|||||||
deferSystemGesturesMode: 0
|
deferSystemGesturesMode: 0
|
||||||
hideHomeButton: 0
|
hideHomeButton: 0
|
||||||
submitAnalytics: 1
|
submitAnalytics: 1
|
||||||
usePlayerLog: 1
|
usePlayerLog: 0
|
||||||
dedicatedServerOptimizations: 1
|
dedicatedServerOptimizations: 1
|
||||||
bakeCollisionMeshes: 0
|
bakeCollisionMeshes: 0
|
||||||
forceSingleInstance: 0
|
forceSingleInstance: 0
|
||||||
@@ -107,8 +107,8 @@ PlayerSettings:
|
|||||||
xboxEnableKinectAutoTracking: 0
|
xboxEnableKinectAutoTracking: 0
|
||||||
xboxEnableFitness: 0
|
xboxEnableFitness: 0
|
||||||
visibleInBackground: 1
|
visibleInBackground: 1
|
||||||
allowFullscreenSwitch: 1
|
allowFullscreenSwitch: 0
|
||||||
fullscreenMode: 1
|
fullscreenMode: 3
|
||||||
xboxSpeechDB: 0
|
xboxSpeechDB: 0
|
||||||
xboxEnableHeadOrientation: 0
|
xboxEnableHeadOrientation: 0
|
||||||
xboxEnableGuest: 0
|
xboxEnableGuest: 0
|
||||||
|
|||||||
Reference in New Issue
Block a user