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
|
fileFormatVersion: 2
|
||||||
guid: 330f9ca32b7fd08488ef8131b8159b0a
|
guid: 926e9d8451272b6418789132ab7fdb87
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
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
|
fileFormatVersion: 2
|
||||||
guid: 3987a0ed4d25f954cb5743519a44d1c5
|
guid: 25027f2ec7ec6ec4aa0f9c69b7c690e7
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
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>
|
||||||
<member name="M:DG.Tweening.Core.Easing.EaseManager.Evaluate(DG.Tweening.Tween,System.Single,System.Single,System.Single,System.Single)">
|
<member name="M:DG.Tweening.Core.Easing.EaseManager.Evaluate(DG.Tweening.Tween,System.Single,System.Single,System.Single,System.Single)">
|
||||||
<summary>
|
<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>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:DG.Tweening.Core.Easing.EaseManager.Evaluate(DG.Tweening.Ease,DG.Tweening.EaseFunction,System.Single,System.Single,System.Single,System.Single)">
|
<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
|
Used to dispatch commands that need to be captured externally, usually by Modules
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</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)">
|
<member name="M:DG.Tweening.Core.DOTweenUtils.Vector3FromAngle(System.Single,System.Single)">
|
||||||
<summary>
|
<summary>
|
||||||
Returns a Vector3 with z = 0
|
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).
|
<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>
|
Deactivate this if you want to avoid gizmos overhead while in Unity Editor</summary>
|
||||||
</member>
|
</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">
|
<member name="F:DG.Tweening.DOTween.debugMode">
|
||||||
<summary>If TRUE activates various debug options</summary>
|
<summary>If TRUE activates various debug options</summary>
|
||||||
</member>
|
</member>
|
||||||
@ -1000,7 +1020,7 @@
|
|||||||
<summary>
|
<summary>
|
||||||
Tweens a virtual float.
|
Tweens a virtual float.
|
||||||
You can add regular settings to the generated tween,
|
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>
|
</summary>
|
||||||
<param name="from">The value to start from</param>
|
<param name="from">The value to start from</param>
|
||||||
<param name="to">The value to tween to</param>
|
<param name="to">The value to tween to</param>
|
||||||
@ -1011,18 +1031,29 @@
|
|||||||
<summary>
|
<summary>
|
||||||
Tweens a virtual int.
|
Tweens a virtual int.
|
||||||
You can add regular settings to the generated tween,
|
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>
|
</summary>
|
||||||
<param name="from">The value to start from</param>
|
<param name="from">The value to start from</param>
|
||||||
<param name="to">The value to tween to</param>
|
<param name="to">The value to tween to</param>
|
||||||
<param name="duration">The duration of the tween</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>
|
<param name="onVirtualUpdate">A callback which must accept a parameter of type int, called at each update</param>
|
||||||
</member>
|
</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})">
|
<member name="M:DG.Tweening.DOVirtual.Vector3(UnityEngine.Vector3,UnityEngine.Vector3,System.Single,DG.Tweening.TweenCallback{UnityEngine.Vector3})">
|
||||||
<summary>
|
<summary>
|
||||||
Tweens a virtual Vector3.
|
Tweens a virtual Vector3.
|
||||||
You can add regular settings to the generated tween,
|
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>
|
</summary>
|
||||||
<param name="from">The value to start from</param>
|
<param name="from">The value to start from</param>
|
||||||
<param name="to">The value to tween to</param>
|
<param name="to">The value to tween to</param>
|
||||||
@ -1033,7 +1064,7 @@
|
|||||||
<summary>
|
<summary>
|
||||||
Tweens a virtual Color.
|
Tweens a virtual Color.
|
||||||
You can add regular settings to the generated tween,
|
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>
|
</summary>
|
||||||
<param name="from">The value to start from</param>
|
<param name="from">The value to start from</param>
|
||||||
<param name="to">The value to tween to</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,
|
<param name="withCallbacks">For Sequences only: if TRUE also internal Sequence callbacks will be fired,
|
||||||
otherwise they will be ignored</param>
|
otherwise they will be ignored</param>
|
||||||
</member>
|
</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)">
|
<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>
|
<summary>Flips the direction of this tween (backwards if it was going forward or viceversa)</summary>
|
||||||
</member>
|
</member>
|
||||||
@ -1525,10 +1562,23 @@
|
|||||||
<member name="M:DG.Tweening.TweenExtensions.IsBackwards(DG.Tweening.Tween)">
|
<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>
|
<summary>Returns TRUE if this tween was reversed and is set to go backwards</summary>
|
||||||
</member>
|
</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)">
|
<member name="M:DG.Tweening.TweenExtensions.IsComplete(DG.Tweening.Tween)">
|
||||||
<summary>Returns TRUE if the tween is complete
|
<summary>Returns TRUE if the tween is complete
|
||||||
(silently fails and returns FALSE if the tween has been killed)</summary>
|
(silently fails and returns FALSE if the tween has been killed)</summary>
|
||||||
</member>
|
</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)">
|
<member name="M:DG.Tweening.TweenExtensions.IsInitialized(DG.Tweening.Tween)">
|
||||||
<summary>Returns TRUE if this tween has been initialized</summary>
|
<summary>Returns TRUE if this tween has been initialized</summary>
|
||||||
</member>
|
</member>
|
||||||
@ -2655,7 +2705,7 @@
|
|||||||
<param name="t">The tween to prepend</param>
|
<param name="t">The tween to prepend</param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:DG.Tweening.TweenSettingsExtensions.Join(DG.Tweening.Sequence,DG.Tweening.Tween)">
|
<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.
|
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>
|
Has no effect if the Sequence has already started</summary>
|
||||||
</member>
|
</member>
|
||||||
@ -2686,6 +2736,12 @@
|
|||||||
Has no effect if the Sequence has already started</summary>
|
Has no effect if the Sequence has already started</summary>
|
||||||
<param name="callback">The callback to prepend</param>
|
<param name="callback">The callback to prepend</param>
|
||||||
</member>
|
</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)">
|
<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,
|
<summary>Inserts the given callback at the given time position in the Sequence,
|
||||||
automatically adding an interval if needed.
|
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>
|
<name>DOTweenEditor</name>
|
||||||
</assembly>
|
</assembly>
|
||||||
<members>
|
<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)">
|
<member name="M:DG.DOTweenEditor.DOTweenEditorPreview.Start(System.Action)">
|
||||||
<summary>
|
<summary>
|
||||||
Starts the update loop of tween in the editor. Has no effect during playMode.
|
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">
|
<member name="F:DG.DOTweenEditor.EditorVersion.MinorVersion">
|
||||||
<summary>First minor version (ex: in 2018.1 it would be 1)</summary>
|
<summary>First minor version (ex: in 2018.1 it would be 1)</summary>
|
||||||
</member>
|
</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)">
|
<member name="M:DG.DOTweenEditor.EditorUtils.SetEditorTexture(UnityEngine.Texture2D,UnityEngine.FilterMode,System.Int32)">
|
||||||
<summary>
|
<summary>
|
||||||
Checks that the given editor texture use the correct import settings,
|
Checks that the given editor texture use the correct import settings,
|
||||||
@ -103,8 +152,38 @@
|
|||||||
</member>
|
</member>
|
||||||
<member name="T:DG.DOTweenEditor.DOTweenDefines">
|
<member name="T:DG.DOTweenEditor.DOTweenDefines">
|
||||||
<summary>
|
<summary>
|
||||||
Not used as menu item anymore, but as a utiity function
|
Not used as menu item anymore, but as a utility function
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</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>
|
</members>
|
||||||
</doc>
|
</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
|
fileFormatVersion: 2
|
||||||
guid: 5fdf9c51a08593c41a2b7ace101adb0d
|
guid: 61521df2e071645488ba3d05e49289ae
|
||||||
|
timeCreated: 1602317874
|
||||||
|
licenseType: Pro
|
||||||
TextureImporter:
|
TextureImporter:
|
||||||
fileIDToRecycleName: {}
|
fileIDToRecycleName: {}
|
||||||
externalObjects: {}
|
serializedVersion: 4
|
||||||
serializedVersion: 9
|
|
||||||
mipmaps:
|
mipmaps:
|
||||||
mipMapMode: 0
|
mipMapMode: 0
|
||||||
enableMipMap: 1
|
enableMipMap: 1
|
||||||
@ -11,8 +12,6 @@ TextureImporter:
|
|||||||
linearTexture: 0
|
linearTexture: 0
|
||||||
fadeOut: 0
|
fadeOut: 0
|
||||||
borderMipMap: 0
|
borderMipMap: 0
|
||||||
mipMapsPreserveCoverage: 0
|
|
||||||
alphaTestReferenceValue: 0.5
|
|
||||||
mipMapFadeDistanceStart: 1
|
mipMapFadeDistanceStart: 1
|
||||||
mipMapFadeDistanceEnd: 3
|
mipMapFadeDistanceEnd: 3
|
||||||
bumpmap:
|
bumpmap:
|
||||||
@ -21,8 +20,6 @@ TextureImporter:
|
|||||||
heightScale: 0.25
|
heightScale: 0.25
|
||||||
normalMapFilter: 0
|
normalMapFilter: 0
|
||||||
isReadable: 0
|
isReadable: 0
|
||||||
streamingMipmaps: 0
|
|
||||||
streamingMipmapsPriority: 0
|
|
||||||
grayScaleToAlpha: 0
|
grayScaleToAlpha: 0
|
||||||
generateCubemap: 6
|
generateCubemap: 6
|
||||||
cubemapConvolution: 0
|
cubemapConvolution: 0
|
||||||
@ -30,13 +27,10 @@ TextureImporter:
|
|||||||
textureFormat: 1
|
textureFormat: 1
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
textureSettings:
|
textureSettings:
|
||||||
serializedVersion: 2
|
|
||||||
filterMode: -1
|
filterMode: -1
|
||||||
aniso: -1
|
aniso: -1
|
||||||
mipBias: -100
|
mipBias: -1
|
||||||
wrapU: -1
|
wrapMode: -1
|
||||||
wrapV: -1
|
|
||||||
wrapW: -1
|
|
||||||
nPOTScale: 1
|
nPOTScale: 1
|
||||||
lightmap: 0
|
lightmap: 0
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
@ -45,44 +39,30 @@ TextureImporter:
|
|||||||
spriteMeshType: 1
|
spriteMeshType: 1
|
||||||
alignment: 0
|
alignment: 0
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
spritePixelsToUnits: 100
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
spritePixelsToUnits: 100
|
||||||
alphaUsage: 1
|
alphaUsage: 1
|
||||||
alphaIsTransparency: 0
|
alphaIsTransparency: 0
|
||||||
spriteTessellationDetail: -1
|
spriteTessellationDetail: -1
|
||||||
textureType: 0
|
textureType: 0
|
||||||
textureShape: 1
|
textureShape: 1
|
||||||
singleChannelComponent: 0
|
|
||||||
maxTextureSizeSet: 0
|
maxTextureSizeSet: 0
|
||||||
compressionQualitySet: 0
|
compressionQualitySet: 0
|
||||||
textureFormatSet: 0
|
textureFormatSet: 0
|
||||||
platformSettings:
|
platformSettings:
|
||||||
- serializedVersion: 2
|
- buildTarget: DefaultTexturePlatform
|
||||||
buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
textureCompression: 1
|
textureCompression: 1
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
overridden: 0
|
overridden: 0
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
spriteSheet:
|
spriteSheet:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites: []
|
sprites: []
|
||||||
outline: []
|
outline: []
|
||||||
physicsShape: []
|
|
||||||
bones: []
|
|
||||||
spriteID:
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
spritePackingTag:
|
spritePackingTag:
|
||||||
pSDRemoveMatte: 0
|
|
||||||
pSDShowRemoveMatteOption: 0
|
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
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
|
// Created: 2018/07/13
|
||||||
|
|
||||||
#if false // MODULE_MARKER
|
#if !DOTWEEN_NOAUDIO // MODULE_MARKER
|
||||||
using System;
|
using System;
|
||||||
using DG.Tweening.Core;
|
using DG.Tweening.Core;
|
||||||
using DG.Tweening.Plugins.Options;
|
using DG.Tweening.Plugins.Options;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
#if UNITY_5 || UNITY_2017_1_OR_NEWER
|
|
||||||
using UnityEngine.Audio; // Required for AudioMixer
|
using UnityEngine.Audio; // Required for AudioMixer
|
||||||
#endif
|
|
||||||
|
|
||||||
#pragma warning disable 1591
|
#pragma warning disable 1591
|
||||||
namespace DG.Tweening
|
namespace DG.Tweening
|
||||||
@ -43,8 +41,7 @@ namespace DG.Tweening
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#if UNITY_5 || UNITY_2017_1_OR_NEWER
|
#region AudioMixer
|
||||||
#region AudioMixer (Unity 5 or Newer)
|
|
||||||
|
|
||||||
/// <summary>Tweens an AudioMixer's exposed float to the given value.
|
/// <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.
|
/// 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
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
#endif
|
|
||||||
|
|
||||||
#endregion
|
#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;
|
using UnityEngine;
|
||||||
|
|
||||||
#if false || EPO_DOTWEEN // MODULE_MARKER
|
#if DOTWEEN_EPO || EPO_DOTWEEN // MODULE_MARKER
|
||||||
|
|
||||||
using EPOOutline;
|
using EPOOutline;
|
||||||
using DG.Tweening.Plugins.Options;
|
using DG.Tweening.Plugins.Options;
|
||||||
@ -1,7 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 37abaf6d1b72358458c65c2cc8d6d241
|
guid: e944529dcaee98f4e9498d80e541d93e
|
||||||
|
timeCreated: 1602593330
|
||||||
|
licenseType: Pro
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
defaultReferences: []
|
defaultReferences: []
|
||||||
executionOrder: 0
|
executionOrder: 0
|
||||||
@ -1,7 +1,7 @@
|
|||||||
// Author: Daniele Giardini - http://www.demigiant.com
|
// Author: Daniele Giardini - http://www.demigiant.com
|
||||||
// Created: 2018/07/13
|
// Created: 2018/07/13
|
||||||
|
|
||||||
#if false // MODULE_MARKER
|
#if !DOTWEEN_NOPHYSICS // MODULE_MARKER
|
||||||
using System;
|
using System;
|
||||||
using DG.Tweening.Core;
|
using DG.Tweening.Core;
|
||||||
using DG.Tweening.Core.Enums;
|
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
|
// 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 System;
|
||||||
using DG.Tweening.Core;
|
using DG.Tweening.Core;
|
||||||
using DG.Tweening.Plugins;
|
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
|
// Author: Daniele Giardini - http://www.demigiant.com
|
||||||
// Created: 2018/07/13
|
// 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 System;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using DG.Tweening.Core;
|
using DG.Tweening.Core;
|
||||||
@ -1,11 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 338cfef648e3485499665176aa8be581
|
guid: 188918ab119d93148aa0de59ccf5286b
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
defaultReferences: []
|
defaultReferences: []
|
||||||
executionOrder: 0
|
executionOrder: 0
|
||||||
icon: {instanceID: 0}
|
icon: {instanceID: 0}
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -1,7 +1,7 @@
|
|||||||
// Author: Daniele Giardini - http://www.demigiant.com
|
// Author: Daniele Giardini - http://www.demigiant.com
|
||||||
// Created: 2018/07/13
|
// 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;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
@ -1,11 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: a35cdb54fce75be43ba09cccdc27b9a9
|
guid: a060394c03331a64392db53a10e7f2d1
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
defaultReferences: []
|
defaultReferences: []
|
||||||
executionOrder: 0
|
executionOrder: 0
|
||||||
icon: {instanceID: 0}
|
icon: {instanceID: 0}
|
||||||
userData:
|
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
|
fileFormatVersion: 2
|
||||||
guid: d67b8f0da04241e45879a134cf7d3f8a
|
guid: 0c0a6d2683fb84e4193f2aa968264881
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
@ -18,9 +18,6 @@ namespace DG.Tweening
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static class DOTweenModuleUnityVersion
|
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
|
#region Material
|
||||||
|
|
||||||
/// <summary>Tweens a Material's color using the given gradient
|
/// <summary>Tweens a Material's color using the given gradient
|
||||||
@ -74,12 +71,6 @@ namespace DG.Tweening
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#endregion
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if UNITY_5_3_OR_NEWER || UNITY_2017_1_OR_NEWER
|
|
||||||
#region Unity 5.3 or Newer
|
|
||||||
|
|
||||||
#region CustomYieldInstructions
|
#region CustomYieldInstructions
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -172,9 +163,6 @@ namespace DG.Tweening
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#endregion
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if UNITY_2018_1_OR_NEWER
|
#if UNITY_2018_1_OR_NEWER
|
||||||
#region Unity 2018.1 or Newer
|
#region Unity 2018.1 or Newer
|
||||||
|
|
||||||
@ -320,7 +308,6 @@ namespace DG.Tweening
|
|||||||
// ███ CLASSES █████████████████████████████████████████████████████████████████████████████████████████████████████████
|
// ███ CLASSES █████████████████████████████████████████████████████████████████████████████████████████████████████████
|
||||||
// █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
|
// █████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
|
||||||
|
|
||||||
#if UNITY_5_3_OR_NEWER || UNITY_2017_1_OR_NEWER
|
|
||||||
public static class DOTweenCYInstruction
|
public static class DOTweenCYInstruction
|
||||||
{
|
{
|
||||||
public class WaitForCompletion : CustomYieldInstruction
|
public class WaitForCompletion : CustomYieldInstruction
|
||||||
@ -399,5 +386,4 @@ namespace DG.Tweening
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
@ -1,11 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: f3b5c12e7cad64c42bf1b4d1e129d093
|
guid: 63c02322328255542995bd02b47b0457
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
defaultReferences: []
|
defaultReferences: []
|
||||||
executionOrder: 0
|
executionOrder: 0
|
||||||
icon: {instanceID: 0}
|
icon: {instanceID: 0}
|
||||||
userData:
|
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
|
// Created: 2018/07/13
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
@ -12,7 +12,7 @@ using DG.Tweening.Plugins.Options;
|
|||||||
namespace DG.Tweening
|
namespace DG.Tweening
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Utility functions that deal with available Modules.
|
/// Utility functions that deal with available Modules and rewrite them.
|
||||||
/// Modules defines:
|
/// Modules defines:
|
||||||
/// - DOTAUDIO
|
/// - DOTAUDIO
|
||||||
/// - DOTPHYSICS
|
/// - DOTPHYSICS
|
||||||
@ -25,13 +25,16 @@ namespace DG.Tweening
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static class DOTweenModuleUtils
|
public static class DOTweenModuleUtils
|
||||||
{
|
{
|
||||||
|
#pragma warning disable UDR0001
|
||||||
static bool _initialized;
|
static bool _initialized;
|
||||||
|
#pragma warning restore UDR0001
|
||||||
|
|
||||||
#region Reflection
|
#region Reflection
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Called via Reflection by DOTweenComponent on Awake
|
/// Called via Reflection by DOTweenComponent on Awake
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
#pragma warning disable UDR0001
|
||||||
#if UNITY_2018_1_OR_NEWER
|
#if UNITY_2018_1_OR_NEWER
|
||||||
[UnityEngine.Scripting.Preserve]
|
[UnityEngine.Scripting.Preserve]
|
||||||
#endif
|
#endif
|
||||||
@ -40,16 +43,20 @@ namespace DG.Tweening
|
|||||||
if (_initialized) return;
|
if (_initialized) return;
|
||||||
|
|
||||||
_initialized = true;
|
_initialized = true;
|
||||||
|
DOTweenExternalCommand.SetOrientationOnPath -= Physics.SetOrientationOnPath;
|
||||||
DOTweenExternalCommand.SetOrientationOnPath += Physics.SetOrientationOnPath;
|
DOTweenExternalCommand.SetOrientationOnPath += Physics.SetOrientationOnPath;
|
||||||
|
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
#if UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_5 || UNITY_2017_1
|
#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;
|
UnityEditor.EditorApplication.playmodeStateChanged += PlaymodeStateChanged;
|
||||||
#else
|
#else
|
||||||
|
UnityEditor.EditorApplication.playModeStateChanged -= PlaymodeStateChanged;
|
||||||
UnityEditor.EditorApplication.playModeStateChanged += PlaymodeStateChanged;
|
UnityEditor.EditorApplication.playModeStateChanged += PlaymodeStateChanged;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#pragma warning restore UDR0001
|
||||||
|
|
||||||
#if UNITY_2018_1_OR_NEWER
|
#if UNITY_2018_1_OR_NEWER
|
||||||
#pragma warning disable
|
#pragma warning disable
|
||||||
@ -87,7 +94,7 @@ namespace DG.Tweening
|
|||||||
// Called via DOTweenExternalCommand callback
|
// Called via DOTweenExternalCommand callback
|
||||||
public static void SetOrientationOnPath(PathOptions options, Tween t, Quaternion newRot, Transform trans)
|
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;
|
if (options.isRigidbody) ((Rigidbody)t.target).rotation = newRot;
|
||||||
else trans.rotation = newRot;
|
else trans.rotation = newRot;
|
||||||
#else
|
#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
|
// Returns FALSE if the DOTween's Physics2D Module is disabled, or if there's no Rigidbody2D attached
|
||||||
public static bool HasRigidbody2D(Component target)
|
public static bool HasRigidbody2D(Component target)
|
||||||
{
|
{
|
||||||
#if false // PHYSICS2D_MARKER
|
#if !DOTWEEN_NOPHYSICS2D // PHYSICS2D_MARKER
|
||||||
return target.GetComponent<Rigidbody2D>() != null;
|
return target.GetComponent<Rigidbody2D>() != null;
|
||||||
#else
|
#else
|
||||||
return false;
|
return false;
|
||||||
@ -115,7 +122,7 @@ namespace DG.Tweening
|
|||||||
#endif
|
#endif
|
||||||
public static bool HasRigidbody(Component target)
|
public static bool HasRigidbody(Component target)
|
||||||
{
|
{
|
||||||
#if false // PHYSICS_MARKER
|
#if !DOTWEEN_NOPHYSICS // PHYSICS_MARKER
|
||||||
return target.GetComponent<Rigidbody>() != null;
|
return target.GetComponent<Rigidbody>() != null;
|
||||||
#else
|
#else
|
||||||
return false;
|
return false;
|
||||||
@ -131,7 +138,7 @@ namespace DG.Tweening
|
|||||||
){
|
){
|
||||||
TweenerCore<Vector3, Path, PathOptions> t = null;
|
TweenerCore<Vector3, Path, PathOptions> t = null;
|
||||||
bool rBodyFoundAndTweened = false;
|
bool rBodyFoundAndTweened = false;
|
||||||
#if false // PHYSICS_MARKER
|
#if !DOTWEEN_NOPHYSICS // PHYSICS_MARKER
|
||||||
if (tweenRigidbody) {
|
if (tweenRigidbody) {
|
||||||
Rigidbody rBody = target.GetComponent<Rigidbody>();
|
Rigidbody rBody = target.GetComponent<Rigidbody>();
|
||||||
if (rBody != null) {
|
if (rBody != null) {
|
||||||
@ -142,7 +149,7 @@ namespace DG.Tweening
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if false // PHYSICS2D_MARKER
|
#if !DOTWEEN_NOPHYSICS2D // PHYSICS2D_MARKER
|
||||||
if (!rBodyFoundAndTweened && tweenRigidbody) {
|
if (!rBodyFoundAndTweened && tweenRigidbody) {
|
||||||
Rigidbody2D rBody2D = target.GetComponent<Rigidbody2D>();
|
Rigidbody2D rBody2D = target.GetComponent<Rigidbody2D>();
|
||||||
if (rBody2D != null) {
|
if (rBody2D != null) {
|
||||||
@ -1,11 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: a4aa6727737229b4391ced2aef935944
|
guid: 7bcaf917d9cf5b84090421a5a2abe42e
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
defaultReferences: []
|
defaultReferences: []
|
||||||
executionOrder: 0
|
executionOrder: 0
|
||||||
icon: {instanceID: 0}
|
icon: {instanceID: 0}
|
||||||
userData:
|
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!!! /////////////////////////////////////////////
|
// IMPORTANT!!! /////////////////////////////////////////////
|
||||||
// Upgrading DOTween from versions older than 1.2.000 ///////
|
// Upgrading DOTween from versions older than 1.2.815 ///////
|
||||||
// (or DOTween Pro older than 1.0.000) //////////////////////
|
// 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 (Plugins/Demigiant), overwriting old files. A lot of errors will appear but don't worry.
|
||||||
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) without entering safe mode. This is fundamental: skipping this step will cause a bloodbath
|
||||||
2) Close and reopen Unity (and your project). 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
|
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)
|
4) From the Add/Remove Modules panel that opens, activate/deactivate Modules for Unity systems and for external assets (Pro version only)
|
||||||
|
|
||||||
|
|
||||||
// GET STARTED //////////////////////////////////////////////
|
// 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.
|
- 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 website (documentation, examples, etc): http://dotween.demigiant.com
|
||||||
DOTween license: http://dotween.demigiant.com/license.php
|
DOTween license: http://dotween.demigiant.com/license.php
|
||||||
DOTween repository (Google Code): https://code.google.com/p/dotween/
|
DOTween repository (GitHub): https://github.com/Demigiant/dotween
|
||||||
Demigiant website (documentation, examples, etc): http://www.demigiant.com
|
Demigiant website: http://www.demigiant.com
|
||||||
|
|
||||||
// NOTES //////////////////////////////////////////////////////
|
// 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
|
fileFormatVersion: 2
|
||||||
guid: 62fa846b7e1a1c748a8b980198eb83d6
|
guid: 5ceb9286af053154686bd93085f8d8c4
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
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
|
fileFormatVersion: 2
|
||||||
guid: 25b7121e7bb16be42bfa6c11531ddbfb
|
guid: ea0b832004c179d4aa69068be5863671
|
||||||
folderAsset: yes
|
NativeFormatImporter:
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
||||||
@ -1557,17 +1557,17 @@
|
|||||||
{
|
{
|
||||||
"key": "100312",
|
"key": "100312",
|
||||||
"zh": "密码长度6位,仅允许使用数字字符",
|
"zh": "密码长度6位,仅允许使用数字字符",
|
||||||
"en": "Fixed 6-digit numeric password only."
|
"en": "Fixed 6-digit numeric password only"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "100313",
|
"key": "100313",
|
||||||
"zh": "密码长度8-16位,不能有空格;",
|
"zh": "密码长度8-16位,不能有空格",
|
||||||
"en": "8–16 characters, no spaces. "
|
"en": "8–16 characters, no spaces"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "100314",
|
"key": "100314",
|
||||||
"zh": "字符格式应至少包括大写字母、小写字母、数字、特殊字符的三种;",
|
"zh": "字符格式应至少包括大写字母、小写字母、数字、特殊字符的三种",
|
||||||
"en": "Include at least 3 types: uppercase, lowercase, digits, special chars. No 3+ consecutive or repeated digits/letters."
|
"en": "Include at least 3 types: uppercase, lowercase, digits, special chars. No 3+ consecutive or repeated digits/letters"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "100315",
|
"key": "100315",
|
||||||
@ -1576,8 +1576,8 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "100316",
|
"key": "100316",
|
||||||
"zh": "密码不能是登录名的一部分。",
|
"zh": "密码不能是登录名的一部分",
|
||||||
"en": "Cannot be part of login name."
|
"en": "Cannot be part of login name"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "100317",
|
"key": "100317",
|
||||||
@ -1598,6 +1598,31 @@
|
|||||||
"key": "100320",
|
"key": "100320",
|
||||||
"zh": "*仅支持 2.4GHz Wi-Fi",
|
"zh": "*仅支持 2.4GHz Wi-Fi",
|
||||||
"en": "*Only 2.4GHz Wi-Fi is supported"
|
"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
|
fileFormatVersion: 2
|
||||||
guid: 0d0559d86cf94a941874092ddf151402
|
guid: 35f0ab632fde13c45bc9625197cf542f
|
||||||
TextureImporter:
|
TextureImporter:
|
||||||
fileIDToRecycleName: {}
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 9
|
serializedVersion: 13
|
||||||
mipmaps:
|
mipmaps:
|
||||||
mipMapMode: 0
|
mipMapMode: 0
|
||||||
enableMipMap: 0
|
enableMipMap: 0
|
||||||
@ -20,9 +20,12 @@ TextureImporter:
|
|||||||
externalNormalMap: 0
|
externalNormalMap: 0
|
||||||
heightScale: 0.25
|
heightScale: 0.25
|
||||||
normalMapFilter: 0
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
isReadable: 0
|
isReadable: 0
|
||||||
streamingMipmaps: 0
|
streamingMipmaps: 0
|
||||||
streamingMipmapsPriority: 0
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
grayScaleToAlpha: 0
|
grayScaleToAlpha: 0
|
||||||
generateCubemap: 6
|
generateCubemap: 6
|
||||||
cubemapConvolution: 0
|
cubemapConvolution: 0
|
||||||
@ -33,14 +36,14 @@ TextureImporter:
|
|||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
filterMode: 1
|
filterMode: 1
|
||||||
aniso: 1
|
aniso: 1
|
||||||
mipBias: -100
|
mipBias: 0
|
||||||
wrapU: 1
|
wrapU: 1
|
||||||
wrapV: 1
|
wrapV: 1
|
||||||
wrapW: 1
|
wrapW: 0
|
||||||
nPOTScale: 0
|
nPOTScale: 0
|
||||||
lightmap: 0
|
lightmap: 0
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
spriteMode: 0
|
spriteMode: 1
|
||||||
spriteExtrude: 1
|
spriteExtrude: 1
|
||||||
spriteMeshType: 1
|
spriteMeshType: 1
|
||||||
alignment: 0
|
alignment: 0
|
||||||
@ -51,16 +54,22 @@ TextureImporter:
|
|||||||
alphaUsage: 1
|
alphaUsage: 1
|
||||||
alphaIsTransparency: 1
|
alphaIsTransparency: 1
|
||||||
spriteTessellationDetail: -1
|
spriteTessellationDetail: -1
|
||||||
textureType: 2
|
textureType: 8
|
||||||
textureShape: 1
|
textureShape: 1
|
||||||
singleChannelComponent: 0
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
maxTextureSizeSet: 0
|
maxTextureSizeSet: 0
|
||||||
compressionQualitySet: 0
|
compressionQualitySet: 0
|
||||||
textureFormatSet: 0
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
platformSettings:
|
platformSettings:
|
||||||
- serializedVersion: 2
|
- serializedVersion: 3
|
||||||
buildTarget: DefaultTexturePlatform
|
buildTarget: DefaultTexturePlatform
|
||||||
maxTextureSize: 512
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
resizeAlgorithm: 0
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
textureCompression: 1
|
textureCompression: 1
|
||||||
@ -68,21 +77,51 @@ TextureImporter:
|
|||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
overridden: 0
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
androidETC2FallbackOverride: 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:
|
spriteSheet:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
sprites: []
|
sprites: []
|
||||||
outline: []
|
outline: []
|
||||||
physicsShape: []
|
physicsShape: []
|
||||||
bones: []
|
bones: []
|
||||||
spriteID:
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
vertices: []
|
vertices: []
|
||||||
indices:
|
indices:
|
||||||
edges: []
|
edges: []
|
||||||
weights: []
|
weights: []
|
||||||
spritePackingTag:
|
secondaryTextures: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
pSDRemoveMatte: 0
|
pSDRemoveMatte: 0
|
||||||
pSDShowRemoveMatteOption: 0
|
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
||||||
@ -328,6 +328,127 @@ Animation:
|
|||||||
m_PlayAutomatically: 1
|
m_PlayAutomatically: 1
|
||||||
m_AnimatePhysics: 0
|
m_AnimatePhysics: 0
|
||||||
m_CullingType: 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
|
--- !u!1 &250314515808294985
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -2433,6 +2554,127 @@ MonoBehaviour:
|
|||||||
m_FillOrigin: 0
|
m_FillOrigin: 0
|
||||||
m_UseSpriteMesh: 0
|
m_UseSpriteMesh: 0
|
||||||
m_PixelsPerUnitMultiplier: 1
|
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
|
--- !u!1 &1485358923400520455
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -4601,6 +4843,80 @@ Animation:
|
|||||||
m_PlayAutomatically: 0
|
m_PlayAutomatically: 0
|
||||||
m_AnimatePhysics: 0
|
m_AnimatePhysics: 0
|
||||||
m_CullingType: 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
|
--- !u!1 &2275775934727828550
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -6366,6 +6682,7 @@ GameObject:
|
|||||||
- component: {fileID: 7325526453315403031}
|
- component: {fileID: 7325526453315403031}
|
||||||
- component: {fileID: 8538965056443010729}
|
- component: {fileID: 8538965056443010729}
|
||||||
- component: {fileID: 7161548608695394483}
|
- component: {fileID: 7161548608695394483}
|
||||||
|
- component: {fileID: 5889520335138296328}
|
||||||
m_Layer: 5
|
m_Layer: 5
|
||||||
m_Name: "\u4E00\u4E2A\u8BBE\u5907"
|
m_Name: "\u4E00\u4E2A\u8BBE\u5907"
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@ -6388,6 +6705,8 @@ RectTransform:
|
|||||||
- {fileID: 281041426051862978}
|
- {fileID: 281041426051862978}
|
||||||
- {fileID: 1121656133766426305}
|
- {fileID: 1121656133766426305}
|
||||||
- {fileID: 6744263492203110024}
|
- {fileID: 6744263492203110024}
|
||||||
|
- {fileID: 8021894877957941971}
|
||||||
|
- {fileID: 7844458031469168773}
|
||||||
m_Father: {fileID: 5019459736209175623}
|
m_Father: {fileID: 5019459736209175623}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
@ -6447,6 +6766,8 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
deviceNameText: {fileID: 1001116305648498082}
|
deviceNameText: {fileID: 1001116305648498082}
|
||||||
selectedIndicator: {fileID: 1493165828582188157}
|
selectedIndicator: {fileID: 1493165828582188157}
|
||||||
|
menuRect: {fileID: 7844458031469168773}
|
||||||
|
blurOverlay: {fileID: 7004732522669765365}
|
||||||
deviceInfo:
|
deviceInfo:
|
||||||
device_sn:
|
device_sn:
|
||||||
ble_mac:
|
ble_mac:
|
||||||
@ -6507,6 +6828,19 @@ MonoBehaviour:
|
|||||||
m_OnClick:
|
m_OnClick:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
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
|
--- !u!1 &3247212730655260364
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -6833,6 +7167,127 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
textKey: 100095
|
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
|
--- !u!1 &3433929351811658191
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -8849,6 +9304,85 @@ MonoBehaviour:
|
|||||||
m_VerticalOverflow: 0
|
m_VerticalOverflow: 0
|
||||||
m_LineSpacing: 1
|
m_LineSpacing: 1
|
||||||
m_Text:
|
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
|
--- !u!1 &4658765528600517200
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -13662,6 +14196,81 @@ MonoBehaviour:
|
|||||||
m_VerticalOverflow: 0
|
m_VerticalOverflow: 0
|
||||||
m_LineSpacing: 1
|
m_LineSpacing: 1
|
||||||
m_Text: 11
|
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
|
--- !u!1 &7013607108523781923
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -15275,6 +15884,7 @@ MonoBehaviour:
|
|||||||
scheduleSettingPrefab: {fileID: 3216739529495113389, guid: 9eb86459bbba39a4cac2c0965ef4df86,
|
scheduleSettingPrefab: {fileID: 3216739529495113389, guid: 9eb86459bbba39a4cac2c0965ef4df86,
|
||||||
type: 3}
|
type: 3}
|
||||||
LockButtonPlane: {fileID: 2474256133367177989}
|
LockButtonPlane: {fileID: 2474256133367177989}
|
||||||
|
lockTime: 180
|
||||||
fovSettingPagePrefab: {fileID: 3146413254774730820, guid: 7160c2ae423fa6248b722bcd3e613840,
|
fovSettingPagePrefab: {fileID: 3146413254774730820, guid: 7160c2ae423fa6248b722bcd3e613840,
|
||||||
type: 3}
|
type: 3}
|
||||||
lensSettingPagePrefab: {fileID: 1580085518831563756, guid: f978cd075181e024289b864203cbedb3,
|
lensSettingPagePrefab: {fileID: 1580085518831563756, guid: f978cd075181e024289b864203cbedb3,
|
||||||
@ -15597,6 +16207,85 @@ MonoBehaviour:
|
|||||||
m_FillOrigin: 0
|
m_FillOrigin: 0
|
||||||
m_UseSpriteMesh: 0
|
m_UseSpriteMesh: 0
|
||||||
m_PixelsPerUnitMultiplier: 1
|
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
|
--- !u!1 &8250217249879649147
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -15940,7 +16629,7 @@ MonoBehaviour:
|
|||||||
m_HorizontalOverflow: 0
|
m_HorizontalOverflow: 0
|
||||||
m_VerticalOverflow: 0
|
m_VerticalOverflow: 0
|
||||||
m_LineSpacing: 1.5
|
m_LineSpacing: 1.5
|
||||||
m_Text:
|
m_Text: "\u6556\u5FB7\u8428\u6240"
|
||||||
--- !u!1 &8446979383493435888
|
--- !u!1 &8446979383493435888
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -16723,6 +17412,85 @@ MonoBehaviour:
|
|||||||
m_VerticalOverflow: 0
|
m_VerticalOverflow: 0
|
||||||
m_LineSpacing: 1
|
m_LineSpacing: 1
|
||||||
m_Text:
|
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
|
--- !u!1 &8730867197378039218
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
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
|
fileFormatVersion: 2
|
||||||
guid: b7cce7e08800ec54e8011b271e66fedf
|
guid: ad4e927583771f942a15cc89421a14de
|
||||||
TextScriptImporter:
|
NativeFormatImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
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
|
fileFormatVersion: 2
|
||||||
guid: f69ace246b9638e4396e38db67cd404a
|
guid: 51a410f15d34f2441a8f942260652d08
|
||||||
TextScriptImporter:
|
NativeFormatImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
||||||
@ -449,7 +449,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 05b49f3efc06bd84b91275be192861eb, type: 3}
|
m_Script: {fileID: 11500000, guid: 05b49f3efc06bd84b91275be192861eb, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
resPosition: 2
|
resPosition: 1
|
||||||
commonList:
|
commonList:
|
||||||
- common
|
- common
|
||||||
- ui_common
|
- ui_common
|
||||||
|
|||||||
@ -13,13 +13,30 @@ namespace Kill.Bluetooth
|
|||||||
[Serializable]
|
[Serializable]
|
||||||
public class OTAVersionInfo
|
public class OTAVersionInfo
|
||||||
{
|
{
|
||||||
public uint FirmwareVersion; // 固件版本 (4字节)
|
public uint FirmwareVersion; // 固件版本 (4字节,按每段2位十进制压缩)
|
||||||
public uint HardwareVersion; // 硬件版本 (4字节)
|
public uint HardwareVersion; // 硬件版本 (4字节,按每段2位十进制压缩)
|
||||||
public uint OTAVersion; // OTA版本 (4字节)
|
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()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
return $"固件版本: {FirmwareVersion}, 硬件版本: {HardwareVersion}, OTA版本: {OTAVersion}";
|
return $"固件版本: {GetFirmwareVersionString()}, 硬件版本: {GetHardwareVersionString()}, OTA版本: {GetOtaVersionString()}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1943,14 +1943,15 @@ namespace Kill.Bluetooth.Protocol
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 将版本号转换为 x.x.x.x 格式字符串
|
/// 将版本号转换为 x.x.x.x 格式字符串
|
||||||
|
/// 版本号按每段2位十进制压缩存储(如 00.00.01.05 -> 105)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private string GetVersionString(uint version)
|
private string GetVersionString(uint version)
|
||||||
{
|
{
|
||||||
byte v1 = (byte)((version >> 24) & 0xFF);
|
int v1 = (int)(version / 1000000) % 100;
|
||||||
byte v2 = (byte)((version >> 16) & 0xFF);
|
int v2 = (int)(version / 10000) % 100;
|
||||||
byte v3 = (byte)((version >> 8) & 0xFF);
|
int v3 = (int)(version / 100) % 100;
|
||||||
byte v4 = (byte)(version & 0xFF);
|
int v4 = (int)(version % 100);
|
||||||
return $"{v1}.{v2}.{v3}.{v4}";
|
return $"{v1:D2}.{v2:D2}.{v3:D2}.{v4:D2}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetFirmwareVersionString() => GetVersionString(FirmwareVersion);
|
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
|
fileFormatVersion: 2
|
||||||
guid: 1ad21c51b7dd87e4f87bf4232cc27c1e
|
guid: f8717e0ed7e8e204da8aff7575d2dcf5
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
@ -4499,7 +4499,7 @@ namespace Kill.UI.Pages
|
|||||||
{
|
{
|
||||||
if (info != null)
|
if (info != null)
|
||||||
{
|
{
|
||||||
UpdateStatus($"OTA版本: 固件={info.FirmwareVersion}, 硬件={info.HardwareVersion}");
|
UpdateStatus($"OTA版本: 固件={info.GetFirmwareVersionString()}, 硬件={info.GetHardwareVersionString()}");
|
||||||
Log($"OTA版本信息: {info}");
|
Log($"OTA版本信息: {info}");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -4822,12 +4822,16 @@ namespace Kill.UI.Pages
|
|||||||
string[] parts = versionStr.Split('.');
|
string[] parts = versionStr.Split('.');
|
||||||
|
|
||||||
if (parts.Length >= 3 &&
|
if (parts.Length >= 3 &&
|
||||||
uint.TryParse(parts[0], out uint major) &&
|
uint.TryParse(parts[0], out uint v0) &&
|
||||||
uint.TryParse(parts[1], out uint minor) &&
|
uint.TryParse(parts[1], out uint v1) &&
|
||||||
uint.TryParse(parts[2], out uint patch))
|
uint.TryParse(parts[2], out uint v2))
|
||||||
{
|
{
|
||||||
// 版本号格式:主版本.次版本.修订号 -> 32位整数
|
// 版本号格式:主版本.次版本.修订号(可含第4段)
|
||||||
return (major << 16) | (minor << 8) | patch;
|
// 按每段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)
|
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;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Kill.Bluetooth;
|
using Kill.Bluetooth;
|
||||||
using Kill.Core;
|
using Kill.Core;
|
||||||
using Kill.Managers;
|
using Kill.Managers;
|
||||||
@ -16,16 +17,19 @@ using UnityEngine.UI;
|
|||||||
public class ConnectDevicePageCtrl : MonoBehaviour
|
public class ConnectDevicePageCtrl : MonoBehaviour
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 0连接 1 失败 2 成功 3 选择wifi
|
/// 0连接 1 失败 2 成功 3 选择wifi 4 指纹初始化
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public GameObject[] sonPages;
|
public GameObject[] sonPages;
|
||||||
public GameObject topBar;
|
|
||||||
public string blueToothNameKeyWord;
|
public string blueToothNameKeyWord;
|
||||||
private List<BluetoothDevice> deviceList = new List<BluetoothDevice>();
|
private List<BluetoothDevice> deviceList = new List<BluetoothDevice>();
|
||||||
public Button backButton;
|
|
||||||
public Button skipButton;
|
|
||||||
public GameObject titleText;
|
|
||||||
public GameObject scanningIcon;
|
public GameObject scanningIcon;
|
||||||
|
|
||||||
|
/// <summary>设置指纹按钮</summary>
|
||||||
|
public Button fingerprintSetupButton;
|
||||||
|
/// <summary>跳过按钮</summary>
|
||||||
|
public Button fingerprintSkipButton;
|
||||||
|
/// <summary>引导录入指纹的提示框(用户制作,默认隐藏,设置指纹成功后显示)</summary>
|
||||||
|
public GameObject fingerInitTip;
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
BluetoothManager.Instance.OnDeviceFound += OnDeviceFound;
|
BluetoothManager.Instance.OnDeviceFound += OnDeviceFound;
|
||||||
@ -55,12 +59,6 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
|||||||
}
|
}
|
||||||
OnStopScanClick();
|
OnStopScanClick();
|
||||||
BluetoothManager.Instance.ChangeAimMac("");
|
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)
|
foreach(GameObject g in sonPages)
|
||||||
g.gameObject.SetActive(false);
|
g.gameObject.SetActive(false);
|
||||||
sonPages[0].SetActive(true);
|
sonPages[0].SetActive(true);
|
||||||
@ -124,7 +122,6 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
|||||||
{
|
{
|
||||||
BluetoothManager.Instance.Disconnect();
|
BluetoothManager.Instance.Disconnect();
|
||||||
}
|
}
|
||||||
topBar.SetActive(false);
|
|
||||||
foreach(GameObject g in sonPages)
|
foreach(GameObject g in sonPages)
|
||||||
g.gameObject.SetActive(false);
|
g.gameObject.SetActive(false);
|
||||||
sonPages[1].SetActive(true);
|
sonPages[1].SetActive(true);
|
||||||
@ -145,11 +142,8 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
|||||||
|
|
||||||
public void ShowWifiPage()
|
public void ShowWifiPage()
|
||||||
{
|
{
|
||||||
topBar.SetActive(true);
|
//无法返回设备注册流程,清空返回操作
|
||||||
titleText.SetActive(true);
|
|
||||||
backButton.gameObject.SetActive(false);
|
|
||||||
UIManager.Instance.ClearBackAction();
|
UIManager.Instance.ClearBackAction();
|
||||||
skipButton.gameObject.SetActive(true);
|
|
||||||
foreach(GameObject g in sonPages)
|
foreach(GameObject g in sonPages)
|
||||||
g.gameObject.SetActive(false);
|
g.gameObject.SetActive(false);
|
||||||
sonPages[3].SetActive(true);
|
sonPages[3].SetActive(true);
|
||||||
@ -170,7 +164,7 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
|||||||
wifiNameInput.text = wifiName ?? "";
|
wifiNameInput.text = wifiName ?? "";
|
||||||
#endif
|
#endif
|
||||||
wifiPasswordInput.text="";
|
wifiPasswordInput.text="";
|
||||||
|
UIManager.Instance.ClearBackAction();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -211,7 +205,7 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
|||||||
DataManager.Instance.deviceConfig.wifi_ssid = ssid;
|
DataManager.Instance.deviceConfig.wifi_ssid = ssid;
|
||||||
DataManager.Instance.deviceConfig.wifi_password = password;
|
DataManager.Instance.deviceConfig.wifi_password = password;
|
||||||
DataManager.Instance.SyncDeviceConfigToServer();
|
DataManager.Instance.SyncDeviceConfigToServer();
|
||||||
ShowSuccessPage();
|
ShowFingerprintPage();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -309,11 +303,10 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
|||||||
#endif
|
#endif
|
||||||
public void ShowSuccessPage()
|
public void ShowSuccessPage()
|
||||||
{
|
{
|
||||||
topBar.SetActive(false);
|
|
||||||
foreach(GameObject g in sonPages)
|
foreach(GameObject g in sonPages)
|
||||||
g.gameObject.SetActive(false);
|
g.gameObject.SetActive(false);
|
||||||
sonPages[2].SetActive(true);
|
sonPages[2].SetActive(true);
|
||||||
UIManager.Instance.RegisterBackAction(EnterConnectPage);
|
UIManager.Instance.RegisterBackAction(BackToHomePage);
|
||||||
}
|
}
|
||||||
private void OnDeviceFound(BluetoothDevice device)
|
private void OnDeviceFound(BluetoothDevice device)
|
||||||
{
|
{
|
||||||
@ -352,7 +345,7 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
|||||||
{
|
{
|
||||||
yield return new WaitForSeconds(0.5f);
|
yield return new WaitForSeconds(0.5f);
|
||||||
//OnQueryRegistrationClick();
|
//OnQueryRegistrationClick();
|
||||||
BandDevice();
|
OnRegisterDeviceClick();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnConnectFailed(string address)
|
private void OnConnectFailed(string address)
|
||||||
@ -467,7 +460,7 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BandDevice();
|
OnRegisterDeviceClick();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -485,28 +478,183 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
|||||||
{
|
{
|
||||||
|
|
||||||
string username = DataManager.Instance.userInfo.id;
|
string username = DataManager.Instance.userInfo.id;
|
||||||
|
|
||||||
|
|
||||||
BLECommunicationManager.Instance.RegisterDevice(username, (success, message) =>
|
BLECommunicationManager.Instance.RegisterDevice(username, (success, message) =>
|
||||||
{
|
{
|
||||||
Loom.QueueOnMainThread(() =>
|
Loom.QueueOnMainThread(() =>
|
||||||
|
{
|
||||||
|
if (success)
|
||||||
{
|
{
|
||||||
LoadingUI.Hide();
|
LoadingUI.Hide();
|
||||||
ShowWifiPage();
|
// 蓝牙注册成功后,再调用服务器绑定接口
|
||||||
DataManager.Instance.SavaSelectedDeviceMac(nowDeviceMac);
|
BandDevice();
|
||||||
// if (success)
|
}
|
||||||
// {
|
else
|
||||||
// ShowWifiPage();
|
{
|
||||||
// DataManager.Instance.SavaSelectedDeviceMac(nowDeviceMac);
|
// 固件bug规避:恢复出厂后注册状态仍为已注册,0x02注册会失败,
|
||||||
// }
|
// 导致无法设置指纹;改用0x03用户登录流程
|
||||||
// else
|
Debug.Log($"设备注册失败: {message},尝试用户登录(0x03)");
|
||||||
// {
|
TryUserLoginAfterRegisterFailed(username);
|
||||||
// errorTip = "100070";
|
}
|
||||||
// ShowErrorPage();
|
|
||||||
// }
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <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>
|
||||||
/// 注销用户
|
/// 注销用户
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -534,7 +682,7 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
|||||||
UIManager.Instance.OpenPage(UIManager.PageName.homePage, null, true);
|
UIManager.Instance.OpenPage(UIManager.PageName.homePage, null, true);
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 绑定设备
|
/// 绑定设备(服务器接口,在蓝牙注册/登录成功后调用)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public async void BandDevice()
|
public async void BandDevice()
|
||||||
{
|
{
|
||||||
@ -556,7 +704,8 @@ public class ConnectDevicePageCtrl : MonoBehaviour
|
|||||||
onSuccess: (data) =>
|
onSuccess: (data) =>
|
||||||
{
|
{
|
||||||
Debug.Log($"绑定设备成功");
|
Debug.Log($"绑定设备成功");
|
||||||
OnRegisterDeviceClick();
|
ShowWifiPage();
|
||||||
|
DataManager.Instance.SavaSelectedDeviceMac(nowDeviceMac);
|
||||||
}
|
}
|
||||||
,
|
,
|
||||||
onError: (code,message) =>
|
onError: (code,message) =>
|
||||||
|
|||||||
@ -238,17 +238,18 @@ namespace Kill.UI.Pages
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
string[] parts = version.Split('.');
|
string[] parts = version.Split('.');
|
||||||
|
|
||||||
if (parts.Length >= 3 &&
|
if (parts.Length >= 3 &&
|
||||||
uint.TryParse(parts[0], out uint major) &&
|
uint.TryParse(parts[0], out uint v0) &&
|
||||||
uint.TryParse(parts[1], out uint minor) &&
|
uint.TryParse(parts[1], out uint v1) &&
|
||||||
uint.TryParse(parts[2], out uint patch))
|
uint.TryParse(parts[2], out uint v2))
|
||||||
{
|
{
|
||||||
// 版本号格式:主版本.次版本.修订号 -> 32位整数
|
// 版本号格式:主版本.次版本.修订号(可含第4段)
|
||||||
return (major << 16) | (minor << 8) | patch;
|
// 按每段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;
|
float waitLockTime=0;
|
||||||
private bool isLockSending; // 锁定/解锁指令发送中(防连点重入)
|
private bool isLockSending; // 锁定/解锁指令发送中(防连点重入)
|
||||||
|
/// <summary>
|
||||||
|
/// 自动锁定时间(秒)
|
||||||
|
/// <para>默认值:180秒</para>
|
||||||
|
/// </summary>
|
||||||
|
public int lockTime=180;
|
||||||
void FixedUpdate()
|
void FixedUpdate()
|
||||||
{
|
{
|
||||||
if(!LockButtonPlane.activeSelf)
|
if(!LockButtonPlane.activeSelf)
|
||||||
@ -96,7 +101,7 @@ namespace Kill.UI.Pages
|
|||||||
{
|
{
|
||||||
waitLockTime=0;
|
waitLockTime=0;
|
||||||
}
|
}
|
||||||
if(waitLockTime>=60)
|
if(waitLockTime>=lockTime)
|
||||||
LockButtonPlane.SetActive(true);
|
LockButtonPlane.SetActive(true);
|
||||||
}
|
}
|
||||||
void OnApplicationPause(bool pause)
|
void OnApplicationPause(bool pause)
|
||||||
|
|||||||
@ -1,24 +1,65 @@
|
|||||||
using UnityEngine;
|
using DG.Tweening;
|
||||||
using UnityEngine.UI;
|
|
||||||
using Kill.Managers;
|
using Kill.Managers;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.EventSystems;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
namespace Kill.UI.Pages
|
namespace Kill.UI.Pages
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 首页设备列表项 - 显示单个设备信息
|
/// 首页设备列表项 - 显示单个设备信息
|
||||||
|
/// 支持左滑手势:左滑时菜单向左滑出并显示高斯模糊覆盖层,
|
||||||
|
/// 滑动超过菜单宽度1/3松手则完整展开,否则缩回并隐藏模糊层
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class HomePageDeviceItem : MonoBehaviour
|
public class HomePageDeviceItem : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
|
||||||
{
|
{
|
||||||
public Text deviceNameText;
|
public Text deviceNameText;
|
||||||
public GameObject selectedIndicator;
|
public GameObject selectedIndicator;
|
||||||
|
/// <summary>菜单(子物体,锚点位于item最右侧),左滑时向左滑出</summary>
|
||||||
|
public RectTransform menuRect;
|
||||||
|
/// <summary>高斯模糊覆盖层(子物体,覆盖其他内容),菜单出现时显示,缩回时隐藏</summary>
|
||||||
|
public GameObject blurOverlay;
|
||||||
|
|
||||||
// 当前设备信息
|
// 当前设备信息
|
||||||
public DeviceInfo deviceInfo;
|
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)
|
public void InitDeviceItem(DeviceInfo device)
|
||||||
{
|
{
|
||||||
deviceInfo = device;
|
deviceInfo = device;
|
||||||
deviceNameText.text = device.device_name;
|
deviceNameText.text = device.device_name;
|
||||||
selectedIndicator.SetActive(false);
|
selectedIndicator.SetActive(false);
|
||||||
|
InitSwipe();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetSelectedState(bool isSelected)
|
public void SetSelectedState(bool isSelected)
|
||||||
@ -27,6 +68,109 @@ namespace Kill.UI.Pages
|
|||||||
selectedIndicator.SetActive(isSelected);
|
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.2d.sprite": "1.0.0",
|
||||||
"com.unity.assetbundlebrowser": "https://github.com/Unity-Technologies/AssetBundles-Browser.git",
|
"com.unity.assetbundlebrowser": "https://github.com/Unity-Technologies/AssetBundles-Browser.git",
|
||||||
"com.unity.ide.rider": "3.0.36",
|
"com.unity.ide.rider": "3.0.36",
|
||||||
"com.unity.ide.visualstudio": "2.0.22",
|
|
||||||
"com.unity.ide.vscode": "1.2.5",
|
"com.unity.ide.vscode": "1.2.5",
|
||||||
"com.unity.mobile.android-logcat": "1.4.7",
|
"com.unity.mobile.android-logcat": "1.4.7",
|
||||||
"com.unity.test-framework": "1.1.33",
|
"com.unity.test-framework": "1.1.33",
|
||||||
|
|||||||
@ -29,15 +29,6 @@
|
|||||||
},
|
},
|
||||||
"url": "https://packages.unity.cn"
|
"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": {
|
"com.unity.ide.vscode": {
|
||||||
"version": "1.2.5",
|
"version": "1.2.5",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
|
|||||||
@ -145,10 +145,9 @@ PlayerSettings:
|
|||||||
loadStoreDebugModeEnabled: 0
|
loadStoreDebugModeEnabled: 0
|
||||||
visionOSBundleVersion: 1.0
|
visionOSBundleVersion: 1.0
|
||||||
tvOSBundleVersion: 1.0
|
tvOSBundleVersion: 1.0
|
||||||
bundleVersion: 1.0.4
|
bundleVersion: 1.0.5
|
||||||
preloadedAssets:
|
preloadedAssets:
|
||||||
- {fileID: 7756680987677051820, guid: 0488490a53b3eb2409be4727abdf829a, type: 2}
|
- {fileID: 11400000, guid: ea0b832004c179d4aa69068be5863671, type: 2}
|
||||||
- {fileID: 11400000, guid: d990b2e2bc28cca43863c18940a862a3, type: 2}
|
|
||||||
metroInputSource: 0
|
metroInputSource: 0
|
||||||
wsaTransparentSwapchain: 0
|
wsaTransparentSwapchain: 0
|
||||||
m_HolographicPauseOnTrackingLoss: 1
|
m_HolographicPauseOnTrackingLoss: 1
|
||||||
@ -818,7 +817,24 @@ PlayerSettings:
|
|||||||
webGLMemoryGeometricGrowthStep: 0.2
|
webGLMemoryGeometricGrowthStep: 0.2
|
||||||
webGLMemoryGeometricGrowthCap: 96
|
webGLMemoryGeometricGrowthCap: 96
|
||||||
webGLPowerPreference: 2
|
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: {}
|
additionalCompilerArguments: {}
|
||||||
platformArchitecture: {}
|
platformArchitecture: {}
|
||||||
scriptingBackend:
|
scriptingBackend:
|
||||||
|
|||||||