```
feat(Enemy): 添加敌人攻击动画速度控制功能 - 新增attackDuration属性用于控制完整攻击动作时长 - 实现攻击动画速度动态调整,支持自定义攻击持续时间 - 添加健康条显示组件到敌人类 - 增加物理材质配置优化碰撞效果 - 添加微信小游戏平台支持和适配 - 集成自适应性能包和微信小游戏SDK - 配置项目构建设置支持多平台发布 - 更新质量设置以适配不同目标平台 - 调整场景中物体位置和旋转参数 - 修复角色控制器材质引用问题 - 优化敌人AI移动和攻击逻辑 ```
This commit is contained in:
1 parent
b807bb80ec
commit
48dfa0d95d
38 files changed
+2295
-36
No files matched your search
Binary file not shown.
|
Before Width: | Height: | Size: 1.8 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.8 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 247 KiB |
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
repository "大乱斗@local"
|
||||
path "/"
|
||||
br "/main"
|
||||
co "/main"
|
||||
Binary file not shown.
@@ -0,0 +1,2 @@
|
||||
大乱斗
|
||||
767703dc-422a-43e1-92e9-ee53ce97da2b
|
||||
@@ -0,0 +1,76 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:yousandi.cn,2023:
|
||||
--- !u!114 &-406776548054534087
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 2
|
||||
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: 536372c49e1ca914d822849d36de938c, type: 3}
|
||||
m_Name: MiniGame Providers
|
||||
m_EditorClassIdentifier:
|
||||
m_AutomaticLoading: 0
|
||||
m_AutomaticRunning: 0
|
||||
m_Loaders: []
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 2
|
||||
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: cb0ece14d1f711a4fb9325ca819dee95, type: 3}
|
||||
m_Name: AdaptivePerformanceGeneralSettings
|
||||
m_EditorClassIdentifier:
|
||||
Keys: 0100000024000000
|
||||
Values:
|
||||
- {fileID: 4731252441512728097}
|
||||
- {fileID: 6642007075594342985}
|
||||
--- !u!114 &4731252441512728097
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 2
|
||||
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: 179fc3111e144bc4688dca4038b3265d, type: 3}
|
||||
m_Name: Standalone Settings
|
||||
m_EditorClassIdentifier:
|
||||
m_LoaderManagerInstance: {fileID: 8563817715829995832}
|
||||
m_InitManagerOnStart: 0
|
||||
--- !u!114 &6642007075594342985
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 2
|
||||
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: 179fc3111e144bc4688dca4038b3265d, type: 3}
|
||||
m_Name: MiniGame Settings
|
||||
m_EditorClassIdentifier:
|
||||
m_LoaderManagerInstance: {fileID: -406776548054534087}
|
||||
m_InitManagerOnStart: 0
|
||||
--- !u!114 &8563817715829995832
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 2
|
||||
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: 536372c49e1ca914d822849d36de938c, type: 3}
|
||||
m_Name: Standalone Providers
|
||||
m_EditorClassIdentifier:
|
||||
m_AutomaticLoading: 0
|
||||
m_AutomaticRunning: 0
|
||||
m_Loaders: []
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: Dy5K4yyrBir/7iRL575mWxee9O9IWVmDyRsbofO14MrwjMaUDL2COic=
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: CX4ZsnilAHPFprG5hnFKifWBFKHxUBpbohB5lJhzdsA/tO6DQKImv6g=
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,14 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:yousandi.cn,2023:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 2
|
||||
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: 921854900f2214d7ab9b1e95d17dbb2b, type: 3}
|
||||
m_Name: Simulator Provider Loader
|
||||
m_EditorClassIdentifier:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: XCwevSz7AH20gEbBajw2DSNPG43IBSdFu2P7J+WLzB8+gRmOsmR4Qo4=
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -136,6 +136,18 @@ PhysicMaterial:
|
||||
bounciness: 0
|
||||
frictionCombine: 0
|
||||
bounceCombine: 0
|
||||
--- !u!134 &442925933
|
||||
PhysicMaterial:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: ' (Instance) (Instance) (Instance) (Instance)'
|
||||
dynamicFriction: 0.6
|
||||
staticFriction: 0.6
|
||||
bounciness: 0
|
||||
frictionCombine: 0
|
||||
bounceCombine: 0
|
||||
--- !u!1 &705507993
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -255,6 +267,7 @@ MonoBehaviour:
|
||||
range: 18
|
||||
detectRange: 20
|
||||
attackRange: 1
|
||||
attackDuration: 1.5
|
||||
target: {fileID: 903389984}
|
||||
--- !u!143 &903389988
|
||||
CharacterController:
|
||||
@@ -263,7 +276,7 @@ CharacterController:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 903389984}
|
||||
m_Material: {fileID: 1727663077}
|
||||
m_Material: {fileID: 442925933}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
@@ -282,6 +295,24 @@ CharacterController:
|
||||
m_SkinWidth: 0.08
|
||||
m_MinMoveDistance: 0.001
|
||||
m_Center: {x: 0, y: 1, z: 0}
|
||||
--- !u!114 &903389989
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 903389984}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 9355c53f591d4459ea620fc8191efa17, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
maxHealth: 100
|
||||
currentHealth: 100
|
||||
heightOffset: 0.25
|
||||
barWidth: 1.2
|
||||
borderColor: {r: 0.03, g: 0.03, b: 0.03, a: 0.95}
|
||||
fillColor: {r: 0.1, g: 0.8, b: 0.18, a: 1}
|
||||
--- !u!1 &963194225
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -371,8 +402,8 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 963194225}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.002237889, y: 0.8675624, z: -0.49730802, w: 0.0039040295}
|
||||
m_LocalPosition: {x: 0.20366266, y: 9.922052, z: 2.6709976}
|
||||
m_LocalRotation: {x: 0.0062476187, y: 0.85376835, z: -0.5205148, w: 0.010244722}
|
||||
m_LocalPosition: {x: -3.810662, y: 8.767098, z: -3.3209858}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
@@ -404,7 +435,7 @@ PrefabInstance:
|
||||
- target: {fileID: -8679921383154817045, guid: aedf6e849dd924e229c57640f99ff50a,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: -0.238
|
||||
value: -2.88
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: aedf6e849dd924e229c57640f99ff50a,
|
||||
type: 3}
|
||||
@@ -414,7 +445,7 @@ PrefabInstance:
|
||||
- target: {fileID: -8679921383154817045, guid: aedf6e849dd924e229c57640f99ff50a,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
value: -4.02
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: aedf6e849dd924e229c57640f99ff50a,
|
||||
type: 3}
|
||||
@@ -484,6 +515,10 @@ PrefabInstance:
|
||||
type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 989436105}
|
||||
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: aedf6e849dd924e229c57640f99ff50a,
|
||||
type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 989436109}
|
||||
m_SourcePrefab: {fileID: 100100000, guid: aedf6e849dd924e229c57640f99ff50a, type: 3}
|
||||
--- !u!1 &989436104 stripped
|
||||
GameObject:
|
||||
@@ -498,7 +533,7 @@ CharacterController:
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 989436104}
|
||||
m_Material: {fileID: 1727663077}
|
||||
m_Material: {fileID: 1441034007}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
@@ -534,7 +569,26 @@ MonoBehaviour:
|
||||
range: 18
|
||||
detectRange: 20
|
||||
attackRange: 1
|
||||
attackDuration: 2
|
||||
target: {fileID: 989436104}
|
||||
--- !u!114 &989436109
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 989436104}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 9355c53f591d4459ea620fc8191efa17, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
maxHealth: 100
|
||||
currentHealth: 100
|
||||
heightOffset: 0.25
|
||||
barWidth: 1.2
|
||||
borderColor: {r: 0.03, g: 0.03, b: 0.03, a: 0.95}
|
||||
fillColor: {r: 0.1, g: 0.8, b: 0.18, a: 1}
|
||||
--- !u!1 &1178637744
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -646,6 +700,18 @@ Transform:
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!134 &1441034007
|
||||
PhysicMaterial:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: ' (Instance) (Instance) (Instance) (Instance) (Instance) (Instance)'
|
||||
dynamicFriction: 0.6
|
||||
staticFriction: 0.6
|
||||
bounciness: 0
|
||||
frictionCombine: 0
|
||||
bounceCombine: 0
|
||||
--- !u!1001 &1576577255
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -731,19 +797,11 @@ PrefabInstance:
|
||||
type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 903389987}
|
||||
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: c64a07291d13b4e9296ad678cc703a75,
|
||||
type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 903389989}
|
||||
m_SourcePrefab: {fileID: 100100000, guid: c64a07291d13b4e9296ad678cc703a75, type: 3}
|
||||
--- !u!134 &1727663077
|
||||
PhysicMaterial:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: ' (Instance) (Instance) (Instance)'
|
||||
dynamicFriction: 0.6
|
||||
staticFriction: 0.6
|
||||
bounciness: 0
|
||||
frictionCombine: 0
|
||||
bounceCombine: 0
|
||||
--- !u!1660057539 &9223372036854775807
|
||||
SceneRoots:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -20,6 +20,10 @@ public class NewBehaviourScript : MonoBehaviour
|
||||
//攻击范围
|
||||
public float attackRange = 5f;
|
||||
|
||||
//完整攻击动作时长,单位为秒;设置为0时使用动画真实时长
|
||||
[Min(0f)]
|
||||
public float attackDuration = 0f;
|
||||
|
||||
//角色状态
|
||||
private State state = State.Alert;
|
||||
|
||||
@@ -176,12 +180,74 @@ public class NewBehaviourScript : MonoBehaviour
|
||||
return Vector3.Distance(transform.position, opponent.transform.position) <= reachDistance;
|
||||
}
|
||||
|
||||
//查找当前Animator中使用的攻击动画时长
|
||||
private float GetAttackAnimationDuration()
|
||||
{
|
||||
if (animator == null || animator.runtimeAnimatorController == null)
|
||||
{
|
||||
return 0f;
|
||||
}
|
||||
|
||||
var overrideController = animator.runtimeAnimatorController as AnimatorOverrideController;
|
||||
if (overrideController != null)
|
||||
{
|
||||
var overrides = new List<KeyValuePair<AnimationClip, AnimationClip>>();
|
||||
overrideController.GetOverrides(overrides);
|
||||
|
||||
foreach (var pair in overrides)
|
||||
{
|
||||
if (IsAttackAnimation(pair.Key))
|
||||
{
|
||||
return pair.Value != null ? pair.Value.length : pair.Key.length;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var clip in animator.runtimeAnimatorController.animationClips)
|
||||
{
|
||||
if (IsAttackAnimation(clip))
|
||||
{
|
||||
return clip.length;
|
||||
}
|
||||
}
|
||||
|
||||
return 0f;
|
||||
}
|
||||
|
||||
//根据动画名称判断是否为攻击动画
|
||||
private bool IsAttackAnimation(AnimationClip clip)
|
||||
{
|
||||
if (clip == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
string clipName = clip.name.ToLowerInvariant();
|
||||
return clipName.Contains("attack")
|
||||
|| clipName.Contains("攻击")
|
||||
|| clipName.Contains("挥剑");
|
||||
}
|
||||
|
||||
//设置攻击动画播放速度
|
||||
private void SetAttackAnimationSpeed()
|
||||
{
|
||||
float animationDuration = GetAttackAnimationDuration();
|
||||
if (animationDuration <= 0f || attackDuration <= 0f)
|
||||
{
|
||||
animator.speed = 1f;
|
||||
return;
|
||||
}
|
||||
|
||||
animator.speed = animationDuration / attackDuration;
|
||||
}
|
||||
|
||||
//攻击
|
||||
private void attack(GameObject friend)
|
||||
{
|
||||
target = friend;
|
||||
|
||||
//攻击动画动作
|
||||
//根据目标攻击时长加速或减速完整攻击动画
|
||||
SetAttackAnimationSpeed();
|
||||
animator.SetInteger("speed", 0);
|
||||
animator.SetTrigger("attack");
|
||||
state = State.Attack;
|
||||
@@ -191,6 +257,9 @@ public class NewBehaviourScript : MonoBehaviour
|
||||
// 在 Animator 的 Attack 动画结束时调用此方法
|
||||
public void OnAttackAnimationEnd()
|
||||
{
|
||||
//攻击动画结束后恢复Animator速度
|
||||
animator.speed = 1f;
|
||||
|
||||
//攻击动画结束后,目标仍在攻击范围内则立即进行下一次攻击
|
||||
target = FindNearestOpponent();
|
||||
if (target != null && IsWithinAttackReach(target))
|
||||
|
||||
@@ -0,0 +1,229 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class WorldHealthBar : MonoBehaviour
|
||||
{
|
||||
// 最大生命值。
|
||||
[Min(1f)] public float maxHealth = 100f;
|
||||
|
||||
// 当前生命值,范围会自动限制在 0 到 maxHealth 之间。
|
||||
[Min(0f)] public float currentHealth = 100f;
|
||||
|
||||
// 血条相对于单位头顶的额外高度。
|
||||
[Min(0f)] public float heightOffset = 0.25f;
|
||||
|
||||
// 所有单位使用统一的血条世界宽度。
|
||||
[Min(0.1f)] public float barWidth = 1.2f;
|
||||
|
||||
// 血条边框颜色。
|
||||
public Color borderColor = new Color(0.03f, 0.03f, 0.03f, 0.95f);
|
||||
|
||||
// 血条内部填充颜色。
|
||||
public Color fillColor = new Color(0.1f, 0.8f, 0.18f, 1f);
|
||||
|
||||
// 血条 UI 的像素尺寸,实际显示大小由 worldWidth 控制。
|
||||
private const int PixelWidth = 100;
|
||||
private const int PixelHeight = 14;
|
||||
|
||||
// 世界空间 Canvas,用来承载血条 UI。
|
||||
private Canvas canvas;
|
||||
|
||||
// 血条整体的 RectTransform。
|
||||
private RectTransform barRect;
|
||||
|
||||
// 绿色血量填充 Image。
|
||||
private Image fillImage;
|
||||
|
||||
// 血条相对于单位的本地位置。
|
||||
private Vector3 localBarPosition;
|
||||
|
||||
// 血条最终使用的世界宽度。
|
||||
private float worldWidth;
|
||||
|
||||
// 所有血条共用的圆角 Sprite。
|
||||
private static Sprite roundedSprite;
|
||||
|
||||
// 初始化血量和血条 UI。
|
||||
private void Awake()
|
||||
{
|
||||
maxHealth = Mathf.Max(1f, maxHealth);
|
||||
currentHealth = Mathf.Clamp(currentHealth, 0f, maxHealth);
|
||||
CalculateLayout();
|
||||
CreateBar();
|
||||
UpdateFill();
|
||||
}
|
||||
|
||||
// 每帧让血条保持在单位头顶,并朝向主摄像机。
|
||||
private void LateUpdate()
|
||||
{
|
||||
if (barRect == null) return;
|
||||
barRect.localPosition = localBarPosition;
|
||||
|
||||
// 优先使用场景中名称完全为 Main Camera 的摄像机。
|
||||
Camera camera = FindMainCamera();
|
||||
if (camera == null) return;
|
||||
|
||||
canvas.worldCamera = camera;
|
||||
if (camera.gameObject.name == "Main Camera")
|
||||
{
|
||||
// 使用摄像机的上方向,保证血条在摄像机画面中保持水平。
|
||||
barRect.rotation = Quaternion.LookRotation(
|
||||
camera.transform.position - barRect.position,
|
||||
camera.transform.up);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 找不到 Main Camera 时,保留原来的展示逻辑。
|
||||
barRect.rotation = Quaternion.LookRotation(
|
||||
camera.transform.position - barRect.position,
|
||||
Vector3.up);
|
||||
}
|
||||
}
|
||||
|
||||
// 查找场景中名称为 Main Camera 的摄像机;找不到时回退到 Camera.main。
|
||||
private Camera FindMainCamera()
|
||||
{
|
||||
GameObject mainCameraObject = GameObject.Find("Main Camera");
|
||||
if (mainCameraObject != null)
|
||||
{
|
||||
Camera namedCamera = mainCameraObject.GetComponent<Camera>();
|
||||
if (namedCamera != null && namedCamera.isActiveAndEnabled)
|
||||
{
|
||||
return namedCamera;
|
||||
}
|
||||
}
|
||||
|
||||
return Camera.main;
|
||||
}
|
||||
|
||||
// 直接设置当前生命值,并刷新绿色填充比例。
|
||||
public void SetHealth(float value)
|
||||
{
|
||||
currentHealth = Mathf.Clamp(value, 0f, maxHealth);
|
||||
UpdateFill();
|
||||
}
|
||||
|
||||
// 让单位受到伤害。
|
||||
public void TakeDamage(float amount) => SetHealth(currentHealth - amount);
|
||||
|
||||
// 让单位恢复生命值。
|
||||
public void Heal(float amount) => SetHealth(currentHealth + amount);
|
||||
|
||||
// 根据单位模型或碰撞体计算血条位置和宽度。
|
||||
private void CalculateLayout()
|
||||
{
|
||||
Bounds bounds = new Bounds(transform.position, new Vector3(1f, 2f, 1f));
|
||||
bool found = false;
|
||||
foreach (Renderer renderer in GetComponentsInChildren<Renderer>(true))
|
||||
{
|
||||
if (!found)
|
||||
{
|
||||
bounds = renderer.bounds;
|
||||
found = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
bounds.Encapsulate(renderer.bounds);
|
||||
}
|
||||
}
|
||||
|
||||
if (!found)
|
||||
{
|
||||
CharacterController controller = GetComponent<CharacterController>();
|
||||
if (controller != null) bounds = controller.bounds;
|
||||
}
|
||||
|
||||
// 血条尺寸固定,不随单位模型大小变化;只根据模型顶部调整位置。
|
||||
worldWidth = barWidth;
|
||||
// 水平方向固定对齐单位根节点,只使用模型顶部计算血条高度。
|
||||
Vector3 top = transform.InverseTransformPoint(new Vector3(transform.position.x, bounds.max.y, transform.position.z));
|
||||
localBarPosition = new Vector3(0f, top.y + heightOffset, 0f);
|
||||
}
|
||||
// 创建世界空间 Canvas、边框和绿色血量填充。
|
||||
private void CreateBar()
|
||||
{
|
||||
GameObject barObject = new GameObject("WorldHealthBar", typeof(RectTransform), typeof(Canvas), typeof(CanvasScaler));
|
||||
barObject.transform.SetParent(transform, false);
|
||||
barObject.layer = gameObject.layer;
|
||||
canvas = barObject.GetComponent<Canvas>();
|
||||
canvas.renderMode = RenderMode.WorldSpace;
|
||||
canvas.sortingOrder = 100;
|
||||
barObject.GetComponent<CanvasScaler>().dynamicPixelsPerUnit = 10f;
|
||||
barRect = barObject.GetComponent<RectTransform>();
|
||||
barRect.sizeDelta = new Vector2(PixelWidth, PixelHeight);
|
||||
barRect.localScale = Vector3.one * (worldWidth / PixelWidth);
|
||||
barRect.localPosition = localBarPosition;
|
||||
|
||||
Image background = CreateImage("Border", barObject.transform, RoundedSprite(), borderColor);
|
||||
SetFullRect(background.rectTransform);
|
||||
|
||||
Image inner = CreateImage("Fill", barObject.transform, RoundedSprite(), fillColor);
|
||||
inner.rectTransform.anchorMin = Vector2.zero;
|
||||
inner.rectTransform.anchorMax = Vector2.one;
|
||||
inner.rectTransform.offsetMin = new Vector2(2f, 2f);
|
||||
inner.rectTransform.offsetMax = new Vector2(-2f, -2f);
|
||||
inner.type = Image.Type.Filled;
|
||||
inner.fillMethod = Image.FillMethod.Horizontal;
|
||||
inner.fillOrigin = 0;
|
||||
fillImage = inner;
|
||||
}
|
||||
|
||||
// 创建一个用于边框或填充的 UI Image。
|
||||
private static Image CreateImage(string name, Transform parent, Sprite sprite, Color color)
|
||||
{
|
||||
GameObject imageObject = new GameObject(name, typeof(RectTransform), typeof(Image));
|
||||
imageObject.transform.SetParent(parent, false);
|
||||
Image image = imageObject.GetComponent<Image>();
|
||||
image.sprite = sprite;
|
||||
image.color = color;
|
||||
image.raycastTarget = false;
|
||||
return image;
|
||||
}
|
||||
|
||||
// 让 UI 元素铺满父级 RectTransform。
|
||||
private static void SetFullRect(RectTransform rect)
|
||||
{
|
||||
rect.anchorMin = Vector2.zero;
|
||||
rect.anchorMax = Vector2.one;
|
||||
rect.offsetMin = Vector2.zero;
|
||||
rect.offsetMax = Vector2.zero;
|
||||
}
|
||||
// 根据当前生命值更新绿色填充比例。
|
||||
private void UpdateFill()
|
||||
{
|
||||
if (fillImage != null)
|
||||
{
|
||||
fillImage.fillAmount = Mathf.Clamp01(currentHealth / maxHealth);
|
||||
}
|
||||
}
|
||||
|
||||
// 创建并缓存一个带圆角的白色 Sprite,供边框和填充复用。
|
||||
private static Sprite RoundedSprite()
|
||||
{
|
||||
if (roundedSprite != null) return roundedSprite;
|
||||
|
||||
const int width = 64;
|
||||
const int height = 16;
|
||||
const float radius = 5f;
|
||||
Texture2D texture = new Texture2D(width, height, TextureFormat.RGBA32, false);
|
||||
texture.wrapMode = TextureWrapMode.Clamp;
|
||||
texture.filterMode = FilterMode.Bilinear;
|
||||
texture.hideFlags = HideFlags.HideAndDontSave;
|
||||
|
||||
for (int y = 0; y < height; y++)
|
||||
{
|
||||
for (int x = 0; x < width; x++)
|
||||
{
|
||||
float dx = Mathf.Max(Mathf.Max(radius - x, 0f), x - (width - 1 - radius));
|
||||
float dy = Mathf.Max(Mathf.Max(radius - y, 0f), y - (height - 1 - radius));
|
||||
bool inside = dx * dx + dy * dy <= radius * radius;
|
||||
texture.SetPixel(x, y, inside ? Color.white : Color.clear);
|
||||
}
|
||||
}
|
||||
|
||||
texture.Apply();
|
||||
roundedSprite = Sprite.Create(texture, new Rect(0, 0, width, height), new Vector2(0.5f, 0.5f), width);
|
||||
roundedSprite.hideFlags = HideFlags.HideAndDontSave;
|
||||
return roundedSprite;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: BnkasHmoUC2Ntt5WLsMxZlTfTsvoVRA6JRpZDgF9Te//UKDtvjgPjYc=
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: CHgYsSn7W3ywDacFOl6IdvGhuyE1ucsoqiui/VU8DOAZYbuB3mLCXBA=
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: B3oXt3mqVikBOQrdz/8vAPEHkxk7gLO5hsDW+ViDUjtgoKBQr7JRqmE=
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: D3scvCOpUnneKUUepTWpkj3rod6CSEdrm/LbQLPuA5Jv1s11V1XamYU=
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: XikYsSP5B36KCI1G1fC/FERqmhNRC0xEa5XsB2E4TkuNjJBiPNPWfdM=
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: C3hM4SulASgXeYihB+EnKvJyBln0ku6DATNfzZzi6wpZORbnLwnZ5iA=
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,102 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:yousandi.cn,2023:
|
||||
--- !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: 1795359250, guid: 1cf430f187a0b40eda7f668318d8be23, type: 3}
|
||||
m_Name: MiniGameConfig
|
||||
m_EditorClassIdentifier:
|
||||
ProjectConf:
|
||||
projectName:
|
||||
Appid:
|
||||
CDN:
|
||||
assetLoadType: 0
|
||||
compressDataPackage: 0
|
||||
VideoUrl:
|
||||
relativeDST:
|
||||
DST:
|
||||
StreamCDN:
|
||||
bundleHashLength: 32
|
||||
bundlePathIdentifier: StreamingAssets;
|
||||
bundleExcludeExtensions: json;
|
||||
AssetsUrl:
|
||||
MemorySize: 256
|
||||
HideAfterCallMain: 1
|
||||
preloadFiles:
|
||||
Orientation: 0
|
||||
bgImageSrc: Assets/WX-WASM-SDK-V2/Runtime/wechat-default/images/background.jpg
|
||||
dataFileSubPrefix:
|
||||
maxStorage: 200
|
||||
defaultReleaseSize: 31457280
|
||||
texturesHashLength: 8
|
||||
texturesPath: Assets/Textures
|
||||
needCacheTextures: 1
|
||||
loadingBarWidth: 240
|
||||
needCheckUpdate: 0
|
||||
disableHighPerformanceFallback: 0
|
||||
IOSDevicePixelRatio: 0
|
||||
SDKOptions:
|
||||
UseFriendRelation: 0
|
||||
UseCompressedTexture: 0
|
||||
UseMiniGameChat: 0
|
||||
PreloadWXFont: 0
|
||||
disableMultiTouch: 0
|
||||
CompileOptions:
|
||||
DevelopBuild: 0
|
||||
AutoProfile: 0
|
||||
ScriptOnly: 0
|
||||
Il2CppOptimizeSize: 1
|
||||
profilingFuncs: 1
|
||||
Webgl2: 1
|
||||
fbslim: 0
|
||||
DeleteStreamingAssets: 1
|
||||
ProfilingMemory: 0
|
||||
CleanBuild: 0
|
||||
CustomNodePath:
|
||||
autoAdaptScreen: 0
|
||||
showMonitorSuggestModal: 1
|
||||
enableProfileStats: 0
|
||||
enableRenderAnalysis: 0
|
||||
enablePerfAnalysis: 0
|
||||
iOSAutoGCInterval: 10000
|
||||
enableIOSPerformancePlus: 0
|
||||
enableiOSMetal: 0
|
||||
enableEmscriptenGLX: 0
|
||||
brotliMT: 1
|
||||
enableWasm2023: 0
|
||||
CompressTexture:
|
||||
halfSize: 0
|
||||
useDXT5: 0
|
||||
bundleSuffix: bundle
|
||||
parallelWithBundle: 0
|
||||
bundleDir:
|
||||
dstMinDir:
|
||||
debugMode: 0
|
||||
force: 0
|
||||
PlayerPrefsKeys: []
|
||||
FontOptions:
|
||||
CJK_Unified_Ideographs: 1
|
||||
C0_Controls_and_Basic_Latin: 1
|
||||
CJK_Symbols_and_Punctuation: 1
|
||||
General_Punctuation: 1
|
||||
Enclosed_CJK_Letters_and_Months: 1
|
||||
Vertical_Forms: 1
|
||||
CJK_Compatibility_Forms: 1
|
||||
Miscellaneous_Symbols: 1
|
||||
CJK_Compatibility: 1
|
||||
Halfwidth_and_Fullwidth_Forms: 1
|
||||
Dingbats: 1
|
||||
Letterlike_Symbols: 1
|
||||
Enclosed_Alphanumerics: 1
|
||||
Number_Forms: 1
|
||||
Currency_Symbols: 1
|
||||
Arrows: 1
|
||||
Geometric_Shapes: 1
|
||||
Mathematical_Operators: 1
|
||||
CustomUnicode:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: Xi4avXyqUy5sTy09OXtN/vGNnJJfYnk1VPCWeKYrQuGOg5j63VIfsCk=
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: Bnsfsi78VHKF4JhUpCLbzAzz5oQ9i98EfMITujVMd/gFCkEoCwcMHwQ=
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: Cy8d5Cr/VC+pjuCd+MczipiuYuqzFzvWvxES5FCPHR1VsEg+QVAP+Jk=
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,5 @@
|
||||
<linker>
|
||||
<assembly fullname="wx-runtime" preserve="all"/>
|
||||
<assembly fullname="LitJson" preserve="all"/>
|
||||
<assembly fullname="Wx" preserve="all"/>
|
||||
</linker>
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: CXkf4C//B3Lz2lyWvcIGryIcjzIMaw98GfE6dnnbj/aZfVtTuBp4EvU=
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: CilJ4yj5Vy0tIYdp4K7ZZxBRxvkedLvdZPMyc4TrKp5XNUjjC8xFWdY=
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: Xn0b4SP4BSm8UmFnB3cp/cCJ0QNzpk7J5MGAA10V+3CmaRRJ/MlCPDU=
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 8.7 KiB |
@@ -0,0 +1,149 @@
|
||||
fileFormatVersion: 2
|
||||
guid: B3oX4SmqAnsvuJG0DeH51XPp23ICNdmXbITXzZMcMhrjRlQvrwsS6dE=
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 14
|
||||
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
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
webStreaming: 0
|
||||
priorityLevel: 0
|
||||
uploadedMode: 2
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
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
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
maxPlaceholderSize: 32
|
||||
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: Standalone
|
||||
maxTextureSize: 2048
|
||||
maxPlaceholderSize: 32
|
||||
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: Server
|
||||
maxTextureSize: 2048
|
||||
maxPlaceholderSize: 32
|
||||
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: WeixinMiniGame
|
||||
maxTextureSize: 2048
|
||||
maxPlaceholderSize: 32
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
doOverrideTextureManagerOperations: 0
|
||||
platformOperationGroupSettings:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -3,6 +3,8 @@
|
||||
"cn.tuanjie.ai.generators": "file:../.codely-cli/extensions/TJGenerators/Packages/cn.tuanjie.ai.generators",
|
||||
"cn.tuanjie.ai.graph": "1.0.10",
|
||||
"cn.tuanjie.codely.bridge": "1.0.75",
|
||||
"com.qq.weixin.minigame": "https://gitee.com/wechat-minigame/minigame-tuanjie-transform-sdk.git#v0.1.32",
|
||||
"com.unity.adaptiveperformance": "4.0.1",
|
||||
"com.unity.collab-proxy": "2.6.0",
|
||||
"com.unity.feature.mobile": "1.0.0",
|
||||
"com.unity.ide.rider": "3.0.36",
|
||||
|
||||
@@ -40,9 +40,16 @@
|
||||
},
|
||||
"url": "https://packages.tuanjie.cn"
|
||||
},
|
||||
"com.qq.weixin.minigame": {
|
||||
"version": "https://gitee.com/wechat-minigame/minigame-tuanjie-transform-sdk.git#v0.1.32",
|
||||
"depth": 0,
|
||||
"source": "git",
|
||||
"dependencies": {},
|
||||
"hash": "f67e7851c345f514e9079819cae16273ff05b33c"
|
||||
},
|
||||
"com.unity.adaptiveperformance": {
|
||||
"version": "4.0.1",
|
||||
"depth": 1,
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {
|
||||
"com.unity.subsystemregistration": "1.1.0",
|
||||
@@ -177,7 +184,7 @@
|
||||
},
|
||||
"com.unity.profiling.core": {
|
||||
"version": "1.0.2",
|
||||
"depth": 2,
|
||||
"depth": 1,
|
||||
"source": "registry",
|
||||
"dependencies": {},
|
||||
"url": "https://packages.tuanjie.cn"
|
||||
@@ -210,7 +217,7 @@
|
||||
},
|
||||
"com.unity.subsystemregistration": {
|
||||
"version": "1.1.1",
|
||||
"depth": 2,
|
||||
"depth": 1,
|
||||
"source": "registry",
|
||||
"dependencies": {
|
||||
"com.unity.modules.subsystems": "1.0.0"
|
||||
|
||||
@@ -8,13 +8,23 @@ EditorBuildSettings:
|
||||
- enabled: 1
|
||||
path: Assets/Scenes/SampleScene.scene
|
||||
guid: 7f8a9209e2c654770b6c8311c7e23e18
|
||||
m_BuildProfiles:
|
||||
- enabled: 1
|
||||
path: Assets/Settings/Build Profiles/New WeChat Profile.asset
|
||||
guid: 01399412e246a4ea1919c7bbb0517f33
|
||||
m_configObjects:
|
||||
com.unity.adaptiveperformance.loader_settings: {fileID: 11400000, guid: 0def66eac048f460188dfa376c9afff1,
|
||||
type: 2}
|
||||
com.unity.adaptiveperformance.simulator.provider_settings: {fileID: 11400000,
|
||||
guid: b8a7f88d1a5a949a49949bb4bb80f68d, type: 2}
|
||||
m_SlimFeaturesWeixinMiniGame:
|
||||
ACLDecompression: 0
|
||||
AllocateOverhead: 1
|
||||
DecompressASTC: 0
|
||||
DecompressDXT: 1
|
||||
DecompressETC: 1
|
||||
FreeTypeSfntPng: 1
|
||||
JobWorker: 2
|
||||
LightProbe: 2
|
||||
RootMotion: 0
|
||||
UseStringInternPool: 2
|
||||
@@ -208,7 +208,8 @@ PlayerSettings:
|
||||
resetResolutionOnWindowResize: 0
|
||||
androidSupportedAspectRatio: 1
|
||||
androidMaxAspectRatio: 2.1
|
||||
applicationIdentifier: {}
|
||||
applicationIdentifier:
|
||||
Standalone: com.DefaultCompany.---------
|
||||
buildNumber:
|
||||
Standalone: 0
|
||||
VisionOS: 0
|
||||
@@ -404,6 +405,9 @@ PlayerSettings:
|
||||
- m_BuildTarget: HMIAndroidPlayer
|
||||
m_APIs: 150000000b000000
|
||||
m_Automatic: 1
|
||||
- m_BuildTarget: WeixinMiniGameSupport
|
||||
m_APIs: 0b000000
|
||||
m_Automatic: 0
|
||||
m_BuildTargetVRSettings:
|
||||
- m_BuildTarget: Standalone
|
||||
m_Enabled: 0
|
||||
@@ -454,6 +458,8 @@ PlayerSettings:
|
||||
m_Format: 3
|
||||
- m_BuildTarget: WebGL
|
||||
m_Format: 3
|
||||
- m_BuildTarget: WeixinMiniGame
|
||||
m_Format: 3
|
||||
playModeTestRunnerEnabled: 0
|
||||
runPlayModeTestAsEditModeTest: 0
|
||||
actionOnDotNetUnhandledException: 1
|
||||
@@ -860,6 +866,7 @@ PlayerSettings:
|
||||
webGLPowerPreference: 2
|
||||
scriptingDefineSymbols:
|
||||
Standalone: RH_SerializedDictionary
|
||||
WeixinMiniGame: RH_SerializedDictionary
|
||||
additionalCompilerArguments: {}
|
||||
platformArchitecture: {}
|
||||
scriptingBackend: {}
|
||||
@@ -1028,7 +1035,7 @@ PlayerSettings:
|
||||
weixinMiniGameInjectStrippedMethodLogger: 0
|
||||
weixinMiniGameEnableDotNetWasmExceptionHandling: 1
|
||||
weixinMiniGamePreserveEventDelegate: 0
|
||||
activeSubplatform: 0
|
||||
activeSubplatform: 1
|
||||
serializedFileTypeTreeMemoryOptimization: 0
|
||||
stripBuiltinResources: 0
|
||||
minigameMTRendering: 0
|
||||
|
||||
@@ -6,7 +6,7 @@ QualitySettings:
|
||||
serializedVersion: 5
|
||||
m_CurrentQuality: 2
|
||||
m_QualitySettings:
|
||||
- serializedVersion: 2
|
||||
- serializedVersion: 3
|
||||
name: Very Low
|
||||
pixelLightCount: 0
|
||||
shadows: 0
|
||||
@@ -19,16 +19,20 @@ QualitySettings:
|
||||
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||
shadowmaskMode: 0
|
||||
skinWeights: 1
|
||||
textureQuality: 1
|
||||
globalTextureMipmapLimit: 1
|
||||
textureMipmapLimitSettings: []
|
||||
anisotropicTextures: 0
|
||||
antiAliasing: 0
|
||||
softParticles: 0
|
||||
softVegetation: 0
|
||||
realtimeReflectionProbes: 0
|
||||
billboardsFaceCameraPosition: 0
|
||||
useLegacyDetailDistribution: 1
|
||||
vSyncCount: 0
|
||||
realtimeGICPUUsage: 25
|
||||
lodBias: 0.3
|
||||
maximumLODLevel: 0
|
||||
enableLODCrossFade: 1
|
||||
streamingMipmapsActive: 0
|
||||
streamingMipmapsAddAllCameras: 1
|
||||
streamingMipmapsMemoryBudget: 512
|
||||
@@ -41,8 +45,25 @@ QualitySettings:
|
||||
asyncUploadPersistentBuffer: 1
|
||||
resolutionScalingFixedDPIFactor: 1
|
||||
customRenderPipeline: {fileID: 0}
|
||||
terrainQualityOverrides: 0
|
||||
terrainPixelError: 1
|
||||
terrainDetailDensityScale: 1
|
||||
terrainBasemapDistance: 1000
|
||||
terrainDetailDistance: 80
|
||||
terrainTreeDistance: 5000
|
||||
terrainBillboardStart: 50
|
||||
terrainFadeLength: 5
|
||||
terrainMaxTrees: 50
|
||||
vgPersistentBufferSize: 256
|
||||
vgStreamingBufferSize: 512
|
||||
vgPageUploadBufferSize: 64
|
||||
vgPixelsPerEdge: 1
|
||||
vgVertexCacheActive: 0
|
||||
vgVertexCacheAutoVertexAnim: 0
|
||||
vgVertexCacheMaxEntries: 32768
|
||||
vgVertexCacheLoadFactor: 0.67
|
||||
excludedTargetPlatforms: []
|
||||
- serializedVersion: 2
|
||||
- serializedVersion: 3
|
||||
name: Low
|
||||
pixelLightCount: 0
|
||||
shadows: 0
|
||||
@@ -55,16 +76,20 @@ QualitySettings:
|
||||
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||
shadowmaskMode: 0
|
||||
skinWeights: 2
|
||||
textureQuality: 0
|
||||
globalTextureMipmapLimit: 0
|
||||
textureMipmapLimitSettings: []
|
||||
anisotropicTextures: 0
|
||||
antiAliasing: 0
|
||||
softParticles: 0
|
||||
softVegetation: 0
|
||||
realtimeReflectionProbes: 0
|
||||
billboardsFaceCameraPosition: 0
|
||||
useLegacyDetailDistribution: 1
|
||||
vSyncCount: 0
|
||||
realtimeGICPUUsage: 25
|
||||
lodBias: 0.4
|
||||
maximumLODLevel: 0
|
||||
enableLODCrossFade: 1
|
||||
streamingMipmapsActive: 0
|
||||
streamingMipmapsAddAllCameras: 1
|
||||
streamingMipmapsMemoryBudget: 512
|
||||
@@ -77,8 +102,25 @@ QualitySettings:
|
||||
asyncUploadPersistentBuffer: 1
|
||||
resolutionScalingFixedDPIFactor: 1
|
||||
customRenderPipeline: {fileID: 0}
|
||||
terrainQualityOverrides: 0
|
||||
terrainPixelError: 1
|
||||
terrainDetailDensityScale: 1
|
||||
terrainBasemapDistance: 1000
|
||||
terrainDetailDistance: 80
|
||||
terrainTreeDistance: 5000
|
||||
terrainBillboardStart: 50
|
||||
terrainFadeLength: 5
|
||||
terrainMaxTrees: 50
|
||||
vgPersistentBufferSize: 256
|
||||
vgStreamingBufferSize: 512
|
||||
vgPageUploadBufferSize: 64
|
||||
vgPixelsPerEdge: 1
|
||||
vgVertexCacheActive: 0
|
||||
vgVertexCacheAutoVertexAnim: 0
|
||||
vgVertexCacheMaxEntries: 32768
|
||||
vgVertexCacheLoadFactor: 0.67
|
||||
excludedTargetPlatforms: []
|
||||
- serializedVersion: 2
|
||||
- serializedVersion: 3
|
||||
name: Medium
|
||||
pixelLightCount: 1
|
||||
shadows: 1
|
||||
@@ -91,16 +133,20 @@ QualitySettings:
|
||||
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||
shadowmaskMode: 0
|
||||
skinWeights: 2
|
||||
textureQuality: 0
|
||||
globalTextureMipmapLimit: 0
|
||||
textureMipmapLimitSettings: []
|
||||
anisotropicTextures: 1
|
||||
antiAliasing: 0
|
||||
softParticles: 0
|
||||
softVegetation: 0
|
||||
realtimeReflectionProbes: 0
|
||||
billboardsFaceCameraPosition: 0
|
||||
useLegacyDetailDistribution: 1
|
||||
vSyncCount: 0
|
||||
realtimeGICPUUsage: 25
|
||||
lodBias: 0.7
|
||||
maximumLODLevel: 0
|
||||
enableLODCrossFade: 1
|
||||
streamingMipmapsActive: 0
|
||||
streamingMipmapsAddAllCameras: 1
|
||||
streamingMipmapsMemoryBudget: 512
|
||||
@@ -113,8 +159,25 @@ QualitySettings:
|
||||
asyncUploadPersistentBuffer: 1
|
||||
resolutionScalingFixedDPIFactor: 1
|
||||
customRenderPipeline: {fileID: 0}
|
||||
terrainQualityOverrides: 0
|
||||
terrainPixelError: 1
|
||||
terrainDetailDensityScale: 1
|
||||
terrainBasemapDistance: 1000
|
||||
terrainDetailDistance: 80
|
||||
terrainTreeDistance: 5000
|
||||
terrainBillboardStart: 50
|
||||
terrainFadeLength: 5
|
||||
terrainMaxTrees: 50
|
||||
vgPersistentBufferSize: 256
|
||||
vgStreamingBufferSize: 512
|
||||
vgPageUploadBufferSize: 64
|
||||
vgPixelsPerEdge: 1
|
||||
vgVertexCacheActive: 0
|
||||
vgVertexCacheAutoVertexAnim: 0
|
||||
vgVertexCacheMaxEntries: 32768
|
||||
vgVertexCacheLoadFactor: 0.67
|
||||
excludedTargetPlatforms: []
|
||||
- serializedVersion: 2
|
||||
- serializedVersion: 3
|
||||
name: High
|
||||
pixelLightCount: 2
|
||||
shadows: 2
|
||||
@@ -127,16 +190,20 @@ QualitySettings:
|
||||
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||
shadowmaskMode: 1
|
||||
skinWeights: 2
|
||||
textureQuality: 0
|
||||
globalTextureMipmapLimit: 0
|
||||
textureMipmapLimitSettings: []
|
||||
anisotropicTextures: 1
|
||||
antiAliasing: 0
|
||||
softParticles: 0
|
||||
softVegetation: 1
|
||||
realtimeReflectionProbes: 1
|
||||
billboardsFaceCameraPosition: 1
|
||||
useLegacyDetailDistribution: 1
|
||||
vSyncCount: 0
|
||||
realtimeGICPUUsage: 50
|
||||
lodBias: 1
|
||||
maximumLODLevel: 0
|
||||
enableLODCrossFade: 1
|
||||
streamingMipmapsActive: 0
|
||||
streamingMipmapsAddAllCameras: 1
|
||||
streamingMipmapsMemoryBudget: 512
|
||||
@@ -149,8 +216,25 @@ QualitySettings:
|
||||
asyncUploadPersistentBuffer: 1
|
||||
resolutionScalingFixedDPIFactor: 1
|
||||
customRenderPipeline: {fileID: 0}
|
||||
terrainQualityOverrides: 0
|
||||
terrainPixelError: 1
|
||||
terrainDetailDensityScale: 1
|
||||
terrainBasemapDistance: 1000
|
||||
terrainDetailDistance: 80
|
||||
terrainTreeDistance: 5000
|
||||
terrainBillboardStart: 50
|
||||
terrainFadeLength: 5
|
||||
terrainMaxTrees: 50
|
||||
vgPersistentBufferSize: 256
|
||||
vgStreamingBufferSize: 512
|
||||
vgPageUploadBufferSize: 64
|
||||
vgPixelsPerEdge: 1
|
||||
vgVertexCacheActive: 0
|
||||
vgVertexCacheAutoVertexAnim: 0
|
||||
vgVertexCacheMaxEntries: 32768
|
||||
vgVertexCacheLoadFactor: 0.67
|
||||
excludedTargetPlatforms: []
|
||||
- serializedVersion: 2
|
||||
- serializedVersion: 3
|
||||
name: Very High
|
||||
pixelLightCount: 3
|
||||
shadows: 2
|
||||
@@ -163,16 +247,20 @@ QualitySettings:
|
||||
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||
shadowmaskMode: 1
|
||||
skinWeights: 4
|
||||
textureQuality: 0
|
||||
globalTextureMipmapLimit: 0
|
||||
textureMipmapLimitSettings: []
|
||||
anisotropicTextures: 1
|
||||
antiAliasing: 2
|
||||
softParticles: 1
|
||||
softVegetation: 1
|
||||
realtimeReflectionProbes: 1
|
||||
billboardsFaceCameraPosition: 1
|
||||
useLegacyDetailDistribution: 1
|
||||
vSyncCount: 0
|
||||
realtimeGICPUUsage: 50
|
||||
lodBias: 1.5
|
||||
maximumLODLevel: 0
|
||||
enableLODCrossFade: 1
|
||||
streamingMipmapsActive: 0
|
||||
streamingMipmapsAddAllCameras: 1
|
||||
streamingMipmapsMemoryBudget: 512
|
||||
@@ -185,8 +273,25 @@ QualitySettings:
|
||||
asyncUploadPersistentBuffer: 1
|
||||
resolutionScalingFixedDPIFactor: 1
|
||||
customRenderPipeline: {fileID: 0}
|
||||
terrainQualityOverrides: 0
|
||||
terrainPixelError: 1
|
||||
terrainDetailDensityScale: 1
|
||||
terrainBasemapDistance: 1000
|
||||
terrainDetailDistance: 80
|
||||
terrainTreeDistance: 5000
|
||||
terrainBillboardStart: 50
|
||||
terrainFadeLength: 5
|
||||
terrainMaxTrees: 50
|
||||
vgPersistentBufferSize: 256
|
||||
vgStreamingBufferSize: 512
|
||||
vgPageUploadBufferSize: 64
|
||||
vgPixelsPerEdge: 1
|
||||
vgVertexCacheActive: 0
|
||||
vgVertexCacheAutoVertexAnim: 0
|
||||
vgVertexCacheMaxEntries: 32768
|
||||
vgVertexCacheLoadFactor: 0.67
|
||||
excludedTargetPlatforms: []
|
||||
- serializedVersion: 2
|
||||
- serializedVersion: 3
|
||||
name: Ultra
|
||||
pixelLightCount: 4
|
||||
shadows: 2
|
||||
@@ -199,16 +304,20 @@ QualitySettings:
|
||||
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||
shadowmaskMode: 1
|
||||
skinWeights: 4
|
||||
textureQuality: 0
|
||||
globalTextureMipmapLimit: 0
|
||||
textureMipmapLimitSettings: []
|
||||
anisotropicTextures: 1
|
||||
antiAliasing: 4
|
||||
softParticles: 1
|
||||
softVegetation: 1
|
||||
realtimeReflectionProbes: 1
|
||||
billboardsFaceCameraPosition: 1
|
||||
useLegacyDetailDistribution: 1
|
||||
vSyncCount: 0
|
||||
realtimeGICPUUsage: 100
|
||||
lodBias: 2
|
||||
maximumLODLevel: 0
|
||||
enableLODCrossFade: 1
|
||||
streamingMipmapsActive: 0
|
||||
streamingMipmapsAddAllCameras: 1
|
||||
streamingMipmapsMemoryBudget: 512
|
||||
@@ -221,7 +330,25 @@ QualitySettings:
|
||||
asyncUploadPersistentBuffer: 1
|
||||
resolutionScalingFixedDPIFactor: 1
|
||||
customRenderPipeline: {fileID: 0}
|
||||
terrainQualityOverrides: 0
|
||||
terrainPixelError: 1
|
||||
terrainDetailDensityScale: 1
|
||||
terrainBasemapDistance: 1000
|
||||
terrainDetailDistance: 80
|
||||
terrainTreeDistance: 5000
|
||||
terrainBillboardStart: 50
|
||||
terrainFadeLength: 5
|
||||
terrainMaxTrees: 50
|
||||
vgPersistentBufferSize: 256
|
||||
vgStreamingBufferSize: 512
|
||||
vgPageUploadBufferSize: 64
|
||||
vgPixelsPerEdge: 1
|
||||
vgVertexCacheActive: 0
|
||||
vgVertexCacheAutoVertexAnim: 0
|
||||
vgVertexCacheMaxEntries: 32768
|
||||
vgVertexCacheLoadFactor: 0.67
|
||||
excludedTargetPlatforms: []
|
||||
m_TextureMipmapLimitGroupNames: []
|
||||
m_PerPlatformDefaultQuality:
|
||||
Android: 2
|
||||
Lumin: 5
|
||||
@@ -229,9 +356,11 @@ QualitySettings:
|
||||
Nintendo Switch: 5
|
||||
PS4: 5
|
||||
PSP2: 2
|
||||
Server: 0
|
||||
Stadia: 5
|
||||
Standalone: 5
|
||||
WebGL: 3
|
||||
WeixinMiniGame: 2
|
||||
Windows Store Apps: 5
|
||||
XboxOne: 5
|
||||
iPhone: 2
|
||||
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
Library
|
||||
library
|
||||
Temp
|
||||
temp
|
||||
Obj
|
||||
obj
|
||||
Build
|
||||
build
|
||||
Builds
|
||||
builds
|
||||
UserSettings
|
||||
usersettings
|
||||
MemoryCaptures
|
||||
memorycaptures
|
||||
Logs
|
||||
logs
|
||||
**/Assets/AssetStoreTools
|
||||
**/assets/assetstoretools
|
||||
/Assets/Plugins/PlasticSCM*
|
||||
/assets/plugins/PlasticSCM*
|
||||
*.private
|
||||
*.private.meta
|
||||
^*.private.[0-9]+$
|
||||
^*.private.[0-9]+.meta$
|
||||
.vs
|
||||
.vscode
|
||||
.gradle
|
||||
ExportedObj
|
||||
.consulo
|
||||
*.csproj
|
||||
*.unityproj
|
||||
*.sln
|
||||
*.suo
|
||||
*.tmp
|
||||
*.user
|
||||
*.userprefs
|
||||
*.pidb
|
||||
*.booproj
|
||||
*.svd
|
||||
*.pdb
|
||||
*.mdb
|
||||
*.opendb
|
||||
*.VC.db
|
||||
*.pidb.meta
|
||||
*.pdb.meta
|
||||
*.mdb.meta
|
||||
sysinfo.txt
|
||||
crashlytics-build.properties
|
||||
*.apk
|
||||
*.aab
|
||||
*.app
|
||||
*.unitypackage
|
||||
~UnityDirMonSyncFile~*
|
||||
**/Assets/AddressableAssetsData/*/*.bin*
|
||||
**/assets/addressableassetsdata/*/*.bin*
|
||||
**/Assets/StreamingAssets/aa.meta
|
||||
**/assets/streamingassets/*/aa/*
|
||||
.DS_Store*
|
||||
Thumbs.db
|
||||
Desktop.ini
|
||||
Reference in new issue
Block a user