chore: 重构DOTween插件路径并更新相关代码
1. 将DOTween从原Plugins/DOTween迁移到Plugins/Demigiant/DOTween 2. 更新版本号解析逻辑,适配设备端压缩编码格式 3. 新增UI动画组件UIAnimator及其编辑器脚本 4. 优化主页设备列表项滑动菜单功能 5. 移除无用的VSCode编辑器包配置 6. 更新多语言文案修正末尾标点 7. 调整主页锁定超时配置为可配置项
343
Assets/Editor/UIAnimatorInspector.cs
Normal file
@ -0,0 +1,343 @@
|
||||
using DG.Tweening;
|
||||
using UnityEditor;
|
||||
using UnityEditorInternal;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// UIAnimator 可视化编辑Inspector:
|
||||
/// - ReorderableList 编排动画步骤(增删/拖拽排序)
|
||||
/// - 各步骤字段按类型动态显示
|
||||
/// - 播放/反向/停止/重置 预览(编辑器内即时查看效果,不进入播放模式)
|
||||
/// </summary>
|
||||
[CustomEditor(typeof(UIAnimator))]
|
||||
public class UIAnimatorInspector : Editor
|
||||
{
|
||||
private ReorderableList stepList;
|
||||
private SerializedProperty stepsProp;
|
||||
|
||||
// 预览状态
|
||||
private bool previewing;
|
||||
private bool previewForward = true;
|
||||
private float previewElapsed;
|
||||
private float previewTotal;
|
||||
private double lastPreviewTime;
|
||||
|
||||
private const float RowHeight = 18f;
|
||||
private const float RowGap = 2f;
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
stepsProp = serializedObject.FindProperty("steps");
|
||||
stepList = new ReorderableList(serializedObject, stepsProp, true, true, true, true)
|
||||
{
|
||||
drawHeaderCallback = rect => EditorGUI.LabelField(rect, "动画步骤"),
|
||||
drawElementCallback = DrawStepElement,
|
||||
elementHeightCallback = index => RowHeight * 3 + RowGap * 4,
|
||||
onAddCallback = OnAddStep
|
||||
};
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
StopPreview();
|
||||
EditorApplication.update -= OnPreviewUpdate;
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
serializedObject.Update();
|
||||
|
||||
EditorGUILayout.PropertyField(serializedObject.FindProperty("playOnAwake"));
|
||||
EditorGUILayout.PropertyField(serializedObject.FindProperty("autoAddCanvasGroup"));
|
||||
|
||||
// 总时长提示
|
||||
EditorGUILayout.HelpBox($"动画总时长: {((UIAnimator)target).TotalDuration:F2}s", MessageType.None);
|
||||
|
||||
stepList.DoLayoutList();
|
||||
|
||||
EditorGUILayout.Space();
|
||||
DrawPreviewButtons();
|
||||
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
|
||||
// ---------- 步骤绘制 ----------
|
||||
|
||||
private void DrawStepElement(Rect rect, int index, bool isActive, bool isFocused)
|
||||
{
|
||||
SerializedProperty prop = stepsProp.GetArrayElementAtIndex(index);
|
||||
SerializedProperty typeProp = prop.FindPropertyRelative("type");
|
||||
UIAnimator.UIAnimationType type = (UIAnimator.UIAnimationType)typeProp.enumValueIndex;
|
||||
|
||||
rect.y += RowGap;
|
||||
float y = rect.y;
|
||||
|
||||
// 第1行:类型
|
||||
typeProp.enumValueIndex = (int)(UIAnimator.UIAnimationType)EditorGUI.EnumPopup(
|
||||
new Rect(rect.x, y, rect.width, RowHeight), GUIContent.none, type);
|
||||
y += RowHeight + RowGap;
|
||||
|
||||
// 第2行:延迟 + 时长
|
||||
float half = (rect.width - 6) * 0.5f;
|
||||
EditorGUIUtility.labelWidth = 38f;
|
||||
EditorGUI.PropertyField(new Rect(rect.x, y, half, RowHeight), prop.FindPropertyRelative("delay"));
|
||||
EditorGUI.PropertyField(new Rect(rect.x + half + 6, y, half, RowHeight), prop.FindPropertyRelative("duration"));
|
||||
EditorGUIUtility.labelWidth = 0f;
|
||||
y += RowHeight + RowGap;
|
||||
|
||||
// 第3行:缓动 + 类型专属字段
|
||||
float easeW = half;
|
||||
EditorGUI.LabelField(new Rect(rect.x, y, easeW, RowHeight), "缓动");
|
||||
SerializedProperty easeProp = prop.FindPropertyRelative("ease");
|
||||
easeProp.enumValueIndex = (int)(Ease)EditorGUI.EnumPopup(
|
||||
new Rect(rect.x + 34f, y, easeW - 34f, RowHeight), GUIContent.none, (Ease)easeProp.enumValueIndex);
|
||||
|
||||
Rect valueRect = new Rect(rect.x + half + 6, y, half, RowHeight);
|
||||
EditorGUIUtility.labelWidth = 42f;
|
||||
switch (type)
|
||||
{
|
||||
case UIAnimator.UIAnimationType.Move:
|
||||
EditorGUI.PropertyField(valueRect, prop.FindPropertyRelative("moveOffset"));
|
||||
break;
|
||||
case UIAnimator.UIAnimationType.Scale:
|
||||
EditorGUI.PropertyField(valueRect, prop.FindPropertyRelative("targetScale"));
|
||||
break;
|
||||
case UIAnimator.UIAnimationType.Rotate:
|
||||
EditorGUI.PropertyField(valueRect, prop.FindPropertyRelative("targetRotation"));
|
||||
break;
|
||||
case UIAnimator.UIAnimationType.Alpha:
|
||||
EditorGUI.PropertyField(valueRect, prop.FindPropertyRelative("targetAlpha"));
|
||||
break;
|
||||
}
|
||||
EditorGUIUtility.labelWidth = 0f;
|
||||
}
|
||||
|
||||
private void OnAddStep(ReorderableList list)
|
||||
{
|
||||
stepsProp.arraySize++;
|
||||
SerializedProperty newElem = stepsProp.GetArrayElementAtIndex(stepsProp.arraySize - 1);
|
||||
// 给新步骤赋默认值
|
||||
newElem.FindPropertyRelative("type").enumValueIndex = 0;
|
||||
newElem.FindPropertyRelative("delay").floatValue = 0f;
|
||||
newElem.FindPropertyRelative("duration").floatValue = 0.5f;
|
||||
newElem.FindPropertyRelative("ease").enumValueIndex = (int)Ease.OutQuad;
|
||||
newElem.FindPropertyRelative("moveOffset").vector3Value = Vector3.zero;
|
||||
newElem.FindPropertyRelative("targetScale").vector3Value = Vector3.one;
|
||||
newElem.FindPropertyRelative("targetRotation").floatValue = 0f;
|
||||
newElem.FindPropertyRelative("targetAlpha").floatValue = 1f;
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
}
|
||||
|
||||
// ---------- 预览按钮 ----------
|
||||
|
||||
private void DrawPreviewButtons()
|
||||
{
|
||||
UIAnimator animator = (UIAnimator)target;
|
||||
if (animator.steps == null || animator.steps.Count == 0)
|
||||
{
|
||||
EditorGUILayout.HelpBox("请先添加动画步骤", MessageType.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
if (GUILayout.Button("▶ 播放", GUILayout.Height(26)))
|
||||
StartPreview(animator, true);
|
||||
if (GUILayout.Button("◀ 反向", GUILayout.Height(26)))
|
||||
StartPreview(animator, false);
|
||||
if (GUILayout.Button("■ 停止", GUILayout.Height(26)))
|
||||
StopPreview();
|
||||
if (GUILayout.Button("⟲ 重置", GUILayout.Height(26)))
|
||||
ResetToInitial(animator);
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
if (previewing)
|
||||
EditorGUILayout.HelpBox("预览中… 停止后恢复初始状态", MessageType.Info);
|
||||
}
|
||||
|
||||
// ---------- 预览驱动 ----------
|
||||
|
||||
private void StartPreview(UIAnimator animator, bool forward)
|
||||
{
|
||||
StopPreview();
|
||||
if (animator.GetComponent<RectTransform>() == null)
|
||||
{
|
||||
EditorUtility.DisplayDialog("UIAnimator", "需要挂载在带有RectTransform的UI对象上", "确定");
|
||||
return;
|
||||
}
|
||||
|
||||
animator.SaveInitialState();
|
||||
previewForward = forward;
|
||||
previewing = true;
|
||||
previewElapsed = 0f;
|
||||
previewTotal = Mathf.Max(animator.TotalDuration, 0.001f);
|
||||
lastPreviewTime = EditorApplication.timeSinceStartup;
|
||||
|
||||
EditorApplication.update -= OnPreviewUpdate;
|
||||
EditorApplication.update += OnPreviewUpdate;
|
||||
UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
|
||||
}
|
||||
|
||||
private void StopPreview()
|
||||
{
|
||||
if (!previewing) return;
|
||||
previewing = false;
|
||||
EditorApplication.update -= OnPreviewUpdate;
|
||||
RestoreInitialState();
|
||||
UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
|
||||
}
|
||||
|
||||
private void ResetToInitial(UIAnimator animator)
|
||||
{
|
||||
StopPreview();
|
||||
animator.SaveInitialState();
|
||||
RestoreInitialState();
|
||||
}
|
||||
|
||||
private void OnPreviewUpdate()
|
||||
{
|
||||
if (!previewing) return;
|
||||
UIAnimator animator = (UIAnimator)target;
|
||||
if (animator == null) { StopPreview(); return; }
|
||||
|
||||
double now = EditorApplication.timeSinceStartup;
|
||||
previewElapsed += (float)(now - lastPreviewTime);
|
||||
lastPreviewTime = now;
|
||||
|
||||
// 每帧重算总时长,预览中修改步骤字段可即时生效
|
||||
previewTotal = Mathf.Max(animator.TotalDuration, 0.001f);
|
||||
|
||||
// 直接使用绝对时间(秒)驱动,避免归一化比例与步骤时间轴错位
|
||||
float elapsedTime = previewForward
|
||||
? Mathf.Min(previewElapsed, previewTotal)
|
||||
: Mathf.Max(previewTotal - previewElapsed, 0f);
|
||||
ApplyPreview(animator, elapsedTime);
|
||||
|
||||
if (previewElapsed >= previewTotal)
|
||||
{
|
||||
previewing = false;
|
||||
EditorApplication.update -= OnPreviewUpdate;
|
||||
}
|
||||
Repaint();
|
||||
UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 按绝对时间(秒)插值应用步骤(编辑器预览用,与运行时DOTween缓动保持一致的核心曲线)
|
||||
/// </summary>
|
||||
private void ApplyPreview(UIAnimator animator, float time)
|
||||
{
|
||||
RectTransform rt = animator.RectTransform;
|
||||
CanvasGroup cg = animator.CanvasGroup;
|
||||
|
||||
Vector3 curPos = animator.InitialAnchoredPosition3D;
|
||||
Vector3 curScale = animator.InitialLocalScale;
|
||||
float curRotZ = animator.InitialRotationZ;
|
||||
float curAlpha = animator.InitialAlpha;
|
||||
|
||||
float t = 0f;
|
||||
foreach (var step in animator.steps)
|
||||
{
|
||||
float stepStart = t + step.delay;
|
||||
float stepEnd = stepStart + step.duration;
|
||||
|
||||
if (time >= stepStart)
|
||||
{
|
||||
float local = Mathf.Clamp01((time - stepStart) / Mathf.Max(step.duration, 0.0001f));
|
||||
float e = EvaluateEase(step.ease, local);
|
||||
|
||||
// 记录本步骤起始值(=上一步结束后的值),串行执行时从该值插值到目标值,
|
||||
// 与运行时 Sequence.Append 的语义一致,避免多步骤"同时执行"
|
||||
Vector3 startPos = curPos;
|
||||
Vector3 startScale = curScale;
|
||||
float startRotZ = curRotZ;
|
||||
float startAlpha = curAlpha;
|
||||
|
||||
switch (step.type)
|
||||
{
|
||||
case UIAnimator.UIAnimationType.Move:
|
||||
curPos = startPos + step.moveOffset * e;
|
||||
break;
|
||||
case UIAnimator.UIAnimationType.Scale:
|
||||
curScale = Vector3.LerpUnclamped(startScale, step.targetScale, e);
|
||||
break;
|
||||
case UIAnimator.UIAnimationType.Rotate:
|
||||
curRotZ = Mathf.LerpUnclamped(startRotZ, step.targetRotation, e);
|
||||
break;
|
||||
case UIAnimator.UIAnimationType.Alpha:
|
||||
if (cg != null)
|
||||
curAlpha = Mathf.LerpUnclamped(startAlpha, step.targetAlpha, e);
|
||||
break;
|
||||
}
|
||||
}
|
||||
t = stepEnd;
|
||||
}
|
||||
|
||||
rt.anchoredPosition3D = curPos;
|
||||
rt.localScale = curScale;
|
||||
Vector3 rot = rt.localEulerAngles;
|
||||
rot.z = curRotZ;
|
||||
rt.localEulerAngles = rot;
|
||||
if (cg != null) cg.alpha = curAlpha;
|
||||
}
|
||||
|
||||
private void RestoreInitialState()
|
||||
{
|
||||
UIAnimator animator = (UIAnimator)target;
|
||||
if (animator == null || animator.RectTransform == null) return;
|
||||
animator.RectTransform.anchoredPosition3D = animator.InitialAnchoredPosition3D;
|
||||
animator.RectTransform.localScale = animator.InitialLocalScale;
|
||||
Vector3 rot = animator.RectTransform.localEulerAngles;
|
||||
rot.z = animator.InitialRotationZ;
|
||||
animator.RectTransform.localEulerAngles = rot;
|
||||
if (animator.CanvasGroup != null)
|
||||
animator.CanvasGroup.alpha = animator.InitialAlpha;
|
||||
}
|
||||
|
||||
// ---------- 预览缓动公式(与DOTween常用缓动一致) ----------
|
||||
|
||||
private static float EvaluateEase(Ease ease, float t)
|
||||
{
|
||||
switch (ease)
|
||||
{
|
||||
case Ease.Linear: return t;
|
||||
case Ease.InQuad: return t * t;
|
||||
case Ease.OutQuad: return t * (2f - t);
|
||||
case Ease.InOutQuad: return t < 0.5f ? 2f * t * t : -1f + (4f - 2f * t) * t;
|
||||
case Ease.InCubic: return t * t * t;
|
||||
case Ease.OutCubic: return 1f + (--t) * t * t;
|
||||
case Ease.InOutCubic: return t < 0.5f ? 4f * t * t * t : (t - 1f) * (2f * t - 2f) * (2f * t - 2f) + 1f;
|
||||
case Ease.InQuart: return t * t * t * t;
|
||||
case Ease.OutQuart: return 1f - (--t) * t * t * t;
|
||||
case Ease.InQuint: return t * t * t * t * t;
|
||||
case Ease.OutQuint: return 1f + (--t) * t * t * t * t;
|
||||
case Ease.InSine: return 1f - Mathf.Cos(t * Mathf.PI * 0.5f);
|
||||
case Ease.OutSine: return Mathf.Sin(t * Mathf.PI * 0.5f);
|
||||
case Ease.InOutSine: return -0.5f * (Mathf.Cos(Mathf.PI * t) - 1f);
|
||||
case Ease.InBack: { float c1 = 1.70158f, c3 = c1 + 1f; return c3 * t * t * t - c1 * t * t; }
|
||||
case Ease.OutBack: { float c1 = 1.70158f, c3 = c1 + 1f; t -= 1f; return 1f + c3 * t * t * t + c1 * t * t; }
|
||||
case Ease.InOutBack:
|
||||
{
|
||||
float c1 = 1.70158f, c2 = c1 * 1.525f;
|
||||
return t < 0.5f
|
||||
? (2f * t) * (2f * t) * ((c2 + 1f) * 2f * t - c2) / 2f
|
||||
: ((2f * t - 2f) * (2f * t - 2f) * ((c2 + 1f) * (t * 2f - 2f) + c2) + 2f) / 2f;
|
||||
}
|
||||
case Ease.OutElastic:
|
||||
{
|
||||
float c4 = (2f * Mathf.PI) / 3f;
|
||||
if (t == 0f) return 0f;
|
||||
if (t == 1f) return 1f;
|
||||
return Mathf.Pow(2f, -10f * t) * Mathf.Sin((t * 10f - 0.75f) * c4) + 1f;
|
||||
}
|
||||
case Ease.OutBounce:
|
||||
{
|
||||
const float n1 = 7.5625f, d1 = 2.75f;
|
||||
if (t < 1f / d1) return n1 * t * t;
|
||||
if (t < 2f / d1) { t -= 1.5f / d1; return n1 * t * t + 0.75f; }
|
||||
if (t < 2.5f / d1) { t -= 2.25f / d1; return n1 * t * t + 0.9375f; }
|
||||
t -= 2.625f / d1; return n1 * t * t + 0.984375f;
|
||||
}
|
||||
default: return t;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 330f9ca32b7fd08488ef8131b8159b0a
|
||||
guid: 926e9d8451272b6418789132ab7fdb87
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
@ -1,33 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 01772e6d1817daf4499f5d90eae2d3fe
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
- first:
|
||||
Windows Store Apps: WindowsStoreApps
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,33 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 99f7651fa6f4bee48ac57745621888ed
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 1
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
- first:
|
||||
Windows Store Apps: WindowsStoreApps
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,88 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ca20e26c85e59724387b5846850e34fa
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
externalObjects: {}
|
||||
serializedVersion: 9
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -100
|
||||
wrapU: -1
|
||||
wrapV: -1
|
||||
wrapW: -1
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 2
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,88 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1da37d90e634d3c4cb7da1c3add7ece5
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
externalObjects: {}
|
||||
serializedVersion: 9
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: -100
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 2
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 256
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,88 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e2d7280584521e84a9c21bd7e28f4a0c
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
externalObjects: {}
|
||||
serializedVersion: 9
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -100
|
||||
wrapU: -1
|
||||
wrapV: -1
|
||||
wrapW: -1
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 2
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5d75b605a42b10041b2b1c05dcf0be0b
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 51f2d543848052d458bfe6630373d950
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3987a0ed4d25f954cb5743519a44d1c5
|
||||
guid: 25027f2ec7ec6ec4aa0f9c69b7c690e7
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
21
Assets/Plugins/Demigiant/DOTween.meta
Normal file
@ -0,0 +1,21 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a50bd9a009c8dfc4ebd88cc8101225a7
|
||||
labels:
|
||||
- Tween
|
||||
- Tweening
|
||||
- Animation
|
||||
- HOTween
|
||||
- Paths
|
||||
- iTween
|
||||
- DFTween
|
||||
- LeanTween
|
||||
- Ease
|
||||
- Easing
|
||||
- Shake
|
||||
- Punch
|
||||
- 2DToolkit
|
||||
- TextMeshPro
|
||||
- Text
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
@ -123,7 +123,14 @@
|
||||
</member>
|
||||
<member name="M:DG.Tweening.Core.Easing.EaseManager.Evaluate(DG.Tweening.Tween,System.Single,System.Single,System.Single,System.Single)">
|
||||
<summary>
|
||||
Returns a value between 0 and 1 (inclusive) based on the elapsed time and ease selected
|
||||
Returns a value between 0 and 1 (inclusive) based on the elapsed time and ease selected.
|
||||
Use this method if you don't care about <see cref="F:DG.Tweening.LoopType.Incremental"/>, otherwise use <see cref="M:DG.Tweening.Core.Easing.EaseManager.EvaluateUnclamped(DG.Tweening.Tween,System.Single,System.Single,System.Single,System.Single)"/>
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:DG.Tweening.Core.Easing.EaseManager.EvaluateUnclamped(DG.Tweening.Tween,System.Single,System.Single,System.Single,System.Single)">
|
||||
<summary>
|
||||
USE THIS FOR CUSTOM PLUGINS when you want to be able to use <see cref="F:DG.Tweening.LoopType.Incremental"/>.
|
||||
Returns a value that is from 0 to 1 if <see cref="T:DG.Tweening.LoopType"/> is not incremental, otherwise from 0 to (1 * completed loops)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:DG.Tweening.Core.Easing.EaseManager.Evaluate(DG.Tweening.Ease,DG.Tweening.EaseFunction,System.Single,System.Single,System.Single,System.Single)">
|
||||
@ -227,6 +234,11 @@
|
||||
Used to dispatch commands that need to be captured externally, usually by Modules
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:DG.Tweening.Core.DOTweenUtils">
|
||||
<summary>
|
||||
Various utils
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:DG.Tweening.Core.DOTweenUtils.Vector3FromAngle(System.Single,System.Single)">
|
||||
<summary>
|
||||
Returns a Vector3 with z = 0
|
||||
@ -445,6 +457,14 @@
|
||||
<summary>If TRUE draws path gizmos in Unity Editor (if the gizmos button is active).
|
||||
Deactivate this if you want to avoid gizmos overhead while in Unity Editor</summary>
|
||||
</member>
|
||||
<member name="P:DG.Tweening.DOTween.tweenersCapacity">
|
||||
<summary>Gets/sets the max Tweeners capacity (automatically increased by DOTween when necessary).
|
||||
You can also set both Tweeners and Sequences capacity via the <see cref="M:DG.Tweening.DOTween.SetTweensCapacity(System.Int32,System.Int32)"/> static method</summary>
|
||||
</member>
|
||||
<member name="P:DG.Tweening.DOTween.sequencesCapacity">
|
||||
<summary>Gets/sets the max Sequences capacity (automatically increased by DOTween when necessary).
|
||||
You can also set both Tweeners and Sequences capacity via the <see cref="M:DG.Tweening.DOTween.SetTweensCapacity(System.Int32,System.Int32)"/> static method</summary>
|
||||
</member>
|
||||
<member name="F:DG.Tweening.DOTween.debugMode">
|
||||
<summary>If TRUE activates various debug options</summary>
|
||||
</member>
|
||||
@ -1000,7 +1020,7 @@
|
||||
<summary>
|
||||
Tweens a virtual float.
|
||||
You can add regular settings to the generated tween,
|
||||
but do not use <code>SetUpdate</code> or you will overwrite the onVirtualUpdate parameter
|
||||
but do not use <code>OnUpdate</code> or you will overwrite the onVirtualUpdate parameter
|
||||
</summary>
|
||||
<param name="from">The value to start from</param>
|
||||
<param name="to">The value to tween to</param>
|
||||
@ -1011,18 +1031,29 @@
|
||||
<summary>
|
||||
Tweens a virtual int.
|
||||
You can add regular settings to the generated tween,
|
||||
but do not use <code>SetUpdate</code> or you will overwrite the onVirtualUpdate parameter
|
||||
but do not use <code>OnUpdate</code> or you will overwrite the onVirtualUpdate parameter
|
||||
</summary>
|
||||
<param name="from">The value to start from</param>
|
||||
<param name="to">The value to tween to</param>
|
||||
<param name="duration">The duration of the tween</param>
|
||||
<param name="onVirtualUpdate">A callback which must accept a parameter of type int, called at each update</param>
|
||||
</member>
|
||||
<member name="M:DG.Tweening.DOVirtual.Vector2(UnityEngine.Vector2,UnityEngine.Vector2,System.Single,DG.Tweening.TweenCallback{UnityEngine.Vector2})">
|
||||
<summary>
|
||||
Tweens a virtual Vector2.
|
||||
You can add regular settings to the generated tween,
|
||||
but do not use <code>OnUpdate</code> or you will overwrite the onVirtualUpdate parameter
|
||||
</summary>
|
||||
<param name="from">The value to start from</param>
|
||||
<param name="to">The value to tween to</param>
|
||||
<param name="duration">The duration of the tween</param>
|
||||
<param name="onVirtualUpdate">A callback which must accept a parameter of type Vector3, called at each update</param>
|
||||
</member>
|
||||
<member name="M:DG.Tweening.DOVirtual.Vector3(UnityEngine.Vector3,UnityEngine.Vector3,System.Single,DG.Tweening.TweenCallback{UnityEngine.Vector3})">
|
||||
<summary>
|
||||
Tweens a virtual Vector3.
|
||||
You can add regular settings to the generated tween,
|
||||
but do not use <code>SetUpdate</code> or you will overwrite the onVirtualUpdate parameter
|
||||
but do not use <code>OnUpdate</code> or you will overwrite the onVirtualUpdate parameter
|
||||
</summary>
|
||||
<param name="from">The value to start from</param>
|
||||
<param name="to">The value to tween to</param>
|
||||
@ -1033,7 +1064,7 @@
|
||||
<summary>
|
||||
Tweens a virtual Color.
|
||||
You can add regular settings to the generated tween,
|
||||
but do not use <code>SetUpdate</code> or you will overwrite the onVirtualUpdate parameter
|
||||
but do not use <code>OnUpdate</code> or you will overwrite the onVirtualUpdate parameter
|
||||
</summary>
|
||||
<param name="from">The value to start from</param>
|
||||
<param name="to">The value to tween to</param>
|
||||
@ -1368,6 +1399,12 @@
|
||||
<param name="withCallbacks">For Sequences only: if TRUE also internal Sequence callbacks will be fired,
|
||||
otherwise they will be ignored</param>
|
||||
</member>
|
||||
<member name="M:DG.Tweening.TweenExtensions.Done``1(``0)">
|
||||
<summary>Optional: indicates that the tween creation has ended, to be used (optionally) as the last element of tween chaining creation.<br/>
|
||||
This method won't do anything except in case of 0-duration tweens,
|
||||
where it will complete them immediately instead of waiting for the next internal update routine
|
||||
(unless they're nested in a Sequence, in which case the Sequence will still be the one in control and this method will be ignored)</summary>
|
||||
</member>
|
||||
<member name="M:DG.Tweening.TweenExtensions.Flip(DG.Tweening.Tween)">
|
||||
<summary>Flips the direction of this tween (backwards if it was going forward or viceversa)</summary>
|
||||
</member>
|
||||
@ -1525,10 +1562,23 @@
|
||||
<member name="M:DG.Tweening.TweenExtensions.IsBackwards(DG.Tweening.Tween)">
|
||||
<summary>Returns TRUE if this tween was reversed and is set to go backwards</summary>
|
||||
</member>
|
||||
<member name="M:DG.Tweening.TweenExtensions.IsLoopingOrExecutingBackwards(DG.Tweening.Tween)">
|
||||
<summary>NOTE: To check if a tween was simply set to go backwards see <see cref="M:DG.Tweening.TweenExtensions.IsBackwards(DG.Tweening.Tween)"/>.<para/>
|
||||
Returns TRUE if this tween is going backwards for any of these reasons:<para/>
|
||||
- The tween was reversed and is going backwards on a straight loop<para/>
|
||||
- The tween was reversed and is going backwards on an odd Yoyo loop<para/>
|
||||
- The tween is going forward but on an even Yoyo loop<para/>
|
||||
IMPORTANT: if used inside a tween's callback, this will return a result concerning the exact frame when it's asked,
|
||||
so for example in a callback at the end of a Yoyo loop step this method will never return FALSE
|
||||
because the frame will never end exactly there and the tween will already be going backwards when the callback is fired</summary>
|
||||
</member>
|
||||
<member name="M:DG.Tweening.TweenExtensions.IsComplete(DG.Tweening.Tween)">
|
||||
<summary>Returns TRUE if the tween is complete
|
||||
(silently fails and returns FALSE if the tween has been killed)</summary>
|
||||
</member>
|
||||
<member name="M:DG.Tweening.TweenExtensions.IsTimeScaleIndependent(DG.Tweening.Tween)">
|
||||
<summary>Returns TRUE if this tween was set to be timeScale independent via the <code>tween.SetUpdate</code> method</summary>
|
||||
</member>
|
||||
<member name="M:DG.Tweening.TweenExtensions.IsInitialized(DG.Tweening.Tween)">
|
||||
<summary>Returns TRUE if this tween has been initialized</summary>
|
||||
</member>
|
||||
@ -2655,7 +2705,7 @@
|
||||
<param name="t">The tween to prepend</param>
|
||||
</member>
|
||||
<member name="M:DG.Tweening.TweenSettingsExtensions.Join(DG.Tweening.Sequence,DG.Tweening.Tween)">
|
||||
<summary>Inserts the given tween at the same time position of the last tween, callback or intervale added to the Sequence.
|
||||
<summary>Inserts the given tween at the same time position of the last tween, callback or interval added to the Sequence.
|
||||
Note that, in case of a Join after an interval, the insertion time will be the time where the interval starts, not where it finishes.
|
||||
Has no effect if the Sequence has already started</summary>
|
||||
</member>
|
||||
@ -2686,6 +2736,12 @@
|
||||
Has no effect if the Sequence has already started</summary>
|
||||
<param name="callback">The callback to prepend</param>
|
||||
</member>
|
||||
<member name="M:DG.Tweening.TweenSettingsExtensions.JoinCallback(DG.Tweening.Sequence,DG.Tweening.TweenCallback)">
|
||||
<summary>Inserts the given callback at the same time position of the last tween, callback or interval added to the Sequence.
|
||||
Note that, in case of a Join after an interval, the insertion time will be the time where the interval starts, not where it finishes.
|
||||
Has no effect if the Sequence has already started</summary>
|
||||
/// <param name="callback">The callback to prepend</param>
|
||||
</member>
|
||||
<member name="M:DG.Tweening.TweenSettingsExtensions.InsertCallback(DG.Tweening.Sequence,System.Single,DG.Tweening.TweenCallback)">
|
||||
<summary>Inserts the given callback at the given time position in the Sequence,
|
||||
automatically adding an interval if needed.
|
||||
4
Assets/Plugins/Demigiant/DOTween/DOTween.XML.meta
Normal file
@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 34192c5e0d14aee43a0e86cc4823268a
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
BIN
Assets/Plugins/Demigiant/DOTween/DOTween.dll
Normal file
22
Assets/Plugins/Demigiant/DOTween/DOTween.dll.meta
Normal file
@ -0,0 +1,22 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a811bde74b26b53498b4f6d872b09b6d
|
||||
PluginImporter:
|
||||
serializedVersion: 1
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
isPreloaded: 0
|
||||
platformData:
|
||||
Any:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
Editor:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
WindowsStoreApps:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
5
Assets/Plugins/Demigiant/DOTween/Editor.meta
Normal file
@ -0,0 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b27f58ae5d5c33a4bb2d1f4f34bd036d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
@ -4,6 +4,31 @@
|
||||
<name>DOTweenEditor</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:DG.DOTweenEditor.EditorCompatibilityUtils">
|
||||
<summary>
|
||||
Contains compatibility methods taken from DemiEditor (for when DOTween is without it)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:DG.DOTweenEditor.EditorCompatibilityUtils.FindObjectOfType``1(System.Boolean)">
|
||||
<summary>
|
||||
Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:DG.DOTweenEditor.EditorCompatibilityUtils.FindObjectOfType(System.Type,System.Boolean)">
|
||||
<summary>
|
||||
Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:DG.DOTweenEditor.EditorCompatibilityUtils.FindObjectsOfType``1(System.Boolean)">
|
||||
<summary>
|
||||
Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:DG.DOTweenEditor.EditorCompatibilityUtils.FindObjectsOfType(System.Type,System.Boolean)">
|
||||
<summary>
|
||||
Warning: some versions of this method don't have the includeInactive parameter so it won't be taken into account
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:DG.DOTweenEditor.DOTweenEditorPreview.Start(System.Action)">
|
||||
<summary>
|
||||
Starts the update loop of tween in the editor. Has no effect during playMode.
|
||||
@ -37,6 +62,30 @@
|
||||
<member name="F:DG.DOTweenEditor.EditorVersion.MinorVersion">
|
||||
<summary>First minor version (ex: in 2018.1 it would be 1)</summary>
|
||||
</member>
|
||||
<member name="P:DG.DOTweenEditor.EditorUtils.adbPrefix">
|
||||
<summary>With final slash. "Packages/" if this is a package, "Assets/" otherwise</summary>
|
||||
</member>
|
||||
<member name="P:DG.DOTweenEditor.EditorUtils.demigiantDir">
|
||||
<summary>With final slash (system based) - might be NULL in case users are not using a parent Demigiant folder</summary>
|
||||
</member>
|
||||
<member name="P:DG.DOTweenEditor.EditorUtils.dotweenDir">
|
||||
<summary>With final slash (system based). If this is a package, represents the package's Runtime dir</summary>
|
||||
</member>
|
||||
<member name="P:DG.DOTweenEditor.EditorUtils.editorDir">
|
||||
<summary>With final slash (system based). If this is a package, represents the package's Editor dir</summary>
|
||||
</member>
|
||||
<member name="P:DG.DOTweenEditor.EditorUtils.editorADBDir">
|
||||
<summary>DOTween editor path from Assets (not included) with final slash, in AssetDatabase format (/)</summary>
|
||||
</member>
|
||||
<member name="P:DG.DOTweenEditor.EditorUtils.dotweenProEditorDir">
|
||||
<summary>With final slash (system based)</summary>
|
||||
</member>
|
||||
<member name="P:DG.DOTweenEditor.EditorUtils.dotweenModulesDir">
|
||||
<summary>With final slash (system based)</summary>
|
||||
</member>
|
||||
<member name="P:DG.DOTweenEditor.EditorUtils.dotweenTimelineDir">
|
||||
<summary>With final slash (system based)</summary>
|
||||
</member>
|
||||
<member name="M:DG.DOTweenEditor.EditorUtils.SetEditorTexture(UnityEngine.Texture2D,UnityEngine.FilterMode,System.Int32)">
|
||||
<summary>
|
||||
Checks that the given editor texture use the correct import settings,
|
||||
@ -103,8 +152,38 @@
|
||||
</member>
|
||||
<member name="T:DG.DOTweenEditor.DOTweenDefines">
|
||||
<summary>
|
||||
Not used as menu item anymore, but as a utiity function
|
||||
Not used as menu item anymore, but as a utility function
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:DG.DOTweenEditor.DOTweenDefines.RefreshDOTweenSettings(DG.Tweening.Core.DOTweenSettings)">
|
||||
<summary>Sets the modules bool values to the current defines state</summary>
|
||||
</member>
|
||||
<member name="M:DG.DOTweenEditor.DOTweenDefines.RefreshAll">
|
||||
<summary>Refreshes the enabled state of all defines</summary>
|
||||
</member>
|
||||
<member name="M:DG.DOTweenEditor.DOTweenDefines.ApplyGUIEnabledToAll">
|
||||
<summary>Applies the guiEnabled value state to each define, adding or removing them based on that</summary>
|
||||
</member>
|
||||
<member name="M:DG.DOTweenEditor.DOTweenDefines.RemoveAll">
|
||||
<summary>Removes all DOTween defines including the ones for external assets</summary>
|
||||
</member>
|
||||
<member name="M:DG.DOTweenEditor.DOTweenDefines.RemoveAllLegacy">
|
||||
<summary>Removes all legacy defines</summary>
|
||||
</member>
|
||||
<member name="M:DG.DOTweenEditor.DOTweenDefines.Def.Remove">
|
||||
<summary>Removes the define if present</summary>
|
||||
</member>
|
||||
<member name="M:DG.DOTweenEditor.DOTweenDefines.Def.Add">
|
||||
<summary>Adds the define if it's not already present</summary>
|
||||
</member>
|
||||
<member name="F:DG.DOTweenEditor.UnityEditorVersion.Version">
|
||||
<summary>Full major version + first minor version (ex: 2018.1f)</summary>
|
||||
</member>
|
||||
<member name="F:DG.DOTweenEditor.UnityEditorVersion.MajorVersion">
|
||||
<summary>Major version</summary>
|
||||
</member>
|
||||
<member name="F:DG.DOTweenEditor.UnityEditorVersion.MinorVersion">
|
||||
<summary>First minor version (ex: in 2018.1 it would be 1)</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2e2c6224d345d9249acfa6e8ef40bb2d
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
BIN
Assets/Plugins/Demigiant/DOTween/Editor/DOTweenEditor.dll
Normal file
@ -0,0 +1,22 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 45d5034162d6cf04dbe46da84fc7d074
|
||||
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:
|
||||
5
Assets/Plugins/Demigiant/DOTween/Editor/Imgs.meta
Normal file
@ -0,0 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0034ebae0c2a9344e897db1160d71b6d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
@ -0,0 +1,47 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8da095e39e9b4df488dfd436f81116d6
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: .25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -3
|
||||
maxTextureSize: 128
|
||||
textureSettings:
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: .5, y: .5}
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
sprites: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
|
Before Width: | Height: | Size: 319 B After Width: | Height: | Size: 319 B |
@ -1,9 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5fdf9c51a08593c41a2b7ace101adb0d
|
||||
guid: 61521df2e071645488ba3d05e49289ae
|
||||
timeCreated: 1602317874
|
||||
licenseType: Pro
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
externalObjects: {}
|
||||
serializedVersion: 9
|
||||
serializedVersion: 4
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
@ -11,8 +12,6 @@ TextureImporter:
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
@ -21,8 +20,6 @@ TextureImporter:
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
@ -30,13 +27,10 @@ TextureImporter:
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -100
|
||||
wrapU: -1
|
||||
wrapV: -1
|
||||
wrapW: -1
|
||||
mipBias: -1
|
||||
wrapMode: -1
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
@ -45,44 +39,30 @@ TextureImporter:
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
spritePixelsToUnits: 100
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 2
|
||||
buildTarget: DefaultTexturePlatform
|
||||
- buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
47
Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Footer.png.meta
Normal file
@ -0,0 +1,47 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7051dba417b3d53409f2918f1ea4938d
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: .25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -3
|
||||
maxTextureSize: 256
|
||||
textureSettings:
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: .5, y: .5}
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
sprites: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
@ -0,0 +1,47 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 519694efe2bb2914788b151fbd8c01f4
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
linearTexture: 0
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: .25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -1
|
||||
maxTextureSize: 1024
|
||||
textureSettings:
|
||||
filterMode: -1
|
||||
aniso: -1
|
||||
mipBias: -1
|
||||
wrapMode: -1
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: .5, y: .5}
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 0
|
||||
textureType: -1
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
sprites: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
47
Assets/Plugins/Demigiant/DOTween/Editor/Imgs/Header.jpg.meta
Normal file
@ -0,0 +1,47 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 78a59ca99f8987941adb61f9e14a06a7
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
serializedVersion: 2
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
linearTexture: 1
|
||||
correctGamma: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: .25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: -3
|
||||
maxTextureSize: 512
|
||||
textureSettings:
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: -1
|
||||
wrapMode: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: .5, y: .5}
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spritePixelsToUnits: 100
|
||||
alphaIsTransparency: 1
|
||||
textureType: 2
|
||||
buildTargetSettings: []
|
||||
spriteSheet:
|
||||
sprites: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
5
Assets/Plugins/Demigiant/DOTween/Modules.meta
Normal file
@ -0,0 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 143604b8bad857d47a6f7cc7a533e2dc
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
userData:
|
||||
@ -1,14 +1,12 @@
|
||||
// Author: Daniele Giardini - http://www.demigiant.com
|
||||
// Author: Daniele Giardini - http://www.demigiant.com
|
||||
// Created: 2018/07/13
|
||||
|
||||
#if false // MODULE_MARKER
|
||||
#if !DOTWEEN_NOAUDIO // MODULE_MARKER
|
||||
using System;
|
||||
using DG.Tweening.Core;
|
||||
using DG.Tweening.Plugins.Options;
|
||||
using UnityEngine;
|
||||
#if UNITY_5 || UNITY_2017_1_OR_NEWER
|
||||
using UnityEngine.Audio; // Required for AudioMixer
|
||||
#endif
|
||||
|
||||
#pragma warning disable 1591
|
||||
namespace DG.Tweening
|
||||
@ -43,8 +41,7 @@ namespace DG.Tweening
|
||||
|
||||
#endregion
|
||||
|
||||
#if UNITY_5 || UNITY_2017_1_OR_NEWER
|
||||
#region AudioMixer (Unity 5 or Newer)
|
||||
#region AudioMixer
|
||||
|
||||
/// <summary>Tweens an AudioMixer's exposed float to the given value.
|
||||
/// Also stores the AudioMixer as the tween's target so it can be used for filtered operations.
|
||||
@ -194,7 +191,6 @@ namespace DG.Tweening
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
#endif
|
||||
|
||||
#endregion
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b766d08851589514b97afb23c6f30a70
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
@ -1,6 +1,6 @@
|
||||
using UnityEngine;
|
||||
|
||||
#if false || EPO_DOTWEEN // MODULE_MARKER
|
||||
#if DOTWEEN_EPO || EPO_DOTWEEN // MODULE_MARKER
|
||||
|
||||
using EPOOutline;
|
||||
using DG.Tweening.Plugins.Options;
|
||||
@ -1,7 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 37abaf6d1b72358458c65c2cc8d6d241
|
||||
guid: e944529dcaee98f4e9498d80e541d93e
|
||||
timeCreated: 1602593330
|
||||
licenseType: Pro
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
@ -1,7 +1,7 @@
|
||||
// Author: Daniele Giardini - http://www.demigiant.com
|
||||
// Author: Daniele Giardini - http://www.demigiant.com
|
||||
// Created: 2018/07/13
|
||||
|
||||
#if false // MODULE_MARKER
|
||||
#if !DOTWEEN_NOPHYSICS // MODULE_MARKER
|
||||
using System;
|
||||
using DG.Tweening.Core;
|
||||
using DG.Tweening.Core.Enums;
|
||||
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dae9aa560b4242648a3affa2bfabc365
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
@ -1,7 +1,7 @@
|
||||
// Author: Daniele Giardini - http://www.demigiant.com
|
||||
// Author: Daniele Giardini - http://www.demigiant.com
|
||||
// Created: 2018/07/13
|
||||
|
||||
#if false && (UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1_OR_NEWER) // MODULE_MARKER
|
||||
#if !DOTWEEN_NOPHYSICS2D // MODULE_MARKER
|
||||
using System;
|
||||
using DG.Tweening.Core;
|
||||
using DG.Tweening.Plugins;
|
||||
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 230fe34542e175245ba74b4659dae700
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
@ -1,7 +1,7 @@
|
||||
// Author: Daniele Giardini - http://www.demigiant.com
|
||||
// Created: 2018/07/13
|
||||
|
||||
#if true && (UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1_OR_NEWER) // MODULE_MARKER
|
||||
#if !DOTWEEN_NOSPRITES // MODULE_MARKER
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using DG.Tweening.Core;
|
||||
@ -1,11 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 338cfef648e3485499665176aa8be581
|
||||
guid: 188918ab119d93148aa0de59ccf5286b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,7 +1,7 @@
|
||||
// Author: Daniele Giardini - http://www.demigiant.com
|
||||
// Created: 2018/07/13
|
||||
|
||||
#if true && (UNITY_4_6 || UNITY_5 || UNITY_2017_1_OR_NEWER) // MODULE_MARKER
|
||||
#if !DOTWEEN_NOUI // MODULE_MARKER
|
||||
|
||||
using System;
|
||||
using System.Globalization;
|
||||
@ -1,11 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a35cdb54fce75be43ba09cccdc27b9a9
|
||||
guid: a060394c03331a64392db53a10e7f2d1
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,161 @@
|
||||
// Author: Daniele Giardini - http://www.demigiant.com
|
||||
// Created: 2026/01/08
|
||||
|
||||
#if DOTWEEN_UITOOLKIT && UNITY_2021_3_OR_NEWER // MODULE_MARKER
|
||||
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements;
|
||||
using DG.Tweening.Core;
|
||||
using DG.Tweening.Core.Enums;
|
||||
using DG.Tweening.Plugins.Options;
|
||||
|
||||
#pragma warning disable 1591
|
||||
namespace DG.Tweening
|
||||
{
|
||||
public static class DOTweenModuleUIToolkit
|
||||
{
|
||||
#region Shortcuts
|
||||
|
||||
#region VisualElement
|
||||
|
||||
/// <summary>Tweens a VisualElement's position (via style.translate) to the given value.
|
||||
/// Also stores the VisualElement as the tween's target so it can be used for filtered operations</summary>
|
||||
/// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
|
||||
/// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
|
||||
public static TweenerCore<Vector3, Vector3, VectorOptions> DOMove(this VisualElement target, Vector3 endValue, float duration, bool snapping = false)
|
||||
{
|
||||
TweenerCore<Vector3, Vector3, VectorOptions> t
|
||||
= DOTween.To(() => target.resolvedStyle.translate, x => target.style.translate = new Translate(x.x, x.y, x.z), endValue, duration);
|
||||
t.SetOptions(snapping).SetTarget(target);
|
||||
return t;
|
||||
}
|
||||
/// <summary>Tweens a VisualElement's position (via style.translate) to the given value.
|
||||
/// Also stores the VisualElement as the tween's target so it can be used for filtered operations</summary>
|
||||
/// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
|
||||
/// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
|
||||
public static TweenerCore<Vector2, Vector2, VectorOptions> DOMove(this VisualElement target, Vector2 endValue, float duration, bool snapping = false)
|
||||
{
|
||||
TweenerCore<Vector2, Vector2, VectorOptions> t
|
||||
= DOTween.To(() => (Vector2)target.resolvedStyle.translate, x => target.style.translate = new Translate(x.x, x.y, 0), endValue, duration);
|
||||
t.SetOptions(snapping).SetTarget(target);
|
||||
return t;
|
||||
}
|
||||
/// <summary>Tweens a VisualElement's X position (via style.translate) to the given value.
|
||||
/// Also stores the VisualElement as the tween's target so it can be used for filtered operations</summary>
|
||||
/// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
|
||||
/// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
|
||||
public static TweenerCore<Vector3, Vector3, VectorOptions> DOMoveX(this VisualElement target, float endValue, float duration, bool snapping = false)
|
||||
{
|
||||
TweenerCore<Vector3, Vector3, VectorOptions> t
|
||||
= DOTween.To(() => target.resolvedStyle.translate, x => target.style.translate = new Translate(x.x, x.y, x.z), new Vector3(endValue, 0, 0), duration);
|
||||
t.SetOptions(AxisConstraint.X, snapping).SetTarget(target);
|
||||
return t;
|
||||
}
|
||||
/// <summary>Tweens a VisualElement's Y position (via style.translate) to the given value.
|
||||
/// Also stores the VisualElement as the tween's target so it can be used for filtered operations</summary>
|
||||
/// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
|
||||
/// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
|
||||
public static TweenerCore<Vector3, Vector3, VectorOptions> DOMoveY(this VisualElement target, float endValue, float duration, bool snapping = false)
|
||||
{
|
||||
TweenerCore<Vector3, Vector3, VectorOptions> t
|
||||
= DOTween.To(() => target.resolvedStyle.translate, x => target.style.translate = new Translate(x.x, x.y, x.z), new Vector3(0, endValue, 0), duration);
|
||||
t.SetOptions(AxisConstraint.Y, snapping).SetTarget(target);
|
||||
return t;
|
||||
}
|
||||
/// <summary>Tweens a VisualElement's Z position (via style.translate) to the given value.
|
||||
/// Also stores the VisualElement as the tween's target so it can be used for filtered operations</summary>
|
||||
/// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
|
||||
/// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
|
||||
public static TweenerCore<Vector3, Vector3, VectorOptions> DOMoveZ(this VisualElement target, float endValue, float duration, bool snapping = false)
|
||||
{
|
||||
TweenerCore<Vector3, Vector3, VectorOptions> t
|
||||
= DOTween.To(() => target.resolvedStyle.translate, x => target.style.translate = new Translate(x.x, x.y, x.z), new Vector3(0, 0, endValue), duration);
|
||||
t.SetOptions(AxisConstraint.Z, snapping).SetTarget(target);
|
||||
return t;
|
||||
}
|
||||
|
||||
/// <summary>Tweens a VisualElement's scale (via style.scale) to the given value.
|
||||
/// Also stores the VisualElement as the tween's target so it can be used for filtered operations</summary>
|
||||
/// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
|
||||
public static TweenerCore<Vector2, Vector2, VectorOptions> DOScale(this VisualElement target, Vector2 endValue, float duration)
|
||||
{
|
||||
TweenerCore<Vector2, Vector2, VectorOptions> t
|
||||
= DOTween.To(() => (Vector2)target.resolvedStyle.scale.value, x => target.style.scale = new Scale(x), endValue, duration);
|
||||
t.SetTarget(target);
|
||||
return t;
|
||||
}
|
||||
/// <summary>Tweens a VisualElement's scale (via style.scale) to the given value.
|
||||
/// Also stores the VisualElement as the tween's target so it can be used for filtered operations</summary>
|
||||
/// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
|
||||
public static TweenerCore<Vector2, Vector2, VectorOptions> DOScale(this VisualElement target, float endValue, float duration)
|
||||
{
|
||||
TweenerCore<Vector2, Vector2, VectorOptions> t
|
||||
= DOTween.To(() => (Vector2)target.resolvedStyle.scale.value, x => target.style.scale = new Scale(x), new Vector2(endValue, endValue), duration);
|
||||
t.SetTarget(target);
|
||||
return t;
|
||||
}
|
||||
|
||||
/// <summary>Tweens a VisualElement's rotation (via style.rotate) to the given value.
|
||||
/// Also stores the VisualElement as the tween's target so it can be used for filtered operations</summary>
|
||||
/// <param name="endValue">The end value to reach</param><param name="duration">The duration of the tween</param>
|
||||
public static TweenerCore<float, float, FloatOptions> DORotate(this VisualElement target, float endValue, float duration)
|
||||
{
|
||||
TweenerCore<float, float, FloatOptions> t
|
||||
= DOTween.To(() => target.resolvedStyle.rotate.angle.value, x => target.style.rotate = new Rotate(x), endValue, duration);
|
||||
t.SetTarget(target);
|
||||
return t;
|
||||
}
|
||||
|
||||
/// <summary>Punches a VisualElement's position towards the given direction and then back to the starting one
|
||||
/// as if it was connected to the starting position via an elastic.
|
||||
/// Also stores the VisualElement as the tween's target so it can be used for filtered operations</summary>
|
||||
/// <param name="punch">The direction and strength of the punch (added to the VisualElement's current position)</param>
|
||||
/// <param name="duration">The duration of the tween</param>
|
||||
/// <param name="vibrato">Indicates how much will the punch vibrate</param>
|
||||
/// <param name="elasticity">Represents how much (0 to 1) the vector will go beyond the starting position when bouncing backwards.
|
||||
/// 1 creates a full oscillation between the punch direction and the opposite direction,
|
||||
/// while 0 oscillates only between the punch and the start position</param>
|
||||
/// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
|
||||
public static Tweener DOPunch(this VisualElement target, Vector3 punch, float duration, int vibrato = 10, float elasticity = 1, bool snapping = false)
|
||||
{
|
||||
return DOTween.Punch(() => target.resolvedStyle.translate, x => target.style.translate = new Translate(x.x, x.y, x.z), punch, duration, vibrato, elasticity)
|
||||
.SetTarget(target).SetOptions(snapping);
|
||||
}
|
||||
|
||||
/// <summary>Shakes a VisualElement's position with the given values.
|
||||
/// Also stores the VisualElement as the tween's target so it can be used for filtered operations</summary>
|
||||
/// <param name="duration">The duration of the tween</param>
|
||||
/// <param name="strength">The shake strength</param>
|
||||
/// <param name="vibrato">Indicates how much will the shake vibrate</param>
|
||||
/// <param name="randomness">Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware).
|
||||
/// Setting it to 0 will shake along a single direction.</param>
|
||||
/// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
|
||||
/// <param name="fadeOut">If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not</param>
|
||||
/// <param name="randomnessMode">Randomness mode</param>
|
||||
public static Tweener DOShake(this VisualElement target, float duration, float strength = 100, int vibrato = 10, float randomness = 90, bool snapping = false, bool fadeOut = true, ShakeRandomnessMode randomnessMode = ShakeRandomnessMode.Full)
|
||||
{
|
||||
return DOTween.Shake(() => target.resolvedStyle.translate, x => target.style.translate = new Translate(x.x, x.y, x.z), duration, strength, vibrato, randomness, true, fadeOut, randomnessMode)
|
||||
.SetTarget(target).SetSpecialStartupMode(SpecialStartupMode.SetShake).SetOptions(snapping);
|
||||
}
|
||||
/// <summary>Shakes a VisualElement's position with the given values.
|
||||
/// Also stores the VisualElement as the tween's target so it can be used for filtered operations</summary>
|
||||
/// <param name="duration">The duration of the tween</param>
|
||||
/// <param name="strength">The shake strength on each axis</param>
|
||||
/// <param name="vibrato">Indicates how much will the shake vibrate</param>
|
||||
/// <param name="randomness">Indicates how much the shake will be random (0 to 180 - values higher than 90 kind of suck, so beware).
|
||||
/// Setting it to 0 will shake along a single direction.</param>
|
||||
/// <param name="snapping">If TRUE the tween will smoothly snap all values to integers</param>
|
||||
/// <param name="fadeOut">If TRUE the shake will automatically fadeOut smoothly within the tween's duration, otherwise it will not</param>
|
||||
/// <param name="randomnessMode">Randomness mode</param>
|
||||
public static Tweener DOShake(this VisualElement target, float duration, Vector2 strength, int vibrato = 10, float randomness = 90, bool snapping = false, bool fadeOut = true, ShakeRandomnessMode randomnessMode = ShakeRandomnessMode.Full)
|
||||
{
|
||||
return DOTween.Shake(() => target.resolvedStyle.translate, x => target.style.translate = new Translate(x.x, x.y, x.z), duration, strength, vibrato, randomness, fadeOut, randomnessMode)
|
||||
.SetTarget(target).SetSpecialStartupMode(SpecialStartupMode.SetShake).SetOptions(snapping);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d67b8f0da04241e45879a134cf7d3f8a
|
||||
guid: 0c0a6d2683fb84e4193f2aa968264881
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
@ -18,9 +18,6 @@ namespace DG.Tweening
|
||||
/// </summary>
|
||||
public static class DOTweenModuleUnityVersion
|
||||
{
|
||||
#if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1_OR_NEWER
|
||||
#region Unity 4.3 or Newer
|
||||
|
||||
#region Material
|
||||
|
||||
/// <summary>Tweens a Material's color using the given gradient
|
||||
@ -74,12 +71,6 @@ namespace DG.Tweening
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
#endif
|
||||
|
||||
#if UNITY_5_3_OR_NEWER || UNITY_2017_1_OR_NEWER
|
||||
#region Unity 5.3 or Newer
|
||||
|
||||
#region CustomYieldInstructions
|
||||
|
||||
/// <summary>
|
||||
@ -172,9 +163,6 @@ namespace DG.Tweening
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
#endif
|
||||
|
||||
#if UNITY_2018_1_OR_NEWER
|
||||
#region Unity 2018.1 or Newer
|
||||
|
||||
@ -320,7 +308,6 @@ namespace DG.Tweening
|
||||
// ███ CLASSES █████████████████████████████████████████████████████████████████████████████████████████████████████████
|
||||
// █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
|
||||
|
||||
#if UNITY_5_3_OR_NEWER || UNITY_2017_1_OR_NEWER
|
||||
public static class DOTweenCYInstruction
|
||||
{
|
||||
public class WaitForCompletion : CustomYieldInstruction
|
||||
@ -399,5 +386,4 @@ namespace DG.Tweening
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -1,11 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f3b5c12e7cad64c42bf1b4d1e129d093
|
||||
guid: 63c02322328255542995bd02b47b0457
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,4 +1,4 @@
|
||||
// Author: Daniele Giardini - http://www.demigiant.com
|
||||
// Author: Daniele Giardini - http://www.demigiant.com
|
||||
// Created: 2018/07/13
|
||||
|
||||
using System;
|
||||
@ -12,7 +12,7 @@ using DG.Tweening.Plugins.Options;
|
||||
namespace DG.Tweening
|
||||
{
|
||||
/// <summary>
|
||||
/// Utility functions that deal with available Modules.
|
||||
/// Utility functions that deal with available Modules and rewrite them.
|
||||
/// Modules defines:
|
||||
/// - DOTAUDIO
|
||||
/// - DOTPHYSICS
|
||||
@ -25,13 +25,16 @@ namespace DG.Tweening
|
||||
/// </summary>
|
||||
public static class DOTweenModuleUtils
|
||||
{
|
||||
#pragma warning disable UDR0001
|
||||
static bool _initialized;
|
||||
#pragma warning restore UDR0001
|
||||
|
||||
#region Reflection
|
||||
|
||||
/// <summary>
|
||||
/// Called via Reflection by DOTweenComponent on Awake
|
||||
/// </summary>
|
||||
#pragma warning disable UDR0001
|
||||
#if UNITY_2018_1_OR_NEWER
|
||||
[UnityEngine.Scripting.Preserve]
|
||||
#endif
|
||||
@ -40,16 +43,20 @@ namespace DG.Tweening
|
||||
if (_initialized) return;
|
||||
|
||||
_initialized = true;
|
||||
DOTweenExternalCommand.SetOrientationOnPath -= Physics.SetOrientationOnPath;
|
||||
DOTweenExternalCommand.SetOrientationOnPath += Physics.SetOrientationOnPath;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
#if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1
|
||||
UnityEditor.EditorApplication.playmodeStateChanged -= PlaymodeStateChanged;
|
||||
UnityEditor.EditorApplication.playmodeStateChanged += PlaymodeStateChanged;
|
||||
#else
|
||||
UnityEditor.EditorApplication.playModeStateChanged -= PlaymodeStateChanged;
|
||||
UnityEditor.EditorApplication.playModeStateChanged += PlaymodeStateChanged;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
#pragma warning restore UDR0001
|
||||
|
||||
#if UNITY_2018_1_OR_NEWER
|
||||
#pragma warning disable
|
||||
@ -87,7 +94,7 @@ namespace DG.Tweening
|
||||
// Called via DOTweenExternalCommand callback
|
||||
public static void SetOrientationOnPath(PathOptions options, Tween t, Quaternion newRot, Transform trans)
|
||||
{
|
||||
#if false // PHYSICS_MARKER
|
||||
#if !DOTWEEN_NOPHYSICS // PHYSICS_MARKER
|
||||
if (options.isRigidbody) ((Rigidbody)t.target).rotation = newRot;
|
||||
else trans.rotation = newRot;
|
||||
#else
|
||||
@ -98,7 +105,7 @@ namespace DG.Tweening
|
||||
// Returns FALSE if the DOTween's Physics2D Module is disabled, or if there's no Rigidbody2D attached
|
||||
public static bool HasRigidbody2D(Component target)
|
||||
{
|
||||
#if false // PHYSICS2D_MARKER
|
||||
#if !DOTWEEN_NOPHYSICS2D // PHYSICS2D_MARKER
|
||||
return target.GetComponent<Rigidbody2D>() != null;
|
||||
#else
|
||||
return false;
|
||||
@ -115,7 +122,7 @@ namespace DG.Tweening
|
||||
#endif
|
||||
public static bool HasRigidbody(Component target)
|
||||
{
|
||||
#if false // PHYSICS_MARKER
|
||||
#if !DOTWEEN_NOPHYSICS // PHYSICS_MARKER
|
||||
return target.GetComponent<Rigidbody>() != null;
|
||||
#else
|
||||
return false;
|
||||
@ -131,7 +138,7 @@ namespace DG.Tweening
|
||||
){
|
||||
TweenerCore<Vector3, Path, PathOptions> t = null;
|
||||
bool rBodyFoundAndTweened = false;
|
||||
#if false // PHYSICS_MARKER
|
||||
#if !DOTWEEN_NOPHYSICS // PHYSICS_MARKER
|
||||
if (tweenRigidbody) {
|
||||
Rigidbody rBody = target.GetComponent<Rigidbody>();
|
||||
if (rBody != null) {
|
||||
@ -142,7 +149,7 @@ namespace DG.Tweening
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if false // PHYSICS2D_MARKER
|
||||
#if !DOTWEEN_NOPHYSICS2D // PHYSICS2D_MARKER
|
||||
if (!rBodyFoundAndTweened && tweenRigidbody) {
|
||||
Rigidbody2D rBody2D = target.GetComponent<Rigidbody2D>();
|
||||
if (rBody2D != null) {
|
||||
@ -1,11 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a4aa6727737229b4391ced2aef935944
|
||||
guid: 7bcaf917d9cf5b84090421a5a2abe42e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,15 +1,17 @@
|
||||
DOTween and DOTween Pro are copyright (c) 2014-2018 Daniele Giardini - Demigiant
|
||||
DOTween and DOTween Pro are copyright (c) 2014-2026 Daniele Giardini - Demigiant
|
||||
|
||||
|
||||
// IMPORTANT!!! /////////////////////////////////////////////
|
||||
// Upgrading DOTween from versions older than 1.2.000 ///////
|
||||
// (or DOTween Pro older than 1.0.000) //////////////////////
|
||||
// Upgrading DOTween from versions older than 1.2.815 ///////
|
||||
// or DOTween Pro older than 1.0.405 ////////////////////////
|
||||
// (February 6 2026) ////////////////////////////////////////
|
||||
-------------------------------------------------------------
|
||||
If you're upgrading your project from a version of DOTween older than 1.2.000 (or DOTween Pro older than 1.0.000) please follow these instructions carefully.
|
||||
1) Import the new version in the same folder as the previous one, overwriting old files. A lot of errors will appear but don't worry
|
||||
2) Close and reopen Unity (and your project). This is fundamental: skipping this step will cause a bloodbath
|
||||
1) Import the new version in the same folder as the previous one (Plugins/Demigiant), overwriting old files. A lot of errors will appear but don't worry.
|
||||
2) Close and reopen Unity (and your project) without entering safe mode. This is fundamental: skipping this step will cause a bloodbath
|
||||
3) Open DOTween's Utility Panel (Tools > Demigiant > DOTween Utility Panel) if it doesn't open automatically, then press "Setup DOTween...": this will run the upgrade setup
|
||||
4) From the Add/Remove Modules panel that opens, activate/deactivate Modules for Unity systems and for external assets (Pro version only)
|
||||
|
||||
|
||||
// GET STARTED //////////////////////////////////////////////
|
||||
|
||||
- After importing a new DOTween update, select DOTween's Utility Panel from the "Tools/Demigiant" menu (if it doesn't open automatically) and press the "Setup DOTween..." button to activate/deactivate Modules. You can also access a Preferences Tab from there to choose default settings for DOTween.
|
||||
@ -21,8 +23,8 @@ If you're upgrading your project from a version of DOTween older than 1.2.000 (o
|
||||
|
||||
DOTween website (documentation, examples, etc): http://dotween.demigiant.com
|
||||
DOTween license: http://dotween.demigiant.com/license.php
|
||||
DOTween repository (Google Code): https://code.google.com/p/dotween/
|
||||
Demigiant website (documentation, examples, etc): http://www.demigiant.com
|
||||
DOTween repository (GitHub): https://github.com/Demigiant/dotween
|
||||
Demigiant website: http://www.demigiant.com
|
||||
|
||||
// NOTES //////////////////////////////////////////////////////
|
||||
|
||||
4
Assets/Plugins/Demigiant/DOTween/readme.txt.meta
Normal file
@ -0,0 +1,4 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fccfc62abf2eb0a4db614853430894fd
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 62fa846b7e1a1c748a8b980198eb83d6
|
||||
guid: 5ceb9286af053154686bd93085f8d8c4
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
35
Assets/ProjectSettings/UIEffectProjectSettings.asset
Normal file
@ -0,0 +1,35 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!200 &-508766772799334342
|
||||
ShaderVariantCollection:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: ShaderVariants
|
||||
m_Shaders: {}
|
||||
--- !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: 11500000, guid: 7d43f626d9b5f4d729097092ded48bdb, type: 3}
|
||||
m_Name: UIEffectProjectSettings
|
||||
m_EditorClassIdentifier:
|
||||
m_PreLoadSettingsInBuild: 1
|
||||
m_RuntimePresets: []
|
||||
m_RuntimePresetsV2: []
|
||||
m_UseHDRColorPicker: 1
|
||||
m_ShaderVariantCollection: {fileID: 0}
|
||||
m_ShaderVariantRegistry:
|
||||
m_OptionalShaders:
|
||||
- key: Hidden/UI/Default (SoftMaskable)
|
||||
value: Hidden/UI/Default (UIEffect)
|
||||
m_Asset: {fileID: -508766772799334342}
|
||||
m_RegisteredShaders: []
|
||||
m_ErrorOnUnregisteredVariant: 0
|
||||
m_UnregisteredVariants: []
|
||||
@ -1,8 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 25b7121e7bb16be42bfa6c11531ddbfb
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
guid: ea0b832004c179d4aa69068be5863671
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1557,17 +1557,17 @@
|
||||
{
|
||||
"key": "100312",
|
||||
"zh": "密码长度6位,仅允许使用数字字符",
|
||||
"en": "Fixed 6-digit numeric password only."
|
||||
"en": "Fixed 6-digit numeric password only"
|
||||
},
|
||||
{
|
||||
"key": "100313",
|
||||
"zh": "密码长度8-16位,不能有空格;",
|
||||
"en": "8–16 characters, no spaces. "
|
||||
"zh": "密码长度8-16位,不能有空格",
|
||||
"en": "8–16 characters, no spaces"
|
||||
},
|
||||
{
|
||||
"key": "100314",
|
||||
"zh": "字符格式应至少包括大写字母、小写字母、数字、特殊字符的三种;",
|
||||
"en": "Include at least 3 types: uppercase, lowercase, digits, special chars. No 3+ consecutive or repeated digits/letters."
|
||||
"zh": "字符格式应至少包括大写字母、小写字母、数字、特殊字符的三种",
|
||||
"en": "Include at least 3 types: uppercase, lowercase, digits, special chars. No 3+ consecutive or repeated digits/letters"
|
||||
},
|
||||
{
|
||||
"key": "100315",
|
||||
@ -1576,8 +1576,8 @@
|
||||
},
|
||||
{
|
||||
"key": "100316",
|
||||
"zh": "密码不能是登录名的一部分。",
|
||||
"en": "Cannot be part of login name."
|
||||
"zh": "密码不能是登录名的一部分",
|
||||
"en": "Cannot be part of login name"
|
||||
},
|
||||
{
|
||||
"key": "100317",
|
||||
@ -1598,6 +1598,31 @@
|
||||
"key": "100320",
|
||||
"zh": "*仅支持 2.4GHz Wi-Fi",
|
||||
"en": "*Only 2.4GHz Wi-Fi is supported"
|
||||
},
|
||||
{
|
||||
"key": "100321",
|
||||
"zh": "指纹设置失败,请重试",
|
||||
"en": "Fingerprint setup failed, please try again"
|
||||
},
|
||||
{
|
||||
"key": "100322",
|
||||
"zh": "是否录入管理员指纹?",
|
||||
"en": "Enroll administrator fingerprint?"
|
||||
},
|
||||
{
|
||||
"key": "100323",
|
||||
"zh": "录入管理员指纹,用于设备激光操作身份校验,保障使用安全,可选择立即录入或稍后配置。",
|
||||
"en": "Enroll administrator fingerprint for identity verification before laser activation to ensure safety. You can enroll now or set it up later."
|
||||
},
|
||||
{
|
||||
"key": "100324",
|
||||
"zh": "录入指纹",
|
||||
"en": "Enroll Fingerprint"
|
||||
},
|
||||
{
|
||||
"key": "100325",
|
||||
"zh": "请将手指放置于设备指纹识别区域",
|
||||
"en": "Place your finger on the device fingerprint sensor"
|
||||
}
|
||||
|
||||
|
||||
|
||||
BIN
Assets/Res/ui/connectdevicepage/指纹 2.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
@ -1,9 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0d0559d86cf94a941874092ddf151402
|
||||
guid: 35f0ab632fde13c45bc9625197cf542f
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 9
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
@ -20,9 +20,12 @@ TextureImporter:
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
@ -33,14 +36,14 @@ TextureImporter:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: -100
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
wrapW: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
@ -51,16 +54,22 @@ TextureImporter:
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 2
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 2
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 512
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
@ -68,21 +77,51 @@ TextureImporter:
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
spritePackingTag:
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -328,6 +328,127 @@ Animation:
|
||||
m_PlayAutomatically: 1
|
||||
m_AnimatePhysics: 0
|
||||
m_CullingType: 0
|
||||
--- !u!1 &171953994162575302
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3489378129480615911}
|
||||
- component: {fileID: 4862718890922970527}
|
||||
- component: {fileID: 2208564748274254691}
|
||||
- component: {fileID: 8752954411171160172}
|
||||
m_Layer: 5
|
||||
m_Name: "\u91CD\u547D\u540D (1)"
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3489378129480615911
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 171953994162575302}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 3034658243493595255}
|
||||
m_Father: {fileID: 7844458031469168773}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 217.5, y: -60}
|
||||
m_SizeDelta: {x: 145, y: 120}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &4862718890922970527
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 171953994162575302}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &2208564748274254691
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 171953994162575302}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.99215686, g: 0.84705883, b: 0.20784314, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 1
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &8752954411171160172
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 171953994162575302}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_WrapAround: 0
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_SelectedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_SelectedTrigger: Selected
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 2208564748274254691}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!1 &250314515808294985
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -2433,6 +2554,127 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &1444034278555601323
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6449828758236541207}
|
||||
- component: {fileID: 8748907505049847186}
|
||||
- component: {fileID: 7052275472841761544}
|
||||
- component: {fileID: 4271389806304974538}
|
||||
m_Layer: 5
|
||||
m_Name: "\u91CD\u547D\u540D (2)"
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &6449828758236541207
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1444034278555601323}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 1629707109178756068}
|
||||
m_Father: {fileID: 7844458031469168773}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 362.5, y: -60}
|
||||
m_SizeDelta: {x: 145, y: 120}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8748907505049847186
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1444034278555601323}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &7052275472841761544
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1444034278555601323}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.1882353, g: 0.9490196, b: 0.8392157, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 1
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &4271389806304974538
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1444034278555601323}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_WrapAround: 0
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_SelectedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_SelectedTrigger: Selected
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 7052275472841761544}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!1 &1485358923400520455
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -4601,6 +4843,80 @@ Animation:
|
||||
m_PlayAutomatically: 0
|
||||
m_AnimatePhysics: 0
|
||||
m_CullingType: 0
|
||||
--- !u!1 &2188122373689102454
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7844458031469168773}
|
||||
- component: {fileID: 7326811173079298642}
|
||||
- component: {fileID: 6877050589658701912}
|
||||
m_Layer: 5
|
||||
m_Name: "\u83DC\u5355"
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &7844458031469168773
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2188122373689102454}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 2566096844079809264}
|
||||
- {fileID: 3489378129480615911}
|
||||
- {fileID: 6449828758236541207}
|
||||
m_Father: {fileID: 3505955939844419362}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 1, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 435, y: 0}
|
||||
m_Pivot: {x: 0, y: 0.5}
|
||||
--- !u!222 &7326811173079298642
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2188122373689102454}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &6877050589658701912
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2188122373689102454}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Padding:
|
||||
m_Left: 0
|
||||
m_Right: 0
|
||||
m_Top: 0
|
||||
m_Bottom: 0
|
||||
m_ChildAlignment: 3
|
||||
m_Spacing: 0
|
||||
m_ChildForceExpandWidth: 1
|
||||
m_ChildForceExpandHeight: 1
|
||||
m_ChildControlWidth: 1
|
||||
m_ChildControlHeight: 1
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ReverseArrangement: 0
|
||||
--- !u!1 &2275775934727828550
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -6366,6 +6682,7 @@ GameObject:
|
||||
- component: {fileID: 7325526453315403031}
|
||||
- component: {fileID: 8538965056443010729}
|
||||
- component: {fileID: 7161548608695394483}
|
||||
- component: {fileID: 5889520335138296328}
|
||||
m_Layer: 5
|
||||
m_Name: "\u4E00\u4E2A\u8BBE\u5907"
|
||||
m_TagString: Untagged
|
||||
@ -6388,6 +6705,8 @@ RectTransform:
|
||||
- {fileID: 281041426051862978}
|
||||
- {fileID: 1121656133766426305}
|
||||
- {fileID: 6744263492203110024}
|
||||
- {fileID: 8021894877957941971}
|
||||
- {fileID: 7844458031469168773}
|
||||
m_Father: {fileID: 5019459736209175623}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
@ -6447,6 +6766,8 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
deviceNameText: {fileID: 1001116305648498082}
|
||||
selectedIndicator: {fileID: 1493165828582188157}
|
||||
menuRect: {fileID: 7844458031469168773}
|
||||
blurOverlay: {fileID: 7004732522669765365}
|
||||
deviceInfo:
|
||||
device_sn:
|
||||
ble_mac:
|
||||
@ -6507,6 +6828,19 @@ MonoBehaviour:
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!114 &5889520335138296328
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3209549728057504314}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_ShowMaskGraphic: 1
|
||||
--- !u!1 &3247212730655260364
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -6833,6 +7167,127 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
textKey: 100095
|
||||
--- !u!1 &3403368306910610790
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2566096844079809264}
|
||||
- component: {fileID: 1506127987468939619}
|
||||
- component: {fileID: 8708873921363957785}
|
||||
- component: {fileID: 4535161468894169287}
|
||||
m_Layer: 5
|
||||
m_Name: "\u91CD\u547D\u540D"
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &2566096844079809264
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3403368306910610790}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 2612579731749496019}
|
||||
m_Father: {fileID: 7844458031469168773}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 72.5, y: -60}
|
||||
m_SizeDelta: {x: 145, y: 120}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &1506127987468939619
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3403368306910610790}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &8708873921363957785
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3403368306910610790}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.20392157, g: 0.56078434, b: 0.98039216, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 1
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &4535161468894169287
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3403368306910610790}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_WrapAround: 0
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_SelectedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_SelectedTrigger: Selected
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 8708873921363957785}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!1 &3433929351811658191
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -8849,6 +9304,85 @@ MonoBehaviour:
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text:
|
||||
--- !u!1 &4624978287598515970
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 3034658243493595255}
|
||||
- component: {fileID: 2556545737450132359}
|
||||
- component: {fileID: 6066547719913138627}
|
||||
m_Layer: 5
|
||||
m_Name: Text (Legacy)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &3034658243493595255
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4624978287598515970}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3489378129480615911}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &2556545737450132359
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4624978287598515970}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &6066547719913138627
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4624978287598515970}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_FontSize: 14
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 10
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 4
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: Button
|
||||
--- !u!1 &4658765528600517200
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -13662,6 +14196,81 @@ MonoBehaviour:
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: 11
|
||||
--- !u!1 &7004732522669765365
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8021894877957941971}
|
||||
- component: {fileID: 952256989176536870}
|
||||
- component: {fileID: 4796557333022528008}
|
||||
m_Layer: 5
|
||||
m_Name: "\u6A21\u7CCA"
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
--- !u!224 &8021894877957941971
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7004732522669765365}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3505955939844419362}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: -20, y: -20}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &952256989176536870
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7004732522669765365}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &4796557333022528008
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7004732522669765365}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 2100000, guid: ad4e927583771f942a15cc89421a14de, type: 2}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &7013607108523781923
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -15275,6 +15884,7 @@ MonoBehaviour:
|
||||
scheduleSettingPrefab: {fileID: 3216739529495113389, guid: 9eb86459bbba39a4cac2c0965ef4df86,
|
||||
type: 3}
|
||||
LockButtonPlane: {fileID: 2474256133367177989}
|
||||
lockTime: 180
|
||||
fovSettingPagePrefab: {fileID: 3146413254774730820, guid: 7160c2ae423fa6248b722bcd3e613840,
|
||||
type: 3}
|
||||
lensSettingPagePrefab: {fileID: 1580085518831563756, guid: f978cd075181e024289b864203cbedb3,
|
||||
@ -15597,6 +16207,85 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &8249454294079289629
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1629707109178756068}
|
||||
- component: {fileID: 2253659600553536467}
|
||||
- component: {fileID: 2760649281791556771}
|
||||
m_Layer: 5
|
||||
m_Name: Text (Legacy)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &1629707109178756068
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8249454294079289629}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 6449828758236541207}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &2253659600553536467
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8249454294079289629}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &2760649281791556771
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8249454294079289629}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_FontSize: 14
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 10
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 4
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: Button
|
||||
--- !u!1 &8250217249879649147
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -15940,7 +16629,7 @@ MonoBehaviour:
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1.5
|
||||
m_Text:
|
||||
m_Text: "\u6556\u5FB7\u8428\u6240"
|
||||
--- !u!1 &8446979383493435888
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -16723,6 +17412,85 @@ MonoBehaviour:
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text:
|
||||
--- !u!1 &8730720298267373558
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2612579731749496019}
|
||||
- component: {fileID: 4518180440094572115}
|
||||
- component: {fileID: 3163527768836703469}
|
||||
m_Layer: 5
|
||||
m_Name: Text (Legacy)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &2612579731749496019
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8730720298267373558}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 2566096844079809264}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &4518180440094572115
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8730720298267373558}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &3163527768836703469
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8730720298267373558}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_FontSize: 14
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 10
|
||||
m_MaxSize: 40
|
||||
m_Alignment: 4
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 0
|
||||
m_VerticalOverflow: 0
|
||||
m_LineSpacing: 1
|
||||
m_Text: Button
|
||||
--- !u!1 &8730867197378039218
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
32
Assets/Res/ui/homepage/菜单模糊.mat
Normal file
@ -0,0 +1,32 @@
|
||||
%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: "\u83DC\u5355\u6A21\u7CCA"
|
||||
m_Shader: {fileID: 4800000, guid: 2777693b621900141a534bddd40419ef, type: 3}
|
||||
m_Parent: {fileID: 2100000, guid: c786c0858e367bb4da40240548178384, type: 2}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs: []
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _BumpAmt: 0
|
||||
- _Size: 1.5
|
||||
m_Colors:
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 0.972549}
|
||||
m_BuildTextureStacks: []
|
||||
@ -1,7 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b7cce7e08800ec54e8011b271e66fedf
|
||||
TextScriptImporter:
|
||||
guid: ad4e927583771f942a15cc89421a14de
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
55
Assets/Resources/DOTweenSettings.asset
Normal file
@ -0,0 +1,55 @@
|
||||
%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:
|
||||
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: 1
|
||||
defaultEaseOvershootOrAmplitude: 1.70158
|
||||
defaultEasePeriod: 0
|
||||
defaultAutoKill: 1
|
||||
defaultLoopType: 0
|
||||
debugMode: 0
|
||||
debugStoreTargetId: 1
|
||||
showPreviewPanel: 1
|
||||
storeSettingsLocation: 0
|
||||
modules:
|
||||
showPanel: 0
|
||||
audioEnabled: 0
|
||||
physicsEnabled: 0
|
||||
physics2DEnabled: 0
|
||||
spriteEnabled: 1
|
||||
uiEnabled: 1
|
||||
uiToolkitEnabled: 1
|
||||
textMeshProEnabled: 0
|
||||
tk2DEnabled: 0
|
||||
deAudioEnabled: 0
|
||||
deUnityExtendedEnabled: 0
|
||||
epoOutlineEnabled: 0
|
||||
createASMDEF: 0
|
||||
showPlayingTweens: 0
|
||||
showPausedTweens: 0
|
||||
@ -1,7 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f69ace246b9638e4396e38db67cd404a
|
||||
TextScriptImporter:
|
||||
guid: 51a410f15d34f2441a8f942260652d08
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -449,7 +449,7 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 05b49f3efc06bd84b91275be192861eb, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
resPosition: 2
|
||||
resPosition: 1
|
||||
commonList:
|
||||
- common
|
||||
- ui_common
|
||||
|
||||
@ -13,13 +13,30 @@ namespace Kill.Bluetooth
|
||||
[Serializable]
|
||||
public class OTAVersionInfo
|
||||
{
|
||||
public uint FirmwareVersion; // 固件版本 (4字节)
|
||||
public uint HardwareVersion; // 硬件版本 (4字节)
|
||||
public uint OTAVersion; // OTA版本 (4字节)
|
||||
public uint FirmwareVersion; // 固件版本 (4字节,按每段2位十进制压缩)
|
||||
public uint HardwareVersion; // 硬件版本 (4字节,按每段2位十进制压缩)
|
||||
public uint OTAVersion; // OTA版本 (4字节,按每段2位十进制压缩)
|
||||
|
||||
/// <summary>
|
||||
/// 将版本号转换为 x.x.x.x 格式字符串
|
||||
/// 版本号按每段2位十进制压缩存储(如 00.00.01.05 -> 105)
|
||||
/// </summary>
|
||||
private static string GetVersionString(uint version)
|
||||
{
|
||||
int v1 = (int)(version / 1000000) % 100;
|
||||
int v2 = (int)(version / 10000) % 100;
|
||||
int v3 = (int)(version / 100) % 100;
|
||||
int v4 = (int)(version % 100);
|
||||
return $"{v1:D2}.{v2:D2}.{v3:D2}.{v4:D2}";
|
||||
}
|
||||
|
||||
public string GetFirmwareVersionString() => GetVersionString(FirmwareVersion);
|
||||
public string GetHardwareVersionString() => GetVersionString(HardwareVersion);
|
||||
public string GetOtaVersionString() => GetVersionString(OTAVersion);
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"固件版本: {FirmwareVersion}, 硬件版本: {HardwareVersion}, OTA版本: {OTAVersion}";
|
||||
return $"固件版本: {GetFirmwareVersionString()}, 硬件版本: {GetHardwareVersionString()}, OTA版本: {GetOtaVersionString()}";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1943,14 +1943,15 @@ namespace Kill.Bluetooth.Protocol
|
||||
|
||||
/// <summary>
|
||||
/// 将版本号转换为 x.x.x.x 格式字符串
|
||||
/// 版本号按每段2位十进制压缩存储(如 00.00.01.05 -> 105)
|
||||
/// </summary>
|
||||
private string GetVersionString(uint version)
|
||||
{
|
||||
byte v1 = (byte)((version >> 24) & 0xFF);
|
||||
byte v2 = (byte)((version >> 16) & 0xFF);
|
||||
byte v3 = (byte)((version >> 8) & 0xFF);
|
||||
byte v4 = (byte)(version & 0xFF);
|
||||
return $"{v1}.{v2}.{v3}.{v4}";
|
||||
int v1 = (int)(version / 1000000) % 100;
|
||||
int v2 = (int)(version / 10000) % 100;
|
||||
int v3 = (int)(version / 100) % 100;
|
||||
int v4 = (int)(version % 100);
|
||||
return $"{v1:D2}.{v2:D2}.{v3:D2}.{v4:D2}";
|
||||
}
|
||||
|
||||
public string GetFirmwareVersionString() => GetVersionString(FirmwareVersion);
|
||||
|
||||
157
Assets/Scripts/UI/Components/UIAnimator.cs
Normal file
@ -0,0 +1,157 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using DG.Tweening;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 可视化UI动画组件:以步骤列表驱动DOTween播放
|
||||
/// 支持 位移/缩放/旋转/透明度 四类动画,正向/反向/停止
|
||||
/// 配合 UIAnimatorInspector 可在 Inspector 中可视化编排并预览
|
||||
/// </summary>
|
||||
public class UIAnimator : MonoBehaviour
|
||||
{
|
||||
public enum UIAnimationType
|
||||
{
|
||||
Move, // 位移(相对偏移)
|
||||
Scale, // 缩放(目标值)
|
||||
Rotate, // 旋转(目标角度,绕Z轴)
|
||||
Alpha // 透明度(目标值,需CanvasGroup)
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class UIAnimationStep
|
||||
{
|
||||
[Tooltip("动画类型")] public UIAnimationType type = UIAnimationType.Move;
|
||||
[Tooltip("步骤开始前的延迟(秒)")] public float delay;
|
||||
[Tooltip("动画时长(秒)")] public float duration = 0.5f;
|
||||
[Tooltip("缓动曲线")] public Ease ease = Ease.OutQuad;
|
||||
[Tooltip("位移偏移量(相对当前位置)")] public Vector3 moveOffset = Vector3.zero;
|
||||
[Tooltip("缩放目标值")] public Vector3 targetScale = Vector3.one;
|
||||
[Tooltip("旋转目标角度(绕Z轴)")] public float targetRotation;
|
||||
[Tooltip("透明度目标值(0-1)")] public float targetAlpha = 1f;
|
||||
}
|
||||
|
||||
[Tooltip("动画步骤列表")] public List<UIAnimationStep> steps = new List<UIAnimationStep>();
|
||||
[Tooltip("启动时自动播放")] public bool playOnAwake;
|
||||
[Tooltip("无CanvasGroup时自动添加(Alpha动画需要)")] public bool autoAddCanvasGroup = true;
|
||||
|
||||
private RectTransform rectTransform;
|
||||
private CanvasGroup canvasGroup;
|
||||
private Sequence sequence;
|
||||
|
||||
// 初始状态缓存(反向播放与编辑器预览需要)
|
||||
public Vector3 InitialAnchoredPosition3D { get; private set; }
|
||||
public Vector3 InitialLocalScale { get; private set; }
|
||||
public float InitialRotationZ { get; private set; }
|
||||
public float InitialAlpha { get; private set; }
|
||||
|
||||
public RectTransform RectTransform => rectTransform;
|
||||
public CanvasGroup CanvasGroup => canvasGroup;
|
||||
|
||||
/// <summary>动画总时长(所有步骤的 延迟+时长 之和)</summary>
|
||||
public float TotalDuration
|
||||
{
|
||||
get
|
||||
{
|
||||
float total = 0;
|
||||
if (steps != null)
|
||||
foreach (var step in steps) total += step.delay + step.duration;
|
||||
return total;
|
||||
}
|
||||
}
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
rectTransform = GetComponent<RectTransform>();
|
||||
canvasGroup = GetComponent<CanvasGroup>();
|
||||
if (canvasGroup == null && autoAddCanvasGroup)
|
||||
canvasGroup = gameObject.AddComponent<CanvasGroup>();
|
||||
SaveInitialState();
|
||||
if (playOnAwake) Play();
|
||||
}
|
||||
|
||||
/// <summary>记录当前状态为初始状态(反向播放/预览的基准)</summary>
|
||||
public void SaveInitialState()
|
||||
{
|
||||
if (rectTransform == null) rectTransform = GetComponent<RectTransform>();
|
||||
if (canvasGroup == null) canvasGroup = GetComponent<CanvasGroup>();
|
||||
if (rectTransform == null) return;
|
||||
InitialAnchoredPosition3D = rectTransform.anchoredPosition3D;
|
||||
InitialLocalScale = rectTransform.localScale;
|
||||
InitialRotationZ = rectTransform.localEulerAngles.z;
|
||||
InitialAlpha = canvasGroup != null ? canvasGroup.alpha : 1f;
|
||||
}
|
||||
|
||||
/// <summary>正向播放</summary>
|
||||
public void Play() => PlaySequence(false);
|
||||
|
||||
/// <summary>反向播放(从当前状态回到初始状态)</summary>
|
||||
public void PlayReverse() => PlaySequence(true);
|
||||
|
||||
/// <summary>停止并保持当前状态</summary>
|
||||
public void Stop()
|
||||
{
|
||||
sequence?.Kill();
|
||||
sequence = null;
|
||||
}
|
||||
|
||||
private void PlaySequence(bool reverse)
|
||||
{
|
||||
sequence?.Kill();
|
||||
sequence = reverse ? CreateReverseSequence() : CreateForwardSequence();
|
||||
if (sequence == null) return;
|
||||
sequence.Play();
|
||||
}
|
||||
|
||||
private Sequence CreateForwardSequence()
|
||||
{
|
||||
if (rectTransform == null || steps == null || steps.Count == 0) return null;
|
||||
Sequence seq = DOTween.Sequence();
|
||||
foreach (var step in steps)
|
||||
{
|
||||
Tween t = CreateStepTween(step, false);
|
||||
if (t == null) continue;
|
||||
if (step.delay > 0) t.SetDelay(step.delay);
|
||||
seq.Append(t);
|
||||
}
|
||||
return seq;
|
||||
}
|
||||
|
||||
private Sequence CreateReverseSequence()
|
||||
{
|
||||
if (rectTransform == null || steps == null || steps.Count == 0) return null;
|
||||
Sequence seq = DOTween.Sequence();
|
||||
for (int i = steps.Count - 1; i >= 0; i--)
|
||||
{
|
||||
Tween t = CreateStepTween(steps[i], true);
|
||||
if (t == null) continue;
|
||||
if (steps[i].delay > 0) t.SetDelay(steps[i].delay);
|
||||
seq.Append(t);
|
||||
}
|
||||
return seq;
|
||||
}
|
||||
|
||||
private Tween CreateStepTween(UIAnimationStep step, bool reverse)
|
||||
{
|
||||
switch (step.type)
|
||||
{
|
||||
case UIAnimationType.Move:
|
||||
// 反向时位移取负偏移(回到初始位置)
|
||||
return rectTransform.DOAnchorPos3D(reverse ? -step.moveOffset : step.moveOffset, step.duration)
|
||||
.SetRelative().SetEase(step.ease);
|
||||
case UIAnimationType.Scale:
|
||||
return rectTransform.DOScale(reverse ? InitialLocalScale : step.targetScale, step.duration).SetEase(step.ease);
|
||||
case UIAnimationType.Rotate:
|
||||
return rectTransform.DOLocalRotate(
|
||||
new Vector3(0, 0, reverse ? InitialRotationZ : step.targetRotation), step.duration).SetEase(step.ease);
|
||||
case UIAnimationType.Alpha:
|
||||
if (canvasGroup == null)
|
||||
{
|
||||
Debug.LogWarning("[UIAnimator] Alpha动画需要CanvasGroup,请手动添加或开启autoAddCanvasGroup", this);
|
||||
return null;
|
||||
}
|
||||
return canvasGroup.DOFade(reverse ? InitialAlpha : step.targetAlpha, step.duration).SetEase(step.ease);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1ad21c51b7dd87e4f87bf4232cc27c1e
|
||||
guid: f8717e0ed7e8e204da8aff7575d2dcf5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
@ -4499,7 +4499,7 @@ namespace Kill.UI.Pages
|
||||
{
|
||||
if (info != null)
|
||||
{
|
||||
UpdateStatus($"OTA版本: 固件={info.FirmwareVersion}, 硬件={info.HardwareVersion}");
|
||||
UpdateStatus($"OTA版本: 固件={info.GetFirmwareVersionString()}, 硬件={info.GetHardwareVersionString()}");
|
||||
Log($"OTA版本信息: {info}");
|
||||
}
|
||||
else
|
||||
@ -4822,12 +4822,16 @@ namespace Kill.UI.Pages
|
||||
string[] parts = versionStr.Split('.');
|
||||
|
||||
if (parts.Length >= 3 &&
|
||||
uint.TryParse(parts[0], out uint major) &&
|
||||
uint.TryParse(parts[1], out uint minor) &&
|
||||
uint.TryParse(parts[2], out uint patch))
|
||||
uint.TryParse(parts[0], out uint v0) &&
|
||||
uint.TryParse(parts[1], out uint v1) &&
|
||||
uint.TryParse(parts[2], out uint v2))
|
||||
{
|
||||
// 版本号格式:主版本.次版本.修订号 -> 32位整数
|
||||
return (major << 16) | (minor << 8) | patch;
|
||||
// 版本号格式:主版本.次版本.修订号(可含第4段)
|
||||
// 按每段2位十进制压缩,与设备端编码一致(如 00.00.01.05 -> 105)
|
||||
uint v3 = 0;
|
||||
if (parts.Length >= 4)
|
||||
uint.TryParse(parts[3], out v3);
|
||||
return v0 * 1000000 + v1 * 10000 + v2 * 100 + v3;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4876,7 +4880,7 @@ namespace Kill.UI.Pages
|
||||
{
|
||||
if (OTAInfoText != null)
|
||||
{
|
||||
OTAInfoText.text = $"=== 设备版本信息 ===\n固件版本: {info.FirmwareVersion}\n硬件版本: {info.HardwareVersion}\nOTA版本: {info.OTAVersion}";
|
||||
OTAInfoText.text = $"=== 设备版本信息 ===\n固件版本: {info.GetFirmwareVersionString()}\n硬件版本: {info.GetHardwareVersionString()}\nOTA版本: {info.GetOtaVersionString()}";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@ using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Kill.Bluetooth;
|
||||
using Kill.Core;
|
||||
using Kill.Managers;
|
||||
@ -16,16 +17,19 @@ using UnityEngine.UI;
|
||||
public class ConnectDevicePageCtrl : MonoBehaviour
|
||||
{
|
||||
/// <summary>
|
||||
/// 0连接 1 失败 2 成功 3 选择wifi
|
||||
/// 0连接 1 失败 2 成功 3 选择wifi 4 指纹初始化
|
||||
/// </summary>
|
||||
public GameObject[] sonPages;
|
||||
public GameObject topBar;
|
||||
public string blueToothNameKeyWord;
|
||||
private List<BluetoothDevice> deviceList = new List<BluetoothDevice>();
|
||||
public Button backButton;
|
||||
public Button skipButton;
|
||||
public GameObject titleText;
|
||||
public GameObject scanningIcon;
|
||||
|
||||
/// <summary>设置指纹按钮</summary>
|
||||
public Button fingerprintSetupButton;
|
||||
/// <summary>跳过按钮</summary>
|
||||
public Button fingerprintSkipButton;
|
||||
/// <summary>引导录入指纹的提示框(用户制作,默认隐藏,设置指纹成功后显示)</summary>
|
||||
public GameObject fingerInitTip;
|
||||
void Start()
|
||||
{
|
||||
BluetoothManager.Instance.OnDeviceFound += OnDeviceFound;
|
||||
@ -55,12 +59,6 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
||||
}
|
||||
OnStopScanClick();
|
||||
BluetoothManager.Instance.ChangeAimMac("");
|
||||
topBar.SetActive(true);
|
||||
titleText.SetActive(false);
|
||||
backButton.onClick.RemoveAllListeners();
|
||||
backButton.onClick.AddListener(BackToHomePage);
|
||||
backButton.gameObject.SetActive(true);
|
||||
skipButton.gameObject.SetActive(false);
|
||||
foreach(GameObject g in sonPages)
|
||||
g.gameObject.SetActive(false);
|
||||
sonPages[0].SetActive(true);
|
||||
@ -124,7 +122,6 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
||||
{
|
||||
BluetoothManager.Instance.Disconnect();
|
||||
}
|
||||
topBar.SetActive(false);
|
||||
foreach(GameObject g in sonPages)
|
||||
g.gameObject.SetActive(false);
|
||||
sonPages[1].SetActive(true);
|
||||
@ -145,11 +142,8 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
||||
|
||||
public void ShowWifiPage()
|
||||
{
|
||||
topBar.SetActive(true);
|
||||
titleText.SetActive(true);
|
||||
backButton.gameObject.SetActive(false);
|
||||
//无法返回设备注册流程,清空返回操作
|
||||
UIManager.Instance.ClearBackAction();
|
||||
skipButton.gameObject.SetActive(true);
|
||||
foreach(GameObject g in sonPages)
|
||||
g.gameObject.SetActive(false);
|
||||
sonPages[3].SetActive(true);
|
||||
@ -170,7 +164,7 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
||||
wifiNameInput.text = wifiName ?? "";
|
||||
#endif
|
||||
wifiPasswordInput.text="";
|
||||
|
||||
UIManager.Instance.ClearBackAction();
|
||||
|
||||
}
|
||||
|
||||
@ -211,7 +205,7 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
||||
DataManager.Instance.deviceConfig.wifi_ssid = ssid;
|
||||
DataManager.Instance.deviceConfig.wifi_password = password;
|
||||
DataManager.Instance.SyncDeviceConfigToServer();
|
||||
ShowSuccessPage();
|
||||
ShowFingerprintPage();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -309,11 +303,10 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
||||
#endif
|
||||
public void ShowSuccessPage()
|
||||
{
|
||||
topBar.SetActive(false);
|
||||
foreach(GameObject g in sonPages)
|
||||
g.gameObject.SetActive(false);
|
||||
sonPages[2].SetActive(true);
|
||||
UIManager.Instance.RegisterBackAction(EnterConnectPage);
|
||||
UIManager.Instance.RegisterBackAction(BackToHomePage);
|
||||
}
|
||||
private void OnDeviceFound(BluetoothDevice device)
|
||||
{
|
||||
@ -352,7 +345,7 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
||||
{
|
||||
yield return new WaitForSeconds(0.5f);
|
||||
//OnQueryRegistrationClick();
|
||||
BandDevice();
|
||||
OnRegisterDeviceClick();
|
||||
}
|
||||
|
||||
private void OnConnectFailed(string address)
|
||||
@ -467,7 +460,7 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
||||
}
|
||||
else
|
||||
{
|
||||
BandDevice();
|
||||
OnRegisterDeviceClick();
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -485,28 +478,183 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
||||
{
|
||||
|
||||
string username = DataManager.Instance.userInfo.id;
|
||||
|
||||
|
||||
BLECommunicationManager.Instance.RegisterDevice(username, (success, message) =>
|
||||
{
|
||||
Loom.QueueOnMainThread(() =>
|
||||
{
|
||||
LoadingUI.Hide();
|
||||
ShowWifiPage();
|
||||
DataManager.Instance.SavaSelectedDeviceMac(nowDeviceMac);
|
||||
// if (success)
|
||||
// {
|
||||
// ShowWifiPage();
|
||||
// DataManager.Instance.SavaSelectedDeviceMac(nowDeviceMac);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// errorTip = "100070";
|
||||
// ShowErrorPage();
|
||||
// }
|
||||
if (success)
|
||||
{
|
||||
LoadingUI.Hide();
|
||||
// 蓝牙注册成功后,再调用服务器绑定接口
|
||||
BandDevice();
|
||||
}
|
||||
else
|
||||
{
|
||||
// 固件bug规避:恢复出厂后注册状态仍为已注册,0x02注册会失败,
|
||||
// 导致无法设置指纹;改用0x03用户登录流程
|
||||
Debug.Log($"设备注册失败: {message},尝试用户登录(0x03)");
|
||||
TryUserLoginAfterRegisterFailed(username);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 注册失败后尝试用户登录(0x03),规避固件恢复出厂后注册状态异常的问题
|
||||
/// </summary>
|
||||
private void TryUserLoginAfterRegisterFailed(string username)
|
||||
{
|
||||
// 连接设备时的Loading仍在显示,无需重复Show,避免计数不平衡导致Loading不消失
|
||||
BLECommunicationManager.Instance.UserLogin(username, (response) =>
|
||||
{
|
||||
Loom.QueueOnMainThread(() =>
|
||||
{
|
||||
if (response.IsSuccess)
|
||||
{
|
||||
Debug.Log($"用户登录成功,继续设备配置流程: {username}");
|
||||
LoadingUI.Hide();
|
||||
// 登录成功后,再调用服务器绑定接口
|
||||
BandDevice();
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError($"设备注册及用户登录均失败: {response.Status}");
|
||||
LoadingUI.Hide();
|
||||
errorTip = "100069";
|
||||
ShowErrorPage();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示指纹初始化页面(sonPages[4])
|
||||
/// 注册设备成功后展示,引导用户设置或跳过指纹
|
||||
/// </summary>
|
||||
public void ShowFingerprintPage()
|
||||
{
|
||||
// 未配置指纹页则直接进入WiFi配置,避免阻塞流程
|
||||
if (sonPages == null || sonPages.Length <= 4 || sonPages[4] == null)
|
||||
{
|
||||
ShowSuccessPage();
|
||||
return;
|
||||
}
|
||||
foreach (GameObject g in sonPages)
|
||||
g.gameObject.SetActive(false);
|
||||
if (fingerInitTip != null) fingerInitTip.SetActive(false);
|
||||
sonPages[4].SetActive(true);
|
||||
|
||||
// 绑定按钮(每次进入页面重新绑定,避免重复订阅)
|
||||
if (fingerprintSetupButton != null)
|
||||
{
|
||||
fingerprintSetupButton.onClick.RemoveAllListeners();
|
||||
fingerprintSetupButton.onClick.AddListener(OnSetupFingerprintClick);
|
||||
}
|
||||
if (fingerprintSkipButton != null)
|
||||
{
|
||||
fingerprintSkipButton.onClick.RemoveAllListeners();
|
||||
fingerprintSkipButton.onClick.AddListener(OnSkipFingerprintClick);
|
||||
}
|
||||
|
||||
// 返回键=返回上一步wifi设置
|
||||
UIManager.Instance.RegisterBackAction(ShowWifiPage);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置指纹按钮:开启该用户指纹并发起录入(逻辑与DeviceInfoPage一致)
|
||||
/// </summary>
|
||||
public void OnSetupFingerprintClick()
|
||||
{
|
||||
|
||||
string username = DataManager.Instance.userInfo.id;
|
||||
LoadingUI.Show();
|
||||
BLECommunicationManager.Instance.SetFingerprintEnable(username, true, (response) =>
|
||||
{
|
||||
Loom.QueueOnMainThread(() =>
|
||||
{
|
||||
if (!response.IsSuccess)
|
||||
{
|
||||
LoadingUI.Hide();
|
||||
ToastUI.Show("100321");
|
||||
return;
|
||||
}
|
||||
SetFingerprint();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发起指纹录入(与DeviceInfoPage.SetFingerprint一致,失败自动重试)
|
||||
/// </summary>
|
||||
private void SetFingerprint()
|
||||
{
|
||||
string username = DataManager.Instance.userInfo.id;
|
||||
BLECommunicationManager.Instance.StartFingerprintRecord(username, (response) =>
|
||||
{
|
||||
Loom.QueueOnMainThread(() =>
|
||||
{
|
||||
if (response.IsSuccess)
|
||||
{
|
||||
// 弹出提示框,引导用户去设备端录入指纹
|
||||
if (fingerInitTip != null)
|
||||
fingerInitTip.SetActive(true);
|
||||
LoadingUI.Hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
SetFingerprint();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 跳过按钮:关闭该用户指纹,进入WiFi配置(失败最多重试2次)
|
||||
/// </summary>
|
||||
public void OnSkipFingerprintClick()
|
||||
{
|
||||
string username = DataManager.Instance.userInfo.id;
|
||||
if (string.IsNullOrEmpty(username))
|
||||
{
|
||||
ToastUI.Show("100321");
|
||||
return;
|
||||
}
|
||||
LoadingUI.Show();
|
||||
TryDisableFingerprint(0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 尝试关闭指纹,失败自动重试最多2次(共3次尝试),之后无论结果如何都进入WiFi配置
|
||||
/// </summary>
|
||||
private void TryDisableFingerprint(int attempt)
|
||||
{
|
||||
string username = DataManager.Instance.userInfo.id;
|
||||
BLECommunicationManager.Instance.SetFingerprintEnable(username, false, (response) =>
|
||||
{
|
||||
Loom.QueueOnMainThread(() =>
|
||||
{
|
||||
if (response.IsSuccess)
|
||||
{
|
||||
LoadingUI.Hide();
|
||||
ShowSuccessPage();
|
||||
}
|
||||
else if (attempt < 2)
|
||||
{
|
||||
Debug.Log($"指纹关闭失败,准备第{attempt + 1}次重试");
|
||||
TryDisableFingerprint(attempt + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
ToastUI.Show("100321");
|
||||
LoadingUI.Hide();
|
||||
ShowSuccessPage();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 注销用户
|
||||
/// </summary>
|
||||
@ -534,7 +682,7 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
||||
UIManager.Instance.OpenPage(UIManager.PageName.homePage, null, true);
|
||||
}
|
||||
/// <summary>
|
||||
/// 绑定设备
|
||||
/// 绑定设备(服务器接口,在蓝牙注册/登录成功后调用)
|
||||
/// </summary>
|
||||
public async void BandDevice()
|
||||
{
|
||||
@ -556,7 +704,8 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
||||
onSuccess: (data) =>
|
||||
{
|
||||
Debug.Log($"绑定设备成功");
|
||||
OnRegisterDeviceClick();
|
||||
ShowWifiPage();
|
||||
DataManager.Instance.SavaSelectedDeviceMac(nowDeviceMac);
|
||||
}
|
||||
,
|
||||
onError: (code,message) =>
|
||||
|
||||
@ -238,17 +238,18 @@ namespace Kill.UI.Pages
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
|
||||
string[] parts = version.Split('.');
|
||||
|
||||
if (parts.Length >= 3 &&
|
||||
uint.TryParse(parts[0], out uint major) &&
|
||||
uint.TryParse(parts[1], out uint minor) &&
|
||||
uint.TryParse(parts[2], out uint patch))
|
||||
uint.TryParse(parts[0], out uint v0) &&
|
||||
uint.TryParse(parts[1], out uint v1) &&
|
||||
uint.TryParse(parts[2], out uint v2))
|
||||
{
|
||||
// 版本号格式:主版本.次版本.修订号 -> 32位整数
|
||||
return (major << 16) | (minor << 8) | patch;
|
||||
// 版本号格式:主版本.次版本.修订号(可含第4段)
|
||||
// 按每段2位十进制压缩,与设备端编码一致(如 00.00.01.05 -> 105)
|
||||
uint v3 = 0;
|
||||
if (parts.Length >= 4)
|
||||
uint.TryParse(parts[3], out v3);
|
||||
return v0 * 1000000 + v1 * 10000 + v2 * 100 + v3;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -86,6 +86,11 @@ namespace Kill.UI.Pages
|
||||
|
||||
float waitLockTime=0;
|
||||
private bool isLockSending; // 锁定/解锁指令发送中(防连点重入)
|
||||
/// <summary>
|
||||
/// 自动锁定时间(秒)
|
||||
/// <para>默认值:180秒</para>
|
||||
/// </summary>
|
||||
public int lockTime=180;
|
||||
void FixedUpdate()
|
||||
{
|
||||
if(!LockButtonPlane.activeSelf)
|
||||
@ -96,7 +101,7 @@ namespace Kill.UI.Pages
|
||||
{
|
||||
waitLockTime=0;
|
||||
}
|
||||
if(waitLockTime>=60)
|
||||
if(waitLockTime>=lockTime)
|
||||
LockButtonPlane.SetActive(true);
|
||||
}
|
||||
void OnApplicationPause(bool pause)
|
||||
|
||||
@ -1,24 +1,65 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using DG.Tweening;
|
||||
using Kill.Managers;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Kill.UI.Pages
|
||||
{
|
||||
/// <summary>
|
||||
/// 首页设备列表项 - 显示单个设备信息
|
||||
/// 支持左滑手势:左滑时菜单向左滑出并显示高斯模糊覆盖层,
|
||||
/// 滑动超过菜单宽度1/3松手则完整展开,否则缩回并隐藏模糊层
|
||||
/// </summary>
|
||||
public class HomePageDeviceItem : MonoBehaviour
|
||||
public class HomePageDeviceItem : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
|
||||
{
|
||||
public Text deviceNameText;
|
||||
public GameObject selectedIndicator;
|
||||
|
||||
/// <summary>菜单(子物体,锚点位于item最右侧),左滑时向左滑出</summary>
|
||||
public RectTransform menuRect;
|
||||
/// <summary>高斯模糊覆盖层(子物体,覆盖其他内容),菜单出现时显示,缩回时隐藏</summary>
|
||||
public GameObject blurOverlay;
|
||||
|
||||
// 当前设备信息
|
||||
public DeviceInfo deviceInfo;
|
||||
|
||||
/// <summary>当前展开菜单的item(全局仅允许一个菜单展开)</summary>
|
||||
private static HomePageDeviceItem openItem;
|
||||
|
||||
private float menuWidth;
|
||||
private float currentOffset;
|
||||
private float dragStartOffset;
|
||||
private bool isMenuOpen;
|
||||
private bool isDragging;
|
||||
private Vector3 menuInitPos;
|
||||
private Tweener tweener;
|
||||
private Button button;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
button = GetComponent<Button>();
|
||||
InitSwipe();
|
||||
}
|
||||
|
||||
void OnDisable()
|
||||
{
|
||||
// 防止拖拽中被禁用且未恢复的情况
|
||||
if (button != null) button.interactable = true;
|
||||
}
|
||||
|
||||
void OnDestroy()
|
||||
{
|
||||
// 销毁时释放全局展开引用
|
||||
if (openItem == this)
|
||||
openItem = null;
|
||||
}
|
||||
|
||||
public void InitDeviceItem(DeviceInfo device)
|
||||
{
|
||||
deviceInfo = device;
|
||||
deviceNameText.text = device.device_name;
|
||||
selectedIndicator.SetActive(false);
|
||||
InitSwipe();
|
||||
}
|
||||
|
||||
public void SetSelectedState(bool isSelected)
|
||||
@ -26,7 +67,110 @@ namespace Kill.UI.Pages
|
||||
// 设置选中状态
|
||||
selectedIndicator.SetActive(isSelected);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 初始化滑动数据:记录菜单初始位置、菜单宽度,重置为收起状态
|
||||
/// </summary>
|
||||
private void InitSwipe()
|
||||
{
|
||||
tweener?.Kill();
|
||||
if (menuRect == null) return;
|
||||
menuWidth = menuRect.sizeDelta.x;
|
||||
menuInitPos = menuRect.anchoredPosition3D;
|
||||
isMenuOpen = false;
|
||||
currentOffset = 0;
|
||||
ApplyMenuOffset(0);
|
||||
if (blurOverlay != null) blurOverlay.SetActive(false);
|
||||
}
|
||||
|
||||
public void OnBeginDrag(PointerEventData eventData)
|
||||
{
|
||||
if (menuRect == null || menuWidth <= 0) return;
|
||||
// 拖拽滑动时禁用按钮点击,避免与菜单滑动同时触发
|
||||
if (button != null) button.interactable = false;
|
||||
// 其他item的菜单展开时,先收起,保证全局只有一个菜单
|
||||
if (openItem != null && openItem != this)
|
||||
openItem.CloseMenu();
|
||||
isDragging = true;
|
||||
// 菜单开始出现,显示高斯模糊覆盖层
|
||||
if (blurOverlay != null) blurOverlay.SetActive(true);
|
||||
currentOffset = isMenuOpen ? -menuWidth : 0;
|
||||
dragStartOffset = currentOffset;
|
||||
ApplyMenuOffset(currentOffset);
|
||||
}
|
||||
|
||||
public void OnDrag(PointerEventData eventData)
|
||||
{
|
||||
if (!isDragging) return;
|
||||
// 累加位移并限制在 [-菜单宽度, 0],只允许左滑露出菜单
|
||||
currentOffset += eventData.delta.x;
|
||||
currentOffset = Mathf.Clamp(currentOffset, -menuWidth, 0);
|
||||
ApplyMenuOffset(currentOffset);
|
||||
}
|
||||
|
||||
public void OnEndDrag(PointerEventData eventData)
|
||||
{
|
||||
if (!isDragging) return;
|
||||
isDragging = false;
|
||||
// 恢复按钮点击
|
||||
if (button != null) button.interactable = true;
|
||||
// 右滑超过菜单宽度的1/5则直接缩回(方便关闭已展开的菜单)
|
||||
float dragDistance = currentOffset - dragStartOffset;
|
||||
if (dragDistance > menuWidth / 5f)
|
||||
{
|
||||
AnimateTo(0);
|
||||
return;
|
||||
}
|
||||
// 左滑展示超过菜单宽度的1/3则完整滑出,否则缩回
|
||||
float target = currentOffset < -menuWidth / 3f ? -menuWidth : 0;
|
||||
AnimateTo(target);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 收起菜单(供菜单按钮点击等外部调用)
|
||||
/// </summary>
|
||||
public void CloseMenu()
|
||||
{
|
||||
if (!isMenuOpen) return;
|
||||
AnimateTo(0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将菜单平移到指定偏移
|
||||
/// </summary>
|
||||
private void ApplyMenuOffset(float offset)
|
||||
{
|
||||
Vector3 pos = menuInitPos;
|
||||
pos.x += offset;
|
||||
menuRect.anchoredPosition3D = pos;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 平滑动画到目标偏移
|
||||
/// </summary>
|
||||
private void AnimateTo(float target)
|
||||
{
|
||||
tweener?.Kill();
|
||||
bool open = target < 0;
|
||||
if (open)
|
||||
{
|
||||
// 已有其他item的菜单展开时,先收起,保证全局只有一个菜单
|
||||
if (openItem != null && openItem != this)
|
||||
openItem.CloseMenu();
|
||||
openItem = this;
|
||||
}
|
||||
else if (openItem == this)
|
||||
{
|
||||
openItem = null;
|
||||
}
|
||||
isMenuOpen = open;
|
||||
if (!isMenuOpen && blurOverlay != null)
|
||||
blurOverlay.SetActive(false); // 菜单缩回时隐藏模糊层
|
||||
tweener = DOTween.To(() => currentOffset, v =>
|
||||
{
|
||||
currentOffset = v;
|
||||
ApplyMenuOffset(v);
|
||||
}, target, 0.25f).SetEase(Ease.OutCubic);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,7 +3,6 @@
|
||||
"com.unity.2d.sprite": "1.0.0",
|
||||
"com.unity.assetbundlebrowser": "https://github.com/Unity-Technologies/AssetBundles-Browser.git",
|
||||
"com.unity.ide.rider": "3.0.36",
|
||||
"com.unity.ide.visualstudio": "2.0.22",
|
||||
"com.unity.ide.vscode": "1.2.5",
|
||||
"com.unity.mobile.android-logcat": "1.4.7",
|
||||
"com.unity.test-framework": "1.1.33",
|
||||
|
||||
@ -29,15 +29,6 @@
|
||||
},
|
||||
"url": "https://packages.unity.cn"
|
||||
},
|
||||
"com.unity.ide.visualstudio": {
|
||||
"version": "2.0.22",
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {
|
||||
"com.unity.test-framework": "1.1.9"
|
||||
},
|
||||
"url": "https://packages.unity.cn"
|
||||
},
|
||||
"com.unity.ide.vscode": {
|
||||
"version": "1.2.5",
|
||||
"depth": 0,
|
||||
|
||||
@ -145,10 +145,9 @@ PlayerSettings:
|
||||
loadStoreDebugModeEnabled: 0
|
||||
visionOSBundleVersion: 1.0
|
||||
tvOSBundleVersion: 1.0
|
||||
bundleVersion: 1.0.4
|
||||
bundleVersion: 1.0.5
|
||||
preloadedAssets:
|
||||
- {fileID: 7756680987677051820, guid: 0488490a53b3eb2409be4727abdf829a, type: 2}
|
||||
- {fileID: 11400000, guid: d990b2e2bc28cca43863c18940a862a3, type: 2}
|
||||
- {fileID: 11400000, guid: ea0b832004c179d4aa69068be5863671, type: 2}
|
||||
metroInputSource: 0
|
||||
wsaTransparentSwapchain: 0
|
||||
m_HolographicPauseOnTrackingLoss: 1
|
||||
@ -818,7 +817,24 @@ PlayerSettings:
|
||||
webGLMemoryGeometricGrowthStep: 0.2
|
||||
webGLMemoryGeometricGrowthCap: 96
|
||||
webGLPowerPreference: 2
|
||||
scriptingDefineSymbols: {}
|
||||
scriptingDefineSymbols:
|
||||
Android: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
EmbeddedLinux: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
GameCoreScarlett: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
GameCoreXboxOne: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
LinuxHeadlessSimulation: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
Nintendo Switch: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
PS4: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
PS5: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
QNX: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
Stadia: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
Standalone: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
VisionOS: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
WebGL: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
Windows Store Apps: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
XboxOne: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
iPhone: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
tvOS: DOTWEEN;DOTWEEN_NOAUDIO;DOTWEEN_NOPHYSICS;DOTWEEN_NOPHYSICS2D;DOTWEEN_UITOOLKIT
|
||||
additionalCompilerArguments: {}
|
||||
platformArchitecture: {}
|
||||
scriptingBackend:
|
||||
|
||||