This commit is contained in:
dldydtn9755-crypto
2026-07-10 16:33:29 +09:00
19 changed files with 1012 additions and 6 deletions

Binary file not shown.

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ed9ad9872e35def43a237b66770f5447
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,135 @@
using UnityEngine;
using UnityEngine.Events;
// 펜(PenTip)으로 그릴 수 있는 종이.
// 시작 시 RenderTexture를 만들어 원본 텍스처(계약서 인쇄물)를 복사해 넣고,
// 렌더러의 텍스처를 그 RT로 교체한다. 이후 펜이 UV 좌표로 스탬프를 찍는다.
//
// 요구 사항:
// - 이 오브젝트(또는 콜라이더)가 MeshCollider여야 한다 — RaycastHit.textureCoord는 MeshCollider에서만 나온다
// - 머티리얼은 DinoLove/Paper 셰이더 기준 (_FrontTex). 다른 셰이더면 프로퍼티 이름만 맞춰주면 됨
public class DrawablePaper : MonoBehaviour
{
[Header("Canvas")]
[SerializeField] private Renderer _renderer; // 비우면 자기 자신의 Renderer
[SerializeField] private string _texturePropertyName = "_FrontTex";
[Tooltip("그리기 전 원본(계약서 인쇄물). 비우면 머티리얼의 현재 텍스처, 그것도 없으면 흰 종이")]
[SerializeField] private Texture _sourceTexture;
[SerializeField] private int _textureSize = 1024;
[Header("서명란 판정")]
[Tooltip("서명으로 인정할 UV 영역 (좌하단 0,0 ~ 우상단 1,1)")]
[SerializeField] private Rect _signatureZone = new Rect(0.55f, 0.05f, 0.4f, 0.2f);
[Tooltip("서명란 안에 스탬프가 이만큼 찍히면 서명 완료로 판정")]
[SerializeField] private int _requiredStamps = 80;
[Tooltip("서명이 완료되는 순간 1회 호출 (계약 진행 이벤트 연결용)")]
public UnityEvent OnSigned;
public bool IsSigned { get; private set; }
private RenderTexture _rt;
private int _zoneStamps;
private static Texture2D s_softBrush; // 절차 생성 소프트 원 브러시 (전 종이 공유)
private void Awake()
{
if (_renderer == null) _renderer = GetComponent<Renderer>();
_rt = new RenderTexture(_textureSize, _textureSize, 0, RenderTextureFormat.ARGB32);
_rt.Create();
// 원본 텍스처로 초기화 (없으면 흰 종이)
var src = _sourceTexture != null ? _sourceTexture : _renderer.material.GetTexture(_texturePropertyName);
if (src != null)
{
Graphics.Blit(src, _rt);
}
else
{
var prev = RenderTexture.active;
RenderTexture.active = _rt;
GL.Clear(false, true, Color.white);
RenderTexture.active = prev;
}
_renderer.material.SetTexture(_texturePropertyName, _rt);
}
private void OnDestroy()
{
if (_rt != null)
{
_rt.Release();
Destroy(_rt);
}
}
// 두 UV 사이를 브러시 간격으로 보간해서 연속된 선으로 찍는다 (프레임 사이 점선 방지)
public void DrawStroke(Vector2 fromUv, Vector2 toUv, Color ink, float brushSize)
{
float dist = Vector2.Distance(fromUv, toUv);
int steps = Mathf.Max(1, Mathf.CeilToInt(dist / Mathf.Max(brushSize * 0.25f, 0.0005f)));
for (int i = 1; i <= steps; i++)
StampAt(Vector2.Lerp(fromUv, toUv, (float)i / steps), ink, brushSize);
}
// UV 위치에 브러시 한 번 찍기. brushSize는 종이 가로 대비 지름 비율 (0.02 = 2%)
public void StampAt(Vector2 uv, Color ink, float brushSize)
{
if (_rt == null) return;
var prev = RenderTexture.active;
RenderTexture.active = _rt;
GL.PushMatrix();
GL.LoadPixelMatrix(0, _rt.width, _rt.height, 0); // 좌상단 원점 픽셀 좌표계
float d = brushSize * _rt.width; // 지름(픽셀)
float px = uv.x * _rt.width - d * 0.5f;
float py = (1f - uv.y) * _rt.height - d * 0.5f; // DrawTexture는 y가 위→아래
// DrawTexture의 색 변조는 0.5가 중립(×2 곱)이라 절반으로 넘긴다
Graphics.DrawTexture(new Rect(px, py, d, d), GetBrush(), new Rect(0, 0, 1, 1), 0, 0, 0, 0, ink * 0.5f);
GL.PopMatrix();
RenderTexture.active = prev;
// 서명란 판정
if (!IsSigned && _signatureZone.Contains(uv))
{
_zoneStamps++;
if (_zoneStamps >= _requiredStamps)
{
IsSigned = true;
OnSigned?.Invoke();
}
}
}
// 가장자리로 갈수록 투명해지는 원형 브러시를 한 번만 생성
private static Texture2D GetBrush()
{
if (s_softBrush != null) return s_softBrush;
const int size = 64;
s_softBrush = new Texture2D(size, size, TextureFormat.RGBA32, false);
s_softBrush.hideFlags = HideFlags.HideAndDontSave;
var pixels = new Color32[size * size];
float half = size * 0.5f;
for (int y = 0; y < size; y++)
{
for (int x = 0; x < size; x++)
{
float r = Vector2.Distance(new Vector2(x + 0.5f, y + 0.5f), new Vector2(half, half)) / half;
// 중심은 진하게, 70% 지점부터 부드럽게 빠지는 잉크 느낌
float a = Mathf.Clamp01(1f - Mathf.InverseLerp(0.7f, 1f, r));
pixels[y * size + x] = new Color32(255, 255, 255, (byte)(a * 255f));
}
}
s_softBrush.SetPixels32(pixels);
s_softBrush.Apply();
return s_softBrush;
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: c7cc7a36389579e4eb095cb50751ced7

View File

@@ -0,0 +1,49 @@
using UnityEngine;
// 펜촉. 이 오브젝트의 +Z(파란 축)가 펜촉이 가리키는 방향이 되도록
// 펜 프리팹의 촉 끝에 빈 오브젝트로 배치할 것.
// 촉이 DrawablePaper에 닿아 있는 동안 매 프레임 잉크를 찍는다.
// 펜 자체는 XRGrabInteractable로 잡는다 — 이 스크립트는 잡혔는지 여부와 무관하게
// 접촉만 검사하므로, 잡지 않은 펜이 종이에 꽂혀 있으면 그때도 그려진다는 점만 유의.
public class PenTip : MonoBehaviour
{
[Header("Ink")]
[SerializeField] private Color _inkColor = new Color(0.08f, 0.08f, 0.1f, 1f); // 순검정보다 자연스러운 잉크색
[Tooltip("선 굵기 — 종이 가로 대비 지름 비율 (0.015 = 1.5%)")]
[SerializeField, Range(0.003f, 0.1f)] private float _brushSize = 0.015f;
[Header("Contact")]
[Tooltip("펜촉 끝에서 이 거리 안에 종이가 있으면 접촉으로 판정")]
[SerializeField] private float _contactDistance = 0.01f;
[SerializeField] private LayerMask _paperMask = ~0;
// 펜촉이 종이를 살짝 뚫고 들어가도 인식되도록 촉 뒤쪽에서부터 레이를 쏜다
private const float CastBack = 0.03f;
private DrawablePaper _currentPaper;
private Vector2 _lastUv;
private void Update()
{
Vector3 origin = transform.position - transform.forward * CastBack;
if (Physics.Raycast(origin, transform.forward, out var hit, CastBack + _contactDistance, _paperMask, QueryTriggerInteraction.Ignore))
{
var paper = hit.collider.GetComponentInParent<DrawablePaper>();
if (paper != null)
{
Vector2 uv = hit.textureCoord; // MeshCollider 필수
if (paper == _currentPaper)
paper.DrawStroke(_lastUv, uv, _inkColor, _brushSize); // 이어 그리기
else
paper.StampAt(uv, _inkColor, _brushSize); // 새 접촉 — 점 하나
_currentPaper = paper;
_lastUv = uv;
return;
}
}
_currentPaper = null; // 접촉 끊김 — 다음에 닿으면 새 선 시작
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 993c2a069a0c98144be2ba85ef774def

View File

@@ -0,0 +1,150 @@
// 양면 종이 셰이더 (URP)
// - 양면 렌더링: 얇은 종이 메시(Quad/Plane)의 앞뒤가 모두 보인다
// - _BaseColor: 앞뒤 공통 종이 색
// - _FrontTex: 앞면(메시의 노멀 방향 면)에만 표시되는 텍스처(인쇄물). 비우면 앞면도 종이 색 그대로
// - 하프-램버트 + 앰비언트 조명이라 그늘에서도 새까매지지 않음. 그림자 드리우기 포함
Shader "DinoLove/Paper"
{
Properties
{
_BaseColor ("Base Color (양면 종이 색)", Color) = (1, 1, 1, 1)
_FrontTex ("Front Texture (앞면 인쇄물)", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType" = "Opaque" "Queue" = "Geometry" "RenderPipeline" = "UniversalPipeline" }
// 종이는 얇아서 뒷면도 그린다
Cull Off
Pass
{
Name "ForwardLit"
Tags { "LightMode" = "UniversalForward" }
HLSLPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_instancing
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
struct Attributes
{
float4 positionOS : POSITION;
float3 normalOS : NORMAL;
float2 uv : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct Varyings
{
float4 positionCS : SV_POSITION;
float2 uv : TEXCOORD0;
float3 normalWS : TEXCOORD1;
UNITY_VERTEX_INPUT_INSTANCE_ID
UNITY_VERTEX_OUTPUT_STEREO
};
TEXTURE2D(_FrontTex);
SAMPLER(sampler_FrontTex);
CBUFFER_START(UnityPerMaterial)
float4 _BaseColor;
float4 _FrontTex_ST;
CBUFFER_END
Varyings vert(Attributes input)
{
Varyings output;
UNITY_SETUP_INSTANCE_ID(input);
UNITY_TRANSFER_INSTANCE_ID(input, output);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
output.positionCS = TransformObjectToHClip(input.positionOS.xyz);
output.normalWS = TransformObjectToWorldNormal(input.normalOS);
output.uv = TRANSFORM_TEX(input.uv, _FrontTex);
return output;
}
half4 frag(Varyings input, bool isFrontFace : SV_IsFrontFace) : SV_Target
{
UNITY_SETUP_INSTANCE_ID(input);
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input);
// 양면 공통 종이 색. 앞면에만 텍스처를 곱한다 (기본 white 텍스처 = 종이 색 그대로)
half3 albedo = _BaseColor.rgb;
if (isFrontFace)
albedo *= SAMPLE_TEXTURE2D(_FrontTex, sampler_FrontTex, input.uv).rgb;
// 뒷면은 노멀을 뒤집어서 조명 계산
float3 normalWS = normalize(input.normalWS);
if (!isFrontFace)
normalWS = -normalWS;
// 하프-램버트 + 앰비언트 — 부드러운 종이 음영
Light mainLight = GetMainLight();
half ndl = saturate(dot(normalWS, mainLight.direction)) * 0.5h + 0.5h;
half3 lighting = mainLight.color * ndl + SampleSH(normalWS);
return half4(albedo * lighting, 1);
}
ENDHLSL
}
// 그림자 드리우기 (없으면 종이가 공중에 뜬 것처럼 보임)
Pass
{
Name "ShadowCaster"
Tags { "LightMode" = "ShadowCaster" }
ZWrite On
ZTest LEqual
ColorMask 0
Cull Off
HLSLPROGRAM
#pragma vertex shadowVert
#pragma fragment shadowFrag
#pragma multi_compile_instancing
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl"
float3 _LightDirection;
struct ShadowAttributes
{
float4 positionOS : POSITION;
float3 normalOS : NORMAL;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
float4 shadowVert(ShadowAttributes input) : SV_POSITION
{
UNITY_SETUP_INSTANCE_ID(input);
float3 positionWS = TransformObjectToWorld(input.positionOS.xyz);
float3 normalWS = TransformObjectToWorldNormal(input.normalOS);
float4 positionCS = TransformWorldToHClip(ApplyShadowBias(positionWS, normalWS, _LightDirection));
#if UNITY_REVERSED_Z
positionCS.z = min(positionCS.z, UNITY_NEAR_CLIP_VALUE);
#else
positionCS.z = max(positionCS.z, UNITY_NEAR_CLIP_VALUE);
#endif
return positionCS;
}
half4 shadowFrag() : SV_Target
{
return 0;
}
ENDHLSL
}
}
FallBack "Hidden/Universal Render Pipeline/FallbackError"
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 067a744b9ffb83e4a86f0b424abda8c7
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8dcc704f60b9b5d4791e69e40b424fbb
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 739c1dfd1134fe54d96bd36005fccdd4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,114 @@
fileFormatVersion: 2
guid: d16b233e2070410408aaf100f3a7276c
ModelImporter:
serializedVersion: 24501
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
searchTexturesGlobally: 0
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
generateMeshLods: 0
meshLodGenerationFlags: 0
maximumMeshLod: -1
importUVs: -1
importVertexColors: 1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
calculateBlendshapeNormalsDeltaFromImportedNormals: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 0.01
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a0052d729dacdb64b8de03841c8ebcf8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -1,6 +1,6 @@
fileFormatVersion: 2
guid: ac15318d4be618148ba098bbb27aea1b
TextScriptImporter:
guid: 34fa0ae9656b95645be42e3547ce9ac4
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:

View File

@@ -0,0 +1,140 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Contract_Mat
m_Shader: {fileID: 4800000, guid: 067a744b9ffb83e4a86f0b424abda8c7, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 1
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses:
- MOTIONVECTORS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _FrontTex:
m_Texture: {fileID: 2800000, guid: b51626c80cf95c24b828b126e3a764e7, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_Lightmaps:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_LightmapsInd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_ShadowMasks:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AddPrecomputedVelocity: 0
- _AlphaClip: 0
- _AlphaToMask: 0
- _Blend: 0
- _BlendModePreserveSpecular: 1
- _BumpScale: 1
- _ClearCoatMask: 0
- _ClearCoatSmoothness: 0
- _Cull: 0
- _Cutoff: 0.5
- _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _DstBlendAlpha: 0
- _EnvironmentReflections: 1
- _GlossMapScale: 0
- _Glossiness: 0
- _GlossyReflections: 0
- _Metallic: 0
- _OcclusionStrength: 1
- _Parallax: 0.005
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Smoothness: 0.5
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlendAlpha: 1
- _Surface: 0
- _WorkflowMode: 1
- _XRMotionVectorsPass: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 0.8705883, g: 0.74509805, b: 0.5803922, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!114 &4000255443213346264
MonoBehaviour:
m_ObjectHideFlags: 11
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: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
version: 10

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e1b9326fe8b8f5d47b071f7aa4da6cff
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1 +0,0 @@
dumy

View File

@@ -39,6 +39,8 @@ MonoBehaviour:
- rid: 4848514453388656721
- rid: 4848514453388656887
- rid: 4848514455607443556
- rid: 4848514455607443611
- rid: 4848514455607443629
m_GraphWireModels:
- rid: 4848514365209968937
- rid: 4848514453388656662
@@ -48,6 +50,8 @@ MonoBehaviour:
- rid: 4848514453388656722
- rid: 4848514453388656888
- rid: 4848514455607443557
- rid: 4848514455607443612
- rid: 4848514455607443630
m_GraphStickyNoteModels: []
m_GraphPlacematModels: []
m_GraphVariableModels: []
@@ -59,7 +63,7 @@ MonoBehaviour:
serializedVersion: 2
x: -86
y: -167
width: 3925
width: 4957
height: 1033
m_GraphElementMetaData:
- m_Guid:
@@ -198,6 +202,38 @@ MonoBehaviour:
Hash: b9b1d00dbe78fadd4fa064b85813444e
m_Category: 2
m_Index: 7
- m_Guid:
m_Value0: 17818172826285627763
m_Value1: 7344867939228010407
m_HashGuid:
serializedVersion: 2
Hash: 73d945e1c7dd46f7a747d7d77936ee65
m_Category: 0
m_Index: 9
- m_Guid:
m_Value0: 10294541058832137484
m_Value1: 14922314455673619913
m_HashGuid:
serializedVersion: 2
Hash: 0cfd5cd98c8edd8ec9451a85efb516cf
m_Category: 2
m_Index: 8
- m_Guid:
m_Value0: 14525302016713931917
m_Value1: 5829910233067166960
m_HashGuid:
serializedVersion: 2
Hash: 8dbc7fd1393d94c9f01c62027800e850
m_Category: 0
m_Index: 10
- m_Guid:
m_Value0: 16718874648012842409
m_Value1: 4625247327270290259
m_HashGuid:
serializedVersion: 2
Hash: a9e51677e95f05e853434544f02d3040
m_Category: 2
m_Index: 9
m_EntryPoint:
rid: 4848514365209968921
m_Graph:
@@ -1540,3 +1576,327 @@ MonoBehaviour:
- rid: 4848514455607443573
type: {class: DialogLineNode, ns: DinoLove.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data:
- rid: 4848514455607443611
type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: UnityEditor.GraphToolkitModule}
data:
m_Guid:
m_Value0: 17818172826285627763
m_Value1: 7344867939228010407
m_HashGuid:
serializedVersion: 2
Hash: 73d945e1c7dd46f7a747d7d77936ee65
m_Version: 2
m_Position: {x: 3935.5474, y: -167.15128}
m_Title:
m_Tooltip:
m_NodePreviewModel:
rid: -2
m_State: 0
m_InputConstantsById:
m_KeyList:
- __option_ChoiceCount
- __option_EventKey
- Speaker
- SpeakerNameOverride
- HudAnchor
- TalkText
- Gesture
- Expression
- Voice
- Bgm
- Vfx
- LineDuration
- LookAtPlayer
- ForcePlayerLook
- WaitForInput
m_ValueList:
- rid: 4848514455607443613
- rid: 4848514455607443614
- rid: 4848514455607443615
- rid: 4848514455607443616
- rid: 4848514455607443617
- rid: 4848514455607443618
- rid: 4848514455607443619
- rid: 4848514455607443620
- rid: 4848514455607443621
- rid: 4848514455607443622
- rid: 4848514455607443623
- rid: 4848514455607443624
- rid: 4848514455607443625
- rid: 4848514455607443626
- rid: 4848514455607443627
m_InputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_OutputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_Collapsed: 0
m_CurrentModeIndex: 0
m_ElementColor:
m_Color: {r: 0, g: 0, b: 0, a: 0}
m_HasUserColor: 0
m_Node:
rid: 4848514455607443628
- rid: 4848514455607443612
type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Guid:
m_Value0: 10294541058832137484
m_Value1: 14922314455673619913
m_HashGuid:
serializedVersion: 2
Hash: 0cfd5cd98c8edd8ec9451a85efb516cf
m_Version: 2
m_FromPortReference:
m_NodeModelGuid:
m_Value0: 5097829971250873260
m_Value1: 15804760356810122577
m_NodeModelHashGuid:
serializedVersion: 2
Hash: ac83bf715921bf4651e5d7abcec955db
m_UniqueId: Out
m_PortDirection: 2
m_PortOrientation: 0
m_Title:
m_ToPortReference:
m_NodeModelGuid:
m_Value0: 17818172826285627763
m_Value1: 7344867939228010407
m_NodeModelHashGuid:
serializedVersion: 2
Hash: 73d945e1c7dd46f7a747d7d77936ee65
m_UniqueId: In
m_PortDirection: 1
m_PortOrientation: 0
m_Title:
- rid: 4848514455607443613
type: {class: 'Constant`1[[System.Int32, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: 0
- rid: 4848514455607443614
type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value:
- rid: 4848514455607443615
type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: {fileID: 11400000, guid: b7c3c52c4e4e9fc49bf084eae180835b, type: 2}
- rid: 4848514455607443616
type: {class: 'Constant`1[[DinoLove.Dialog.GraphTool.Editor.DialogShortText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value:
Value:
- rid: 4848514455607443617
type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: {fileID: 11400000, guid: b7c3c52c4e4e9fc49bf084eae180835b, type: 2}
- rid: 4848514455607443618
type: {class: 'Constant`1[[DinoLove.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value:
Value: "\uC544, \uC774\uC790\uC2DD\uC740 \uB610 \uC5B8\uC81C \uC628\uAC70\uC57C."
- rid: 4848514455607443619
type: {class: 'Constant`1[[GestureData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: {fileID: 0}
- rid: 4848514455607443620
type: {class: 'Constant`1[[ExpressionData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: {fileID: 0}
- rid: 4848514455607443621
type: {class: 'Constant`1[[VoiceClip, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: {fileID: 0}
- rid: 4848514455607443622
type: {class: 'Constant`1[[UnityEngine.AudioClip, UnityEngine.AudioModule]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: {fileID: 0}
- rid: 4848514455607443623
type: {class: 'Constant`1[[UnityEngine.GameObject, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: {fileID: 0}
- rid: 4848514455607443624
type: {class: 'Constant`1[[System.Single, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: 3
- rid: 4848514455607443625
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: 1
- rid: 4848514455607443626
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: 1
- rid: 4848514455607443627
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: 0
- rid: 4848514455607443628
type: {class: DialogLineNode, ns: DinoLove.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data:
- rid: 4848514455607443629
type: {class: UserNodeModelImp, ns: Unity.GraphToolkit.Editor.Implementation, asm: UnityEditor.GraphToolkitModule}
data:
m_Guid:
m_Value0: 14525302016713931917
m_Value1: 5829910233067166960
m_HashGuid:
serializedVersion: 2
Hash: 8dbc7fd1393d94c9f01c62027800e850
m_Version: 2
m_Position: {x: 4460.1475, y: -149.13562}
m_Title:
m_Tooltip:
m_NodePreviewModel:
rid: -2
m_State: 0
m_InputConstantsById:
m_KeyList:
- __option_ChoiceCount
- __option_EventKey
- Speaker
- SpeakerNameOverride
- HudAnchor
- TalkText
- Gesture
- Expression
- Voice
- Bgm
- Vfx
- LineDuration
- LookAtPlayer
- ForcePlayerLook
- WaitForInput
m_ValueList:
- rid: 4848514455607443631
- rid: 4848514455607443632
- rid: 4848514455607443633
- rid: 4848514455607443634
- rid: 4848514455607443635
- rid: 4848514455607443636
- rid: 4848514455607443637
- rid: 4848514455607443638
- rid: 4848514455607443639
- rid: 4848514455607443640
- rid: 4848514455607443641
- rid: 4848514455607443642
- rid: 4848514455607443643
- rid: 4848514455607443644
- rid: 4848514455607443645
m_InputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_OutputPortInfos:
expandedPortsById:
m_KeyList: []
m_ValueList:
m_Collapsed: 0
m_CurrentModeIndex: 0
m_ElementColor:
m_Color: {r: 0, g: 0, b: 0, a: 0}
m_HasUserColor: 0
m_Node:
rid: 4848514455607443646
- rid: 4848514455607443630
type: {class: WireModel, ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Guid:
m_Value0: 16718874648012842409
m_Value1: 4625247327270290259
m_HashGuid:
serializedVersion: 2
Hash: a9e51677e95f05e853434544f02d3040
m_Version: 2
m_FromPortReference:
m_NodeModelGuid:
m_Value0: 17818172826285627763
m_Value1: 7344867939228010407
m_NodeModelHashGuid:
serializedVersion: 2
Hash: 73d945e1c7dd46f7a747d7d77936ee65
m_UniqueId: Out
m_PortDirection: 2
m_PortOrientation: 0
m_Title:
m_ToPortReference:
m_NodeModelGuid:
m_Value0: 14525302016713931917
m_Value1: 5829910233067166960
m_NodeModelHashGuid:
serializedVersion: 2
Hash: 8dbc7fd1393d94c9f01c62027800e850
m_UniqueId: In
m_PortDirection: 1
m_PortOrientation: 0
m_Title:
- rid: 4848514455607443631
type: {class: 'Constant`1[[System.Int32, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: 0
- rid: 4848514455607443632
type: {class: 'Constant`1[[System.String, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value:
- rid: 4848514455607443633
type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: {fileID: 11400000, guid: b7c3c52c4e4e9fc49bf084eae180835b, type: 2}
- rid: 4848514455607443634
type: {class: 'Constant`1[[DinoLove.Dialog.GraphTool.Editor.DialogShortText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value:
Value:
- rid: 4848514455607443635
type: {class: 'Constant`1[[CharacterData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: {fileID: 11400000, guid: b7c3c52c4e4e9fc49bf084eae180835b, type: 2}
- rid: 4848514455607443636
type: {class: 'Constant`1[[DinoLove.Dialog.GraphTool.Editor.DialogText, Assembly-CSharp-Editor]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value:
Value: "\uC54C\uC558\uC5B4 \uC54C\uC558\uC5B4. \uACC4\uC57D\uC11C\uB294
\uC7A5\uB09C\uC774\uACE0, \uB300\uC2E0 \uCD95\uC81C\uB294 \uB3C4\uC640\uC918\uC57C
\uD55C\uB2E4?"
- rid: 4848514455607443637
type: {class: 'Constant`1[[GestureData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: {fileID: 0}
- rid: 4848514455607443638
type: {class: 'Constant`1[[ExpressionData, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: {fileID: 0}
- rid: 4848514455607443639
type: {class: 'Constant`1[[VoiceClip, Assembly-CSharp]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: {fileID: 0}
- rid: 4848514455607443640
type: {class: 'Constant`1[[UnityEngine.AudioClip, UnityEngine.AudioModule]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: {fileID: 0}
- rid: 4848514455607443641
type: {class: 'Constant`1[[UnityEngine.GameObject, UnityEngine.CoreModule]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: {fileID: 0}
- rid: 4848514455607443642
type: {class: 'Constant`1[[System.Single, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: 5
- rid: 4848514455607443643
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: 0
- rid: 4848514455607443644
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: 0
- rid: 4848514455607443645
type: {class: 'Constant`1[[System.Boolean, mscorlib]]', ns: Unity.GraphToolkit.Editor, asm: UnityEditor.GraphToolkitModule}
data:
m_Value: 0
- rid: 4848514455607443646
type: {class: DialogLineNode, ns: DinoLove.Dialog.GraphTool.Editor, asm: Assembly-CSharp-Editor}
data: