├── Assets ├── HighPerformanceDynamicBone.meta ├── HighPerformanceDynamicBone │ ├── DynamicBone.cs │ ├── DynamicBone.cs.meta │ ├── DynamicBoneCollider.cs │ ├── DynamicBoneCollider.cs.meta │ ├── DynamicBoneManager.cs │ ├── DynamicBoneManager.cs.meta │ ├── Util.cs │ └── Util.cs.meta ├── Sample.meta └── Sample │ ├── ForkedBone(Developing).meta │ ├── ForkedBone(Developing) │ ├── ForkedBone.unity │ └── ForkedBone.unity.meta │ ├── Scenes.meta │ ├── StressTest.meta │ └── StressTest │ ├── Prefabs.meta │ ├── Prefabs │ ├── RootParent.prefab │ └── RootParent.prefab.meta │ ├── Scripts.meta │ ├── Scripts │ ├── AutoMove.cs │ ├── AutoMove.cs.meta │ ├── Generator.cs │ └── Generator.cs.meta │ ├── StressTest.unity │ └── StressTest.unity.meta ├── Packages ├── manifest.json └── packages-lock.json ├── ProjectSettings ├── AudioManager.asset ├── BurstAotSettings_StandaloneWindows.json ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── PackageManagerSettings.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset ├── VersionControlSettings.asset └── XRSettings.asset └── README.md /Assets/HighPerformanceDynamicBone.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e6ba56ede2604dd4082ed2d0b4f435dd 3 | folderAsset: yes 4 | DefaultImporter: 5 | userData: 6 | -------------------------------------------------------------------------------- /Assets/HighPerformanceDynamicBone/DynamicBone.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using Unity.Mathematics; 5 | using Unity.Collections; 6 | 7 | namespace HighPerformanceDynamicBone 8 | { 9 | 10 | // o <-根骨骼父物体,由此读取运动信息并让骨骼进行模拟,HeadInfo中的位置旋转等信息都是这个物体的,同时也存储一些骨骼结构通用的信息 11 | // | 12 | // o <-挂载DynamicBone脚本的物体,也是骨骼树形结构的根骨骼, 同时也是最上级的ParticleInfo 13 | // /\ 14 | // o o <-子Particle 15 | // /\ /\ 16 | // o oo o <-子Particle 17 | 18 | 19 | 20 | public struct HeadInfo 21 | { 22 | public int Index; 23 | public float3 ObjectMove; 24 | public float3 ObjectPrevPosition; 25 | public float3 Gravity; 26 | public float ObjectScale; 27 | public float Weight; 28 | public float3 Force; 29 | public float3 FinalForce; 30 | public int ParticleCount; 31 | public int DataOffsetInGlobalArray; 32 | 33 | public float3 RootParentBoneWorldPosition; 34 | public quaternion RootParentBoneWorldRotation; 35 | } 36 | 37 | 38 | public struct ParticleInfo 39 | { 40 | public int Index; 41 | public int ParentIndex; 42 | public float Damping; 43 | public float Elasticity; 44 | public float Stiffness; 45 | public float Inert; 46 | public float Friction; 47 | public float Radius; 48 | public float BoneLength; 49 | public bool IsCollide; 50 | public bool IsEndBone; 51 | public bool NotNull; 52 | 53 | public int ChildCount; 54 | 55 | public float3 EndOffset; 56 | public float3 InitLocalPosition; 57 | public quaternion InitLocalRotation; 58 | 59 | public float3 LocalPosition; 60 | public quaternion LocalRotation; 61 | 62 | public float3 TempWorldPosition; 63 | public float3 TempPrevWorldPosition; 64 | 65 | public float3 ParentScale; 66 | 67 | public float3 WorldPosition; 68 | public quaternion WorldRotation; 69 | } 70 | 71 | public class DynamicBone : MonoBehaviour 72 | { 73 | [Tooltip("运动的根骨骼")] [SerializeField] private Transform rootBoneTransform = null; 74 | 75 | [Tooltip("阻尼:How much the bones slowed down.")] [SerializeField] [Range(0, 1)] 76 | private float damping = 0.1f; 77 | 78 | [SerializeField] private AnimationCurve dampingDistribution = null; 79 | 80 | [Tooltip("弹性:How much the force applied to return each bone to original orientation.")] 81 | [SerializeField] 82 | [Range(0, 1)] 83 | private float elasticity = 0.1f; 84 | 85 | [SerializeField] private AnimationCurve elasticityDistribution = null; 86 | 87 | [Tooltip("刚度:How much bone's original orientation are preserved.")] [SerializeField] [Range(0, 1)] 88 | private float stiffness = 0.1f; 89 | 90 | [SerializeField] private AnimationCurve stiffnessDistribution = null; 91 | 92 | [Tooltip("惰性:How much character's position change is ignored in physics simulation.")] 93 | [SerializeField] 94 | [Range(0, 1)] 95 | private float inert = 0; 96 | 97 | [SerializeField] private AnimationCurve inertDistribution = null; 98 | 99 | [Tooltip("摩擦力:How much the bones slowed down when collide.")] [SerializeField] 100 | private float friction = 0; 101 | 102 | [SerializeField] private AnimationCurve frictionDistribution = null; 103 | 104 | [Tooltip("半径:Each bone can be a sphere to collide with colliders. Radius describe sphere's size.")] [SerializeField] 105 | private float radius = 0; 106 | 107 | [SerializeField] private AnimationCurve radiusDistribution = null; 108 | 109 | [Tooltip("The force apply to bones. Partial force apply to character's initial pose is cancelled out.")] [SerializeField] 110 | private Vector3 gravity = Vector3.zero; 111 | 112 | [Tooltip("The force apply to bones.")] [SerializeField] 113 | private Vector3 force = Vector3.zero; 114 | 115 | [Tooltip("如果这个值不是0,最后会添加一个新的节点")] 116 | [SerializeField] private float endLength = 0; 117 | 118 | [Tooltip("如果这个值不是zero,最后会添加一个新的节点")] 119 | [SerializeField] private Vector3 endOffset = Vector3.zero; 120 | 121 | [Tooltip("需要和骨骼交互的碰撞器")] [SerializeField] 122 | private DynamicBoneCollider[] colliderArray = null; 123 | 124 | [Tooltip("从指定的节点开始后面的子节点都不会进行物理模拟")][SerializeField] 125 | private Transform[] exclusionTransformArray = null; 126 | 127 | private float boneTotalLength; 128 | 129 | private float weight = 1.0f; 130 | 131 | [NonSerialized] public NativeArray ParticleInfoArray; 132 | [NonSerialized] public Transform[] ParticleTransformArray; 133 | 134 | private int particleCount; 135 | private bool hasInitialized; 136 | 137 | /// 138 | /// 获取挂载该脚本的骨骼的父物体用于物理模拟,如果父物体为空,则此骨骼无效 139 | /// 140 | public Transform RootBoneParentTransform { get; private set; } 141 | 142 | /// 143 | /// 此HeadInfo对应的是RootBoneParentTransform 144 | /// 145 | [HideInInspector] public HeadInfo HeadInfo; 146 | 147 | private void OnValidate() 148 | { 149 | if(!RootBoneParentTransform) return; 150 | if (!hasInitialized) return; 151 | 152 | damping = Mathf.Clamp01(damping); 153 | elasticity = Mathf.Clamp01(elasticity); 154 | stiffness = Mathf.Clamp01(stiffness); 155 | inert = Mathf.Clamp01(inert); 156 | friction = Mathf.Clamp01(friction); 157 | radius = Mathf.Max(radius, 0); 158 | 159 | if (Application.isEditor && Application.isPlaying) 160 | { 161 | InitTransforms(); 162 | UpdateParameters(); 163 | DynamicBoneManager.Instance.RefreshHeadInfo(in HeadInfo); 164 | DynamicBoneManager.Instance.RefreshParticleInfo(in ParticleInfoArray, 165 | in HeadInfo.DataOffsetInGlobalArray); 166 | } 167 | } 168 | 169 | private void Awake() 170 | { 171 | if (!rootBoneTransform) 172 | { 173 | rootBoneTransform = transform; 174 | } 175 | RootBoneParentTransform = rootBoneTransform.parent; 176 | if(!RootBoneParentTransform) return; 177 | 178 | ParticleInfoArray = new NativeArray(DynamicBoneManager.MaxParticleLimit, Allocator.Persistent); 179 | ParticleTransformArray = new Transform[DynamicBoneManager.MaxParticleLimit]; 180 | 181 | SetupParticles(); 182 | DynamicBoneManager.Instance.AddBone(this); 183 | hasInitialized = true; 184 | } 185 | 186 | public HeadInfo ResetHeadIndexAndDataOffset(int headIndex) 187 | { 188 | HeadInfo.Index = headIndex; 189 | HeadInfo.DataOffsetInGlobalArray = headIndex * DynamicBoneManager.MaxParticleLimit; 190 | return HeadInfo; 191 | } 192 | 193 | public void ClearJobData() 194 | { 195 | if (ParticleInfoArray.IsCreated) 196 | { 197 | ParticleInfoArray.Dispose(); 198 | } 199 | 200 | ParticleTransformArray = null; 201 | } 202 | 203 | private void SetupParticles() 204 | { 205 | if (rootBoneTransform == null) 206 | return; 207 | 208 | particleCount = 0; 209 | HeadInfo = new HeadInfo 210 | { 211 | ObjectPrevPosition = rootBoneTransform.position, 212 | ObjectScale = math.abs(rootBoneTransform.lossyScale.x), 213 | Gravity = gravity, 214 | Weight = weight, 215 | Force = force, 216 | ParticleCount = 0, 217 | }; 218 | 219 | particleCount = 0; 220 | boneTotalLength = 0; 221 | AppendParticles(rootBoneTransform, -1, 0, in HeadInfo); 222 | UpdateParameters(); 223 | 224 | HeadInfo.ParticleCount = particleCount; 225 | } 226 | 227 | //TODO:这个循环需要整理一下,目前过于混乱了 228 | private void AppendParticles(Transform b, int parentIndex, float boneLength, in HeadInfo head) 229 | { 230 | ParticleInfo particle = new ParticleInfo 231 | { 232 | Index = particleCount, 233 | ParentIndex = parentIndex, 234 | NotNull = true 235 | }; 236 | 237 | particleCount++; 238 | 239 | 240 | if (b != null) 241 | { 242 | particle.LocalPosition = particle.InitLocalPosition = b.localPosition; 243 | particle.LocalRotation = particle.InitLocalRotation = b.localRotation; 244 | particle.TempWorldPosition = particle.TempPrevWorldPosition = particle.WorldPosition = b.position; 245 | particle.WorldRotation = b.rotation; 246 | particle.ParentScale = b.parent.lossyScale; 247 | } 248 | else //End Bone 249 | { 250 | Transform pb = ParticleTransformArray[parentIndex]; 251 | if (endLength > 0) 252 | { 253 | Transform ppb = pb.parent; 254 | if (ppb != null) 255 | particle.EndOffset = pb.InverseTransformPoint((pb.position * 2 - ppb.position)) * endLength; 256 | else 257 | particle.EndOffset = new Vector3(endLength, 0, 0); 258 | } 259 | else 260 | { 261 | particle.EndOffset = 262 | pb.InverseTransformPoint(rootBoneTransform.TransformDirection(endOffset) + pb.position); 263 | } 264 | 265 | particle.TempWorldPosition = particle.TempPrevWorldPosition = pb.TransformPoint(particle.EndOffset); 266 | particle.IsEndBone = true; 267 | } 268 | 269 | //两Particle成一根骨,从第二个Particle开始计算骨骼长度 270 | if (parentIndex >= 0) 271 | { 272 | boneLength += math.distance(ParticleTransformArray[parentIndex].position, particle.TempWorldPosition); 273 | particle.BoneLength = boneLength; 274 | boneTotalLength = math.max(boneTotalLength, boneLength); 275 | } 276 | 277 | int index = particle.Index; 278 | ParticleInfoArray[particle.Index] = particle; 279 | ParticleTransformArray[particle.Index] = b; 280 | 281 | if (b != null) 282 | { 283 | particle.ChildCount = b.childCount; 284 | for (int i = 0; i < b.childCount; ++i) 285 | { 286 | bool exclude = false; 287 | if (exclusionTransformArray != null) 288 | { 289 | for (int j = 0; j < exclusionTransformArray.Length; j++) 290 | { 291 | Transform e = exclusionTransformArray[j]; 292 | if (e == b.GetChild(i)) 293 | { 294 | exclude = true; 295 | break; 296 | } 297 | } 298 | } 299 | 300 | if (!exclude) 301 | { 302 | AppendParticles(b.GetChild(i), index, boneLength, in head); 303 | } 304 | //如果到该节点被剔除了,仍需要在最后添加一个空节点 305 | else if ( endLength > 0 || endOffset != Vector3.zero) 306 | { 307 | AppendParticles(null, index, boneLength, in head); 308 | } 309 | } 310 | 311 | if (b.childCount == 0 && (endLength > 0 || endOffset != Vector3.zero)) 312 | { 313 | AppendParticles(null, index, boneLength, in head); 314 | } 315 | } 316 | } 317 | 318 | /// 319 | /// 用于将所有Particle恢复至最初位置 320 | /// 321 | private void InitTransforms() 322 | { 323 | for (int i = 0; i < ParticleInfoArray.Length; ++i) 324 | { 325 | ParticleInfo particleInfo = ParticleInfoArray[i]; 326 | particleInfo.LocalPosition = particleInfo.InitLocalPosition; 327 | particleInfo.LocalRotation = particleInfo.InitLocalRotation; 328 | ParticleInfoArray[i] = particleInfo; 329 | } 330 | } 331 | 332 | private void UpdateParameters() 333 | { 334 | if (rootBoneTransform == null) 335 | return; 336 | 337 | for (int i = 0; i < particleCount; ++i) 338 | { 339 | ParticleInfo particle = ParticleInfoArray[i]; 340 | 341 | particle.Damping = damping; 342 | particle.Elasticity = elasticity; 343 | particle.Stiffness = stiffness; 344 | particle.Inert = inert; 345 | particle.Friction = friction; 346 | particle.Radius = radius; 347 | 348 | if (boneTotalLength > 0) 349 | { 350 | float a = particle.BoneLength / boneTotalLength; 351 | 352 | if (dampingDistribution != null && dampingDistribution.keys.Length > 0) 353 | particle.Damping *= dampingDistribution.Evaluate(a); 354 | if (elasticityDistribution != null && elasticityDistribution.keys.Length > 0) 355 | particle.Elasticity *= elasticityDistribution.Evaluate(a); 356 | if (stiffnessDistribution != null && stiffnessDistribution.keys.Length > 0) 357 | particle.Stiffness *= stiffnessDistribution.Evaluate(a); 358 | if (inertDistribution != null && inertDistribution.keys.Length > 0) 359 | particle.Inert *= inertDistribution.Evaluate(a); 360 | if (frictionDistribution != null && frictionDistribution.keys.Length > 0) 361 | particle.Friction *= frictionDistribution.Evaluate(a); 362 | if (radiusDistribution != null && radiusDistribution.keys.Length > 0) 363 | particle.Radius *= radiusDistribution.Evaluate(a); 364 | } 365 | 366 | particle.Damping = Mathf.Clamp01(particle.Damping); 367 | particle.Elasticity = Mathf.Clamp01(particle.Elasticity); 368 | particle.Stiffness = Mathf.Clamp01(particle.Stiffness); 369 | particle.Inert = Mathf.Clamp01(particle.Inert); 370 | particle.Friction = Mathf.Clamp01(particle.Friction); 371 | particle.Radius = Mathf.Max(particle.Radius, 0); 372 | 373 | ParticleInfoArray[i] = particle; 374 | } 375 | } 376 | 377 | public DynamicBoneCollider[] GetColliderArray() 378 | { 379 | return colliderArray; 380 | } 381 | 382 | private void OnDestroy() 383 | { 384 | ParticleInfoArray.Dispose(); 385 | } 386 | } 387 | } 388 | 389 | -------------------------------------------------------------------------------- /Assets/HighPerformanceDynamicBone/DynamicBone.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 42be98af2f222d44d953caa65c5dd995 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/HighPerformanceDynamicBone/DynamicBoneCollider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Unity.Burst; 3 | using UnityEngine; 4 | using Unity.Mathematics; 5 | using UnityEngine.Jobs; 6 | using UnityEngine.Serialization; 7 | 8 | namespace HighPerformanceDynamicBone 9 | { 10 | public enum Direction 11 | { 12 | X, 13 | Y, 14 | Z 15 | } 16 | 17 | public enum Bound 18 | { 19 | Outside, 20 | Inside 21 | } 22 | 23 | public struct ColliderInfo 24 | { 25 | public int Index; 26 | public bool IsGlobal; 27 | public Bound Bound; 28 | public float Height; 29 | public float Radius; 30 | public float3 Center; 31 | public Direction Direction; 32 | public float Scale; 33 | public float3 Position; 34 | public quaternion Rotation; 35 | } 36 | 37 | public class DynamicBoneCollider : MonoBehaviour 38 | { 39 | [Tooltip("是否为全局碰撞器")] [SerializeField] private bool isGlobal = false; 40 | 41 | [Tooltip("碰撞器半径")] [SerializeField] private float radius = 0.5f; 42 | 43 | [Tooltip("高度,大于0即为胶囊体")] [SerializeField] 44 | private float height = 0; 45 | 46 | [Tooltip("高度的轴向")] [SerializeField] private Direction direction = Direction.Y; 47 | 48 | [Tooltip("碰撞器中心位置, 相对于挂载物体的局部空间")] [SerializeField] 49 | private Vector3 center = Vector3.zero; 50 | 51 | [Tooltip("把骨骼束缚在外面或里面")] [SerializeField] 52 | private Bound bound = Bound.Outside; 53 | 54 | 55 | [HideInInspector] public ColliderInfo ColliderInfo; 56 | 57 | private bool hasInitialized; 58 | 59 | private void OnValidate() 60 | { 61 | if (!hasInitialized) return; 62 | if (Application.isEditor && Application.isPlaying) 63 | { 64 | ColliderInfo.Radius = math.max(radius, 0); 65 | ColliderInfo.Height = math.max(height, 0); 66 | ColliderInfo.Bound = bound; 67 | ColliderInfo.Center = center; 68 | ColliderInfo.Direction = direction; 69 | DynamicBoneManager.Instance.RefreshColliderInfo(ColliderInfo); 70 | } 71 | } 72 | 73 | private void Awake() 74 | { 75 | ColliderInfo = new ColliderInfo 76 | { 77 | IsGlobal = isGlobal, 78 | Center = center, 79 | Radius = radius, 80 | Height = height, 81 | Direction = direction, 82 | Bound = bound, 83 | Scale = transform.lossyScale.x, 84 | }; 85 | DynamicBoneManager.Instance.AddCollider(this); 86 | hasInitialized = true; 87 | } 88 | 89 | private void OnDrawGizmosSelected() 90 | { 91 | if (!enabled) 92 | return; 93 | 94 | if (bound == Bound.Outside) 95 | Gizmos.color = Color.yellow; 96 | else 97 | Gizmos.color = Color.magenta; 98 | float radius = this.radius * math.abs(transform.lossyScale.x); 99 | float h = height * 0.5f - this.radius; 100 | if (h <= 0) 101 | { 102 | Gizmos.DrawWireSphere(transform.TransformPoint(center), radius); 103 | } 104 | else 105 | { 106 | float3 c0 = center; 107 | float3 c1 = center; 108 | 109 | switch (direction) 110 | { 111 | case Direction.X: 112 | c0.x -= h; 113 | c1.x += h; 114 | break; 115 | case Direction.Y: 116 | c0.y -= h; 117 | c1.y += h; 118 | break; 119 | case Direction.Z: 120 | c0.z -= h; 121 | c1.z += h; 122 | break; 123 | } 124 | 125 | Gizmos.DrawWireSphere(transform.TransformPoint(c0), radius); 126 | Gizmos.DrawWireSphere(transform.TransformPoint(c1), radius); 127 | } 128 | } 129 | 130 | public static bool HandleCollision(in ColliderInfo collider, ref float3 particlePosition, 131 | in float particleRadius) 132 | { 133 | float radius = collider.Radius * math.abs(collider.Scale); 134 | float h = collider.Height * 0.5f - radius; 135 | 136 | float3 worldPosition = Util.LocalToWorldPosition(collider.Position, collider.Rotation, collider.Center); 137 | 138 | if (h <= 0) 139 | { 140 | return collider.Bound == Bound.Outside 141 | ? OutsideSphere(ref particlePosition, particleRadius, worldPosition, radius) 142 | : InsideSphere(ref particlePosition, particleRadius, worldPosition, radius); 143 | } 144 | 145 | float3 center1 = collider.Center; 146 | float3 center2 = collider.Center; 147 | 148 | switch (collider.Direction) 149 | { 150 | case Direction.X: 151 | center1.x -= h; 152 | center2.x += h; 153 | break; 154 | case Direction.Y: 155 | center1.y -= h; 156 | center2.y += h; 157 | break; 158 | case Direction.Z: 159 | center1.z -= h; 160 | center2.z += h; 161 | break; 162 | } 163 | 164 | 165 | float3 worldCenter1 = Util.LocalToWorldPosition(collider.Position, collider.Rotation, center1); 166 | float3 worldCenter2 = Util.LocalToWorldPosition(collider.Position, collider.Rotation, center2); 167 | 168 | return collider.Bound == Bound.Outside 169 | ? OutsideCapsule(ref particlePosition, particleRadius, worldCenter1, 170 | worldCenter2, radius) 171 | : InsideCapsule(ref particlePosition, particleRadius, worldCenter1, 172 | worldCenter2, radius); 173 | } 174 | 175 | 176 | private static bool OutsideSphere(ref float3 particlePosition, float particleRadius, float3 sphereCenter, 177 | float sphereRadius) 178 | { 179 | float r = sphereRadius + particleRadius; 180 | float r2 = r * r; 181 | float3 d = particlePosition - sphereCenter; 182 | 183 | float len2 = math.lengthsq(d); 184 | 185 | // if is inside sphere, project onto sphere surface 186 | if (len2 > 0 && len2 < r2) 187 | { 188 | float len = math.sqrt(len2); 189 | particlePosition = sphereCenter + d * (r / len); 190 | return true; 191 | } 192 | 193 | return false; 194 | } 195 | 196 | private static bool InsideSphere(ref float3 particlePosition, float particleRadius, float3 sphereCenter, 197 | float sphereRadius) 198 | { 199 | float r = sphereRadius - particleRadius; 200 | float r2 = r * r; 201 | float3 d = particlePosition - sphereCenter; 202 | float len2 = math.lengthsq(d); 203 | 204 | // if is outside sphere, project onto sphere surface 205 | if (len2 > r2) 206 | { 207 | float len = math.sqrt(len2); 208 | particlePosition = sphereCenter + d * (r / len); 209 | return true; 210 | } 211 | 212 | return false; 213 | } 214 | 215 | 216 | private static bool OutsideCapsule(ref float3 particlePosition, float particleRadius, float3 capsuleP0, 217 | float3 capsuleP1, 218 | float capsuleRadius) 219 | { 220 | float r = capsuleRadius + particleRadius; 221 | float r2 = r * r; 222 | float3 dir = capsuleP1 - capsuleP0; 223 | float3 d = particlePosition - capsuleP0; 224 | float t = math.dot(d, dir); 225 | 226 | if (t <= 0) 227 | { 228 | // check sphere1 229 | float len2 = math.lengthsq(d); 230 | if (len2 > 0 && len2 < r2) 231 | { 232 | float len = math.sqrt(len2); 233 | particlePosition = capsuleP0 + d * (r / len); 234 | return true; 235 | } 236 | } 237 | else 238 | { 239 | float dl = math.lengthsq(dir); 240 | if (t >= dl) 241 | { 242 | // check sphere2 243 | d = particlePosition - capsuleP1; 244 | float len2 = math.lengthsq(d); 245 | if (len2 > 0 && len2 < r2) 246 | { 247 | float len = math.sqrt(len2); 248 | particlePosition = capsuleP1 + d * (r / len); 249 | return true; 250 | } 251 | } 252 | else if (dl > 0) 253 | { 254 | // check cylinder 255 | t /= dl; 256 | d -= dir * t; 257 | float len2 = math.lengthsq(d); 258 | 259 | 260 | if (len2 > 0 && len2 < r2) 261 | { 262 | float len = math.sqrt(len2); 263 | particlePosition += d * ((r - len) / len); 264 | return true; 265 | } 266 | } 267 | } 268 | 269 | return false; 270 | } 271 | 272 | 273 | private static bool InsideCapsule(ref float3 particlePosition, float particleRadius, float3 capsuleP0, 274 | float3 capsuleP1, 275 | float capsuleRadius) 276 | { 277 | float r = capsuleRadius - particleRadius; 278 | float r2 = r * r; 279 | float3 dir = capsuleP1 - capsuleP0; 280 | float3 d = particlePosition - capsuleP0; 281 | float t = math.dot(d, dir); 282 | 283 | if (t <= 0) 284 | { 285 | // check sphere1 286 | float len2 = math.lengthsq(d); 287 | if (len2 > r2) 288 | { 289 | float len = Mathf.Sqrt(len2); 290 | particlePosition = capsuleP0 + d * (r / len); 291 | return true; 292 | } 293 | } 294 | else 295 | { 296 | float dl = math.lengthsq(dir); 297 | if (t >= dl) 298 | { 299 | // check sphere2 300 | d = particlePosition - capsuleP1; 301 | float len2 = math.lengthsq(d); 302 | if (len2 > r2) 303 | { 304 | float len = Mathf.Sqrt(len2); 305 | particlePosition = capsuleP1 + d * (r / len); 306 | return true; 307 | } 308 | } 309 | else if (dl > 0) 310 | { 311 | // check cylinder 312 | t /= dl; 313 | d -= dir * t; 314 | float len2 = math.lengthsq(d); 315 | if (len2 > r2) 316 | { 317 | float len = Mathf.Sqrt(len2); 318 | particlePosition += d * ((r - len) / len); 319 | return true; 320 | } 321 | } 322 | } 323 | 324 | return false; 325 | } 326 | } 327 | } -------------------------------------------------------------------------------- /Assets/HighPerformanceDynamicBone/DynamicBoneCollider.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 987d515c178729f44b720568eec83553 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/HighPerformanceDynamicBone/DynamicBoneManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.Jobs; 5 | using Unity.Mathematics; 6 | using Unity.Jobs; 7 | using Unity.Burst; 8 | using Unity.Collections; 9 | 10 | namespace HighPerformanceDynamicBone 11 | { 12 | public class DynamicBoneManager : MonoBehaviour 13 | { 14 | private static DynamicBoneManager instance; 15 | 16 | public static DynamicBoneManager Instance 17 | { 18 | get 19 | { 20 | if (!instance) instance = new GameObject("DynamicBoneManager").AddComponent(); 21 | return instance; 22 | } 23 | } 24 | 25 | [SerializeField] private float updateRate = 60; 26 | 27 | /// 28 | /// 该值为所有动态骨骼链中最长的那一根所包含的节点数量 29 | /// 30 | public const int MaxParticleLimit = 20; 31 | 32 | [BurstCompile] 33 | private struct ColliderSetupJob : IJobParallelForTransform 34 | { 35 | public NativeArray ColliderArray; 36 | 37 | public void Execute(int index, TransformAccess transform) 38 | { 39 | ColliderInfo colliderInfo = ColliderArray[index]; 40 | colliderInfo.Position = transform.position; 41 | colliderInfo.Rotation = transform.rotation; 42 | // colliderInfo.Scale = transform.localScale.x; 43 | ColliderArray[index] = colliderInfo; 44 | } 45 | } 46 | 47 | [BurstCompile] 48 | private struct BoneSetupJob : IJobParallelForTransform 49 | { 50 | public NativeArray HeadArray; 51 | 52 | public void Execute(int index, TransformAccess transform) 53 | { 54 | HeadInfo curHeadInfo = HeadArray[index]; 55 | curHeadInfo.RootParentBoneWorldPosition = transform.position; 56 | curHeadInfo.RootParentBoneWorldRotation = transform.rotation; 57 | 58 | curHeadInfo.ObjectMove = transform.position - (Vector3) curHeadInfo.ObjectPrevPosition; 59 | 60 | curHeadInfo.ObjectPrevPosition = transform.position; 61 | float3 force = curHeadInfo.Gravity; 62 | float3 forceDir = math.normalizesafe(force); 63 | float3 pf = forceDir * math.max(math.dot(force, forceDir), 64 | 0); // project current gravity to rest gravity 65 | force -= pf; // remove projected gravity 66 | force = (force + curHeadInfo.Force) * curHeadInfo.ObjectScale; 67 | curHeadInfo.FinalForce = force; 68 | 69 | HeadArray[index] = curHeadInfo; 70 | } 71 | } 72 | 73 | [BurstCompile] 74 | private struct UpdateParticles1Job : IJobParallelFor 75 | { 76 | [ReadOnly] public NativeArray HeadArray; 77 | public NativeArray ParticleArray; 78 | 79 | public void Execute(int index) 80 | { 81 | int headIndex = index / MaxParticleLimit; 82 | HeadInfo curHeadInfo = HeadArray[headIndex]; 83 | 84 | int offset = index % MaxParticleLimit; 85 | //每个Head及其Particle只需要计算一次就够了! 86 | if (offset == 0) 87 | { 88 | float3 parentPosition = curHeadInfo.RootParentBoneWorldPosition; 89 | quaternion parentRotation = curHeadInfo.RootParentBoneWorldRotation; 90 | 91 | for (int j = 0; j < curHeadInfo.ParticleCount; j++) 92 | { 93 | int pIdx = curHeadInfo.DataOffsetInGlobalArray + j; 94 | ParticleInfo p = ParticleArray[pIdx]; 95 | 96 | 97 | 98 | float3 localPosition = p.LocalPosition * p.ParentScale; 99 | quaternion localRotation = p.LocalRotation; 100 | float3 worldPosition = 101 | Util.LocalToWorldPosition(parentPosition, parentRotation, localPosition); 102 | quaternion worldRotation = 103 | Util.LocalToWorldRotation(parentRotation, localRotation); 104 | 105 | 106 | 107 | parentPosition = p.WorldPosition = worldPosition; 108 | parentRotation = p.WorldRotation = worldRotation; 109 | 110 | ParticleArray[pIdx] = p; 111 | } 112 | } 113 | 114 | //如果遍历到空的部分就直接跳过就好了 115 | if (offset >= curHeadInfo.ParticleCount) return; 116 | 117 | int particleId = curHeadInfo.DataOffsetInGlobalArray + offset; 118 | ParticleInfo particle = ParticleArray[particleId]; 119 | 120 | 121 | if (particle.ParentIndex >= 0) 122 | { 123 | float3 v = particle.TempWorldPosition - particle.TempPrevWorldPosition; 124 | float3 rMove = curHeadInfo.ObjectMove * particle.Inert; 125 | particle.TempPrevWorldPosition = particle.TempWorldPosition + rMove; 126 | 127 | float damping = particle.Damping; 128 | if (particle.IsCollide) 129 | { 130 | damping += particle.Friction; 131 | if (damping > 1) 132 | damping = 1; 133 | particle.IsCollide = false; 134 | } 135 | 136 | particle.TempWorldPosition += v * (1 - damping) + curHeadInfo.FinalForce + rMove; 137 | } 138 | else 139 | { 140 | particle.TempPrevWorldPosition = particle.TempWorldPosition; 141 | particle.TempWorldPosition = particle.WorldPosition; 142 | } 143 | 144 | ParticleArray[particleId] = particle; 145 | } 146 | } 147 | 148 | [BurstCompile] 149 | private struct UpdateParticle2Job : IJobParallelFor 150 | { 151 | [ReadOnly] public NativeArray HeadArray; 152 | public NativeArray ParticleArray; 153 | [ReadOnly] public NativeArray ColliderArray; 154 | [ReadOnly] public NativeMultiHashMap BoneColliderMatchMap; 155 | 156 | public void Execute(int index) 157 | { 158 | //避免IndexOutOfRangeException:Index {0} is out of restricted IJobParallelFor range [{1}...{2] in ReadWriteBuffer. 159 | if (index % MaxParticleLimit == 0) return; 160 | 161 | int headIndex = index / MaxParticleLimit; 162 | HeadInfo curHeadInfo = HeadArray[headIndex]; 163 | 164 | //遍历到那些空的Particle就不用再计算了 165 | int offset = index % MaxParticleLimit; 166 | if (offset >= curHeadInfo.ParticleCount) return; 167 | 168 | int particleId = curHeadInfo.DataOffsetInGlobalArray + offset; 169 | ParticleInfo particleInfo = ParticleArray[particleId]; 170 | 171 | int parentParticleIndex = curHeadInfo.DataOffsetInGlobalArray + particleInfo.ParentIndex; 172 | ParticleInfo parentParticleInfo = ParticleArray[parentParticleIndex]; 173 | 174 | float3 pos = particleInfo.WorldPosition; 175 | float3 parentPos = parentParticleInfo.WorldPosition; 176 | 177 | 178 | //TODO:尾节点的长度计算方法需要用math修改 179 | Matrix4x4 m = float4x4.TRS(parentParticleInfo.TempWorldPosition, parentParticleInfo.WorldRotation, 180 | particleInfo.ParentScale); 181 | 182 | float restLen = !particleInfo.IsEndBone 183 | ? math.distance(parentPos, pos) 184 | : m.MultiplyVector(particleInfo.EndOffset).magnitude; 185 | 186 | 187 | float stiffness = math.lerp(1.0f, particleInfo.Stiffness, curHeadInfo.Weight); 188 | if (stiffness > 0 || particleInfo.Elasticity > 0) 189 | { 190 | float4x4 em0 = float4x4.TRS(parentParticleInfo.TempWorldPosition, parentParticleInfo.WorldRotation, 191 | particleInfo.ParentScale); 192 | float3 restPos = math.mul(em0, new float4(particleInfo.LocalPosition.xyz, 1)).xyz; 193 | 194 | float3 d = restPos - particleInfo.TempWorldPosition; 195 | particleInfo.TempWorldPosition += d * particleInfo.Elasticity; 196 | 197 | if (stiffness > 0) 198 | { 199 | d = restPos - particleInfo.TempWorldPosition; 200 | float len = math.length(d); 201 | float maxLen = restLen * (1 - stiffness) * 2; 202 | if (len > maxLen) 203 | particleInfo.TempWorldPosition += d * ((len - maxLen) / len); 204 | } 205 | } 206 | 207 | // //与指定的非全局碰撞器进行计算,会过滤掉挂载的全局碰撞器防止重复计算 208 | // NativeMultiHashMap.Enumerator enumerator = BoneColliderMatchMap.GetValuesForKey(headIndex); 209 | // while (enumerator.MoveNext()) 210 | // { 211 | // if (ColliderArray[enumerator.Current].IsGlobal) continue; 212 | // particleInfo.IsCollide = 213 | // DynamicBoneCollider.HandleCollision(ColliderArray[enumerator.Current], 214 | // ref particleInfo.TempWorldPosition, 215 | // in particleInfo.Radius); 216 | // } 217 | // 218 | // //与所有的全局碰撞器进行计算 219 | // for (int i = 0; i < ColliderArray.Length; i++) 220 | // { 221 | // if (!ColliderArray[i].IsGlobal) continue; 222 | // particleInfo.IsCollide = 223 | // DynamicBoneCollider.HandleCollision(ColliderArray[i], 224 | // ref particleInfo.TempWorldPosition, 225 | // in particleInfo.Radius); 226 | // } 227 | 228 | 229 | // particleInfo.WorldPosition = particleInfo.TempWorldPosition; 230 | 231 | float3 dd = parentParticleInfo.TempWorldPosition - particleInfo.TempWorldPosition; 232 | float leng = math.length(dd); 233 | if (leng > 0) 234 | { 235 | particleInfo.TempWorldPosition += dd * ((leng - restLen) / leng); 236 | } 237 | 238 | 239 | ParticleArray[particleId] = particleInfo; 240 | } 241 | } 242 | 243 | // [BurstCompile] 244 | // private struct ApplyToTransformJob : IJobParallelForTransform 245 | // { 246 | // public NativeArray ParticleArray; 247 | // 248 | // public void Execute(int index, TransformAccess transform) 249 | // { 250 | // ParticleInfo particleInfo = ParticleArray[index]; 251 | // particleInfo.WorldPosition = particleInfo.TempWorldPosition; 252 | // transform.position = particleInfo.WorldPosition; 253 | // transform.rotation = particleInfo.WorldRotation; 254 | // ParticleArray[index] = particleInfo; 255 | // } 256 | // } 257 | 258 | [BurstCompile] 259 | private struct ApplyToTransformJob : IJobParallelForTransform 260 | { 261 | public NativeArray ParticleArray; 262 | 263 | public void Execute(int index, TransformAccess transform) 264 | { 265 | ParticleInfo particleInfo = ParticleArray[index]; 266 | // ParticleInfo pp = ParticleArray[particleInfo.ParentIndexInGlobalArray]; 267 | 268 | 269 | 270 | particleInfo.WorldPosition = particleInfo.TempWorldPosition; 271 | transform.position = particleInfo.WorldPosition; 272 | transform.rotation = particleInfo.WorldRotation; 273 | ParticleArray[index] = particleInfo; 274 | } 275 | } 276 | 277 | private List boneList; 278 | private List colliderList; 279 | private NativeList headInfoList; 280 | private NativeList particleInfoList; 281 | private NativeList colliderInfoList; 282 | private NativeMultiHashMap boneColliderMatchMap; 283 | private TransformAccessArray colliderTransformAccessArray; 284 | private TransformAccessArray headTransformAccessArray; 285 | private TransformAccessArray particleTransformAccessArray; 286 | private float time; 287 | 288 | private void Awake() 289 | { 290 | boneList = new List(); 291 | colliderList = new List(); 292 | 293 | headInfoList = new NativeList(200, Allocator.Persistent); 294 | headTransformAccessArray = new TransformAccessArray(200, 64); 295 | 296 | particleInfoList = new NativeList(Allocator.Persistent); 297 | particleTransformAccessArray = new TransformAccessArray(200 * MaxParticleLimit, 64); 298 | 299 | colliderInfoList = new NativeList(Allocator.Persistent); 300 | colliderTransformAccessArray = new TransformAccessArray(200, 64); 301 | 302 | 303 | boneColliderMatchMap = new NativeMultiHashMap(200, Allocator.Persistent); 304 | } 305 | 306 | 307 | private void LateUpdate() 308 | { 309 | UpdateAll(); 310 | } 311 | 312 | private void UpdateAll() 313 | { 314 | int runningDynamicBoneCount = headInfoList.Length; 315 | if (runningDynamicBoneCount == 0) return; 316 | 317 | int dataArrayLength = runningDynamicBoneCount * MaxParticleLimit; 318 | 319 | 320 | JobHandle colliderSetup = new ColliderSetupJob() 321 | { 322 | ColliderArray = colliderInfoList 323 | }.Schedule(colliderTransformAccessArray); 324 | 325 | JobHandle boneSetup = new BoneSetupJob 326 | { 327 | HeadArray = headInfoList, 328 | }.Schedule(headTransformAccessArray); 329 | 330 | JobHandle dependency = JobHandle.CombineDependencies(colliderSetup, boneSetup); 331 | 332 | dependency = new UpdateParticles1Job 333 | { 334 | HeadArray = headInfoList, 335 | ParticleArray = particleInfoList, 336 | }.Schedule(dataArrayLength, MaxParticleLimit, dependency); 337 | 338 | dependency = new UpdateParticle2Job 339 | { 340 | HeadArray = headInfoList, 341 | ParticleArray = particleInfoList, 342 | ColliderArray = colliderInfoList, 343 | BoneColliderMatchMap = boneColliderMatchMap 344 | }.Schedule(dataArrayLength, MaxParticleLimit, dependency); 345 | 346 | dependency = new ApplyToTransformJob 347 | { 348 | ParticleArray = particleInfoList, 349 | }.Schedule(particleTransformAccessArray, dependency); 350 | 351 | dependency.Complete(); 352 | } 353 | 354 | /// 355 | /// 将目标骨骼添加到结构中 356 | /// 357 | /// 358 | public void AddBone(DynamicBone target) 359 | { 360 | int index = boneList.IndexOf(target); 361 | if (index != -1) return; // //防止重复添加 362 | 363 | boneList.Add(target); 364 | 365 | target.HeadInfo.DataOffsetInGlobalArray = particleInfoList.Length; 366 | 367 | int headIndex = headInfoList.Length; 368 | target.HeadInfo.Index = headIndex; 369 | 370 | //添加Bone和Collider的关系 371 | foreach (var c in target.GetColliderArray()) 372 | { 373 | boneColliderMatchMap.Add(headIndex, c.ColliderInfo.Index); 374 | } 375 | 376 | headInfoList.Add(target.HeadInfo); 377 | particleInfoList.AddRange(target.ParticleInfoArray); 378 | headTransformAccessArray.Add(target.RootBoneParentTransform); 379 | for (int i = 0; i < MaxParticleLimit; i++) 380 | { 381 | particleTransformAccessArray.Add(target.ParticleTransformArray[i]); 382 | } 383 | 384 | ////树状结构测试 385 | // Debug.Log(target.ParticleInfoArray.Length); 386 | // for (int i = 0; i < target.ParticleInfoArray.Length; i++) 387 | // { 388 | // Debug.Log(target.ParticleInfoArray[i].ParentIndex); 389 | // } 390 | } 391 | 392 | 393 | /// 394 | /// 当目标骨骼需要移除的时候使用,目前还不完善,先不要使用 395 | /// 396 | /// 要移除的目标骨骼 397 | public void RemoveBone(DynamicBone target) 398 | { 399 | int index = boneList.IndexOf(target); 400 | if (index == -1) return; 401 | 402 | //TODO:移除骨骼的逻辑 403 | boneList.RemoveAt(index); 404 | int curHeadIndex = target.HeadInfo.Index; 405 | 406 | //移除Bone的相关Collider的关系 407 | boneColliderMatchMap.Remove(curHeadIndex); 408 | 409 | //是否是队列中末尾对象 410 | bool isEndTarget = curHeadIndex == headInfoList.Length - 1; 411 | if (isEndTarget) 412 | { 413 | headInfoList.RemoveAtSwapBack(curHeadIndex); 414 | headTransformAccessArray.RemoveAtSwapBack(curHeadIndex); 415 | for (int i = MaxParticleLimit - 1; i >= 0; i--) 416 | { 417 | int dataOffset = curHeadIndex * MaxParticleLimit + i; 418 | particleInfoList.RemoveAtSwapBack(dataOffset); 419 | particleTransformAccessArray.RemoveAtSwapBack(dataOffset); 420 | } 421 | } 422 | else 423 | { 424 | //将最末列的HeadInfo 索引设置为当前将要移除的HeadInfo 索引 425 | DynamicBone lastTarget = boneList[boneList.Count - 1]; 426 | HeadInfo lastHeadInfo = lastTarget.ResetHeadIndexAndDataOffset(curHeadIndex); 427 | headInfoList.RemoveAtSwapBack(curHeadIndex); 428 | headInfoList[curHeadIndex] = lastHeadInfo; 429 | headTransformAccessArray.RemoveAtSwapBack(curHeadIndex); 430 | for (int i = MaxParticleLimit - 1; i >= 0; i--) 431 | { 432 | int dataOffset = curHeadIndex * MaxParticleLimit + i; 433 | particleInfoList.RemoveAtSwapBack(dataOffset); 434 | particleTransformAccessArray.RemoveAtSwapBack(dataOffset); 435 | } 436 | } 437 | target.ClearJobData(); 438 | } 439 | 440 | /// 441 | /// 当骨骼头节点除了transform以外的其他信息被修改时,更新骨骼信息 442 | /// 443 | /// 444 | public void RefreshHeadInfo(in HeadInfo headInfo) 445 | { 446 | headInfoList[headInfo.Index] = headInfo; 447 | } 448 | 449 | /// 450 | /// 当骨骼子节点除了transform以外的其他信息被修改时,更新骨骼信息 451 | /// 452 | /// 453 | /// 454 | public void RefreshParticleInfo(in NativeArray particleInfoArray, in int headOffsetInGlobalArray) 455 | { 456 | for (int i = headOffsetInGlobalArray; i < particleInfoArray.Length + headOffsetInGlobalArray; i++) 457 | { 458 | particleInfoList[i] = particleInfoArray[i - headOffsetInGlobalArray]; 459 | } 460 | } 461 | 462 | /// 463 | /// 将目标骨骼添加到结构中 464 | /// 465 | /// 466 | public void AddCollider(DynamicBoneCollider target) 467 | { 468 | int index = colliderList.IndexOf(target); 469 | 470 | if (index != -1) return; //防止重复添加 471 | 472 | colliderList.Add(target); 473 | 474 | int colliderIndex = colliderInfoList.Length; 475 | target.ColliderInfo.Index = colliderIndex; 476 | 477 | colliderInfoList.Add(target.ColliderInfo); 478 | colliderTransformAccessArray.Add(target.transform); 479 | } 480 | 481 | /// 482 | /// 当目标碰撞器需要移除的时候使用,目前还不完善,先不要使用 483 | /// 484 | /// 要移除的目标碰撞器 485 | public void RemoveCollider(DynamicBoneCollider target) 486 | { 487 | int index = colliderList.IndexOf(target); 488 | if (index == -1) return; //防止重复移除 489 | //TODO:移除Collider的逻辑 490 | } 491 | 492 | /// 493 | /// 当碰撞器除了transform以外的其他信息被修改时,更新碰撞器信息 494 | /// 495 | /// 496 | public void RefreshColliderInfo(in ColliderInfo colliderInfo) 497 | { 498 | colliderInfoList[colliderInfo.Index] = colliderInfo; 499 | } 500 | 501 | 502 | private void OnDestroy() 503 | { 504 | if (particleTransformAccessArray.isCreated) particleTransformAccessArray.Dispose(); 505 | if (particleInfoList.IsCreated) particleInfoList.Dispose(); 506 | if (headInfoList.IsCreated) headInfoList.Dispose(); 507 | if (headTransformAccessArray.isCreated) headTransformAccessArray.Dispose(); 508 | if (colliderInfoList.IsCreated) colliderInfoList.Dispose(); 509 | if (colliderTransformAccessArray.isCreated) colliderTransformAccessArray.Dispose(); 510 | if (boneColliderMatchMap.IsCreated) boneColliderMatchMap.Dispose(); 511 | } 512 | 513 | private void OnDrawGizmos() 514 | { 515 | Gizmos.color = Color.white; 516 | for (int i = 0; i < particleInfoList.Length; ++i) 517 | { 518 | ParticleInfo p = particleInfoList[i]; 519 | if (p.NotNull && p.ParentIndex >= 0) 520 | { 521 | ParticleInfo p0 = particleInfoList[p.ParentIndex]; 522 | Gizmos.DrawLine(p.WorldPosition, p0.WorldPosition); 523 | } 524 | if (p.Radius > 0) 525 | Gizmos.DrawWireSphere(p.WorldPosition, p.Radius * 1); 526 | } 527 | } 528 | } 529 | } -------------------------------------------------------------------------------- /Assets/HighPerformanceDynamicBone/DynamicBoneManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8e3d4006ca38454479219ce9f449850c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/HighPerformanceDynamicBone/Util.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using Unity.Mathematics; 3 | 4 | namespace HighPerformanceDynamicBone 5 | { 6 | public static class Util 7 | { 8 | public static float3 LocalToWorldPosition(float3 parentPosition,quaternion parentRotation, float3 targetLocalPosition) 9 | { 10 | return parentPosition + math.mul(parentRotation, targetLocalPosition); 11 | } 12 | 13 | public static quaternion LocalToWorldRotation(quaternion parentRotation, quaternion targetLocalRotation) 14 | { 15 | return math.mul(parentRotation, targetLocalRotation); 16 | } 17 | 18 | public static float3 WorldToLocalPosition(float3 parentPosition,quaternion parentRotation, float3 targetWorldPosition) 19 | { 20 | return float3.zero; 21 | } 22 | 23 | public static quaternion WorldToLocalRotation(quaternion parentRotation, quaternion targetWorldRotation) 24 | { 25 | return quaternion.identity; 26 | } 27 | } 28 | } 29 | 30 | -------------------------------------------------------------------------------- /Assets/HighPerformanceDynamicBone/Util.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 03eaef433663aab48b709326e482151f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Sample.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 51e38744cdb19324bba886227015ff24 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample/ForkedBone(Developing).meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2b4ec3e8057d54b4da844c078b58b40d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample/ForkedBone(Developing)/ForkedBone.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 12 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 1 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 512 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 256 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 1 83 | m_PVRDenoiserTypeDirect: 1 84 | m_PVRDenoiserTypeIndirect: 1 85 | m_PVRDenoiserTypeAO: 1 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 1 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 0} 101 | m_LightingSettings: {fileID: 0} 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 2 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | accuratePlacement: 0 121 | maxJobWorkers: 0 122 | preserveTilesOutsideBounds: 0 123 | debug: 124 | m_Flags: 0 125 | m_NavMeshData: {fileID: 0} 126 | --- !u!1 &124613357 127 | GameObject: 128 | m_ObjectHideFlags: 0 129 | m_CorrespondingSourceObject: {fileID: 0} 130 | m_PrefabInstance: {fileID: 0} 131 | m_PrefabAsset: {fileID: 0} 132 | serializedVersion: 6 133 | m_Component: 134 | - component: {fileID: 124613358} 135 | - component: {fileID: 124613362} 136 | - component: {fileID: 124613361} 137 | - component: {fileID: 124613360} 138 | - component: {fileID: 124613359} 139 | m_Layer: 0 140 | m_Name: Cube 141 | m_TagString: Untagged 142 | m_Icon: {fileID: 0} 143 | m_NavMeshLayer: 0 144 | m_StaticEditorFlags: 0 145 | m_IsActive: 1 146 | --- !u!4 &124613358 147 | Transform: 148 | m_ObjectHideFlags: 0 149 | m_CorrespondingSourceObject: {fileID: 0} 150 | m_PrefabInstance: {fileID: 0} 151 | m_PrefabAsset: {fileID: 0} 152 | m_GameObject: {fileID: 124613357} 153 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 154 | m_LocalPosition: {x: 5.678774, y: -0.7, z: -0.19746983} 155 | m_LocalScale: {x: 1, y: 1, z: 1} 156 | m_Children: 157 | - {fileID: 198838267} 158 | - {fileID: 1273031308} 159 | m_Father: {fileID: 1005128143} 160 | m_RootOrder: 0 161 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 162 | --- !u!114 &124613359 163 | MonoBehaviour: 164 | m_ObjectHideFlags: 0 165 | m_CorrespondingSourceObject: {fileID: 0} 166 | m_PrefabInstance: {fileID: 0} 167 | m_PrefabAsset: {fileID: 0} 168 | m_GameObject: {fileID: 124613357} 169 | m_Enabled: 1 170 | m_EditorHideFlags: 0 171 | m_Script: {fileID: 11500000, guid: 42be98af2f222d44d953caa65c5dd995, type: 3} 172 | m_Name: 173 | m_EditorClassIdentifier: 174 | rootBoneTransform: {fileID: 0} 175 | damping: 0.15 176 | dampingDistribution: 177 | serializedVersion: 2 178 | m_Curve: [] 179 | m_PreInfinity: 2 180 | m_PostInfinity: 2 181 | m_RotationOrder: 4 182 | elasticity: 0.1 183 | elasticityDistribution: 184 | serializedVersion: 2 185 | m_Curve: [] 186 | m_PreInfinity: 2 187 | m_PostInfinity: 2 188 | m_RotationOrder: 4 189 | stiffness: 0.1 190 | stiffnessDistribution: 191 | serializedVersion: 2 192 | m_Curve: [] 193 | m_PreInfinity: 2 194 | m_PostInfinity: 2 195 | m_RotationOrder: 4 196 | inert: 0 197 | inertDistribution: 198 | serializedVersion: 2 199 | m_Curve: [] 200 | m_PreInfinity: 2 201 | m_PostInfinity: 2 202 | m_RotationOrder: 4 203 | friction: 0 204 | frictionDistribution: 205 | serializedVersion: 2 206 | m_Curve: [] 207 | m_PreInfinity: 2 208 | m_PostInfinity: 2 209 | m_RotationOrder: 4 210 | radius: 0 211 | radiusDistribution: 212 | serializedVersion: 2 213 | m_Curve: [] 214 | m_PreInfinity: 2 215 | m_PostInfinity: 2 216 | m_RotationOrder: 4 217 | gravity: {x: 0, y: 0, z: 0} 218 | force: {x: 0, y: 0, z: 0} 219 | endLength: 0 220 | endOffset: {x: 0, y: 0, z: 0} 221 | colliderArray: [] 222 | exclusionTransformArray: [] 223 | --- !u!65 &124613360 224 | BoxCollider: 225 | m_ObjectHideFlags: 0 226 | m_CorrespondingSourceObject: {fileID: 0} 227 | m_PrefabInstance: {fileID: 0} 228 | m_PrefabAsset: {fileID: 0} 229 | m_GameObject: {fileID: 124613357} 230 | m_Material: {fileID: 0} 231 | m_IsTrigger: 0 232 | m_Enabled: 1 233 | serializedVersion: 2 234 | m_Size: {x: 1, y: 1, z: 1} 235 | m_Center: {x: 0, y: 0, z: 0} 236 | --- !u!23 &124613361 237 | MeshRenderer: 238 | m_ObjectHideFlags: 0 239 | m_CorrespondingSourceObject: {fileID: 0} 240 | m_PrefabInstance: {fileID: 0} 241 | m_PrefabAsset: {fileID: 0} 242 | m_GameObject: {fileID: 124613357} 243 | m_Enabled: 1 244 | m_CastShadows: 1 245 | m_ReceiveShadows: 1 246 | m_DynamicOccludee: 1 247 | m_MotionVectors: 1 248 | m_LightProbeUsage: 1 249 | m_ReflectionProbeUsage: 1 250 | m_RayTracingMode: 2 251 | m_RayTraceProcedural: 0 252 | m_RenderingLayerMask: 1 253 | m_RendererPriority: 0 254 | m_Materials: 255 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 256 | m_StaticBatchInfo: 257 | firstSubMesh: 0 258 | subMeshCount: 0 259 | m_StaticBatchRoot: {fileID: 0} 260 | m_ProbeAnchor: {fileID: 0} 261 | m_LightProbeVolumeOverride: {fileID: 0} 262 | m_ScaleInLightmap: 1 263 | m_ReceiveGI: 1 264 | m_PreserveUVs: 0 265 | m_IgnoreNormalsForChartDetection: 0 266 | m_ImportantGI: 0 267 | m_StitchLightmapSeams: 1 268 | m_SelectedEditorRenderState: 3 269 | m_MinimumChartSize: 4 270 | m_AutoUVMaxDistance: 0.5 271 | m_AutoUVMaxAngle: 89 272 | m_LightmapParameters: {fileID: 0} 273 | m_SortingLayerID: 0 274 | m_SortingLayer: 0 275 | m_SortingOrder: 0 276 | m_AdditionalVertexStreams: {fileID: 0} 277 | --- !u!33 &124613362 278 | MeshFilter: 279 | m_ObjectHideFlags: 0 280 | m_CorrespondingSourceObject: {fileID: 0} 281 | m_PrefabInstance: {fileID: 0} 282 | m_PrefabAsset: {fileID: 0} 283 | m_GameObject: {fileID: 124613357} 284 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 285 | --- !u!1 &198838266 286 | GameObject: 287 | m_ObjectHideFlags: 0 288 | m_CorrespondingSourceObject: {fileID: 0} 289 | m_PrefabInstance: {fileID: 0} 290 | m_PrefabAsset: {fileID: 0} 291 | serializedVersion: 6 292 | m_Component: 293 | - component: {fileID: 198838267} 294 | - component: {fileID: 198838270} 295 | - component: {fileID: 198838269} 296 | - component: {fileID: 198838268} 297 | m_Layer: 0 298 | m_Name: Cube (1) 299 | m_TagString: Untagged 300 | m_Icon: {fileID: 0} 301 | m_NavMeshLayer: 0 302 | m_StaticEditorFlags: 0 303 | m_IsActive: 1 304 | --- !u!4 &198838267 305 | Transform: 306 | m_ObjectHideFlags: 0 307 | m_CorrespondingSourceObject: {fileID: 0} 308 | m_PrefabInstance: {fileID: 0} 309 | m_PrefabAsset: {fileID: 0} 310 | m_GameObject: {fileID: 198838266} 311 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 312 | m_LocalPosition: {x: 0, y: -1.19, z: -0.91} 313 | m_LocalScale: {x: 1, y: 1, z: 1} 314 | m_Children: 315 | - {fileID: 1048082510} 316 | - {fileID: 1408554714} 317 | m_Father: {fileID: 124613358} 318 | m_RootOrder: 0 319 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 320 | --- !u!65 &198838268 321 | BoxCollider: 322 | m_ObjectHideFlags: 0 323 | m_CorrespondingSourceObject: {fileID: 0} 324 | m_PrefabInstance: {fileID: 0} 325 | m_PrefabAsset: {fileID: 0} 326 | m_GameObject: {fileID: 198838266} 327 | m_Material: {fileID: 0} 328 | m_IsTrigger: 0 329 | m_Enabled: 1 330 | serializedVersion: 2 331 | m_Size: {x: 1, y: 1, z: 1} 332 | m_Center: {x: 0, y: 0, z: 0} 333 | --- !u!23 &198838269 334 | MeshRenderer: 335 | m_ObjectHideFlags: 0 336 | m_CorrespondingSourceObject: {fileID: 0} 337 | m_PrefabInstance: {fileID: 0} 338 | m_PrefabAsset: {fileID: 0} 339 | m_GameObject: {fileID: 198838266} 340 | m_Enabled: 1 341 | m_CastShadows: 1 342 | m_ReceiveShadows: 1 343 | m_DynamicOccludee: 1 344 | m_MotionVectors: 1 345 | m_LightProbeUsage: 1 346 | m_ReflectionProbeUsage: 1 347 | m_RayTracingMode: 2 348 | m_RayTraceProcedural: 0 349 | m_RenderingLayerMask: 1 350 | m_RendererPriority: 0 351 | m_Materials: 352 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 353 | m_StaticBatchInfo: 354 | firstSubMesh: 0 355 | subMeshCount: 0 356 | m_StaticBatchRoot: {fileID: 0} 357 | m_ProbeAnchor: {fileID: 0} 358 | m_LightProbeVolumeOverride: {fileID: 0} 359 | m_ScaleInLightmap: 1 360 | m_ReceiveGI: 1 361 | m_PreserveUVs: 0 362 | m_IgnoreNormalsForChartDetection: 0 363 | m_ImportantGI: 0 364 | m_StitchLightmapSeams: 1 365 | m_SelectedEditorRenderState: 3 366 | m_MinimumChartSize: 4 367 | m_AutoUVMaxDistance: 0.5 368 | m_AutoUVMaxAngle: 89 369 | m_LightmapParameters: {fileID: 0} 370 | m_SortingLayerID: 0 371 | m_SortingLayer: 0 372 | m_SortingOrder: 0 373 | m_AdditionalVertexStreams: {fileID: 0} 374 | --- !u!33 &198838270 375 | MeshFilter: 376 | m_ObjectHideFlags: 0 377 | m_CorrespondingSourceObject: {fileID: 0} 378 | m_PrefabInstance: {fileID: 0} 379 | m_PrefabAsset: {fileID: 0} 380 | m_GameObject: {fileID: 198838266} 381 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 382 | --- !u!1 &242196489 383 | GameObject: 384 | m_ObjectHideFlags: 0 385 | m_CorrespondingSourceObject: {fileID: 0} 386 | m_PrefabInstance: {fileID: 0} 387 | m_PrefabAsset: {fileID: 0} 388 | serializedVersion: 6 389 | m_Component: 390 | - component: {fileID: 242196492} 391 | - component: {fileID: 242196491} 392 | - component: {fileID: 242196490} 393 | m_Layer: 0 394 | m_Name: Main Camera 395 | m_TagString: MainCamera 396 | m_Icon: {fileID: 0} 397 | m_NavMeshLayer: 0 398 | m_StaticEditorFlags: 0 399 | m_IsActive: 1 400 | --- !u!81 &242196490 401 | AudioListener: 402 | m_ObjectHideFlags: 0 403 | m_CorrespondingSourceObject: {fileID: 0} 404 | m_PrefabInstance: {fileID: 0} 405 | m_PrefabAsset: {fileID: 0} 406 | m_GameObject: {fileID: 242196489} 407 | m_Enabled: 1 408 | --- !u!20 &242196491 409 | Camera: 410 | m_ObjectHideFlags: 0 411 | m_CorrespondingSourceObject: {fileID: 0} 412 | m_PrefabInstance: {fileID: 0} 413 | m_PrefabAsset: {fileID: 0} 414 | m_GameObject: {fileID: 242196489} 415 | m_Enabled: 1 416 | serializedVersion: 2 417 | m_ClearFlags: 1 418 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 419 | m_projectionMatrixMode: 1 420 | m_GateFitMode: 2 421 | m_FOVAxisMode: 0 422 | m_SensorSize: {x: 36, y: 24} 423 | m_LensShift: {x: 0, y: 0} 424 | m_FocalLength: 50 425 | m_NormalizedViewPortRect: 426 | serializedVersion: 2 427 | x: 0 428 | y: 0 429 | width: 1 430 | height: 1 431 | near clip plane: 0.3 432 | far clip plane: 1000 433 | field of view: 60 434 | orthographic: 0 435 | orthographic size: 5 436 | m_Depth: -1 437 | m_CullingMask: 438 | serializedVersion: 2 439 | m_Bits: 4294967295 440 | m_RenderingPath: -1 441 | m_TargetTexture: {fileID: 0} 442 | m_TargetDisplay: 0 443 | m_TargetEye: 3 444 | m_HDR: 1 445 | m_AllowMSAA: 1 446 | m_AllowDynamicResolution: 0 447 | m_ForceIntoRT: 0 448 | m_OcclusionCulling: 1 449 | m_StereoConvergence: 10 450 | m_StereoSeparation: 0.022 451 | --- !u!4 &242196492 452 | Transform: 453 | m_ObjectHideFlags: 0 454 | m_CorrespondingSourceObject: {fileID: 0} 455 | m_PrefabInstance: {fileID: 0} 456 | m_PrefabAsset: {fileID: 0} 457 | m_GameObject: {fileID: 242196489} 458 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 459 | m_LocalPosition: {x: 0, y: 1, z: -10} 460 | m_LocalScale: {x: 1, y: 1, z: 1} 461 | m_Children: [] 462 | m_Father: {fileID: 0} 463 | m_RootOrder: 0 464 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 465 | --- !u!1 &395490928 466 | GameObject: 467 | m_ObjectHideFlags: 0 468 | m_CorrespondingSourceObject: {fileID: 0} 469 | m_PrefabInstance: {fileID: 0} 470 | m_PrefabAsset: {fileID: 0} 471 | serializedVersion: 6 472 | m_Component: 473 | - component: {fileID: 395490929} 474 | - component: {fileID: 395490932} 475 | - component: {fileID: 395490931} 476 | - component: {fileID: 395490930} 477 | m_Layer: 0 478 | m_Name: Cube (4) 479 | m_TagString: Untagged 480 | m_Icon: {fileID: 0} 481 | m_NavMeshLayer: 0 482 | m_StaticEditorFlags: 0 483 | m_IsActive: 1 484 | --- !u!4 &395490929 485 | Transform: 486 | m_ObjectHideFlags: 0 487 | m_CorrespondingSourceObject: {fileID: 0} 488 | m_PrefabInstance: {fileID: 0} 489 | m_PrefabAsset: {fileID: 0} 490 | m_GameObject: {fileID: 395490928} 491 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 492 | m_LocalPosition: {x: 0, y: -1.2800002, z: 0.26899987} 493 | m_LocalScale: {x: 1, y: 1, z: 1} 494 | m_Children: [] 495 | m_Father: {fileID: 710053528} 496 | m_RootOrder: 1 497 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 498 | --- !u!65 &395490930 499 | BoxCollider: 500 | m_ObjectHideFlags: 0 501 | m_CorrespondingSourceObject: {fileID: 0} 502 | m_PrefabInstance: {fileID: 0} 503 | m_PrefabAsset: {fileID: 0} 504 | m_GameObject: {fileID: 395490928} 505 | m_Material: {fileID: 0} 506 | m_IsTrigger: 0 507 | m_Enabled: 1 508 | serializedVersion: 2 509 | m_Size: {x: 1, y: 1, z: 1} 510 | m_Center: {x: 0, y: 0, z: 0} 511 | --- !u!23 &395490931 512 | MeshRenderer: 513 | m_ObjectHideFlags: 0 514 | m_CorrespondingSourceObject: {fileID: 0} 515 | m_PrefabInstance: {fileID: 0} 516 | m_PrefabAsset: {fileID: 0} 517 | m_GameObject: {fileID: 395490928} 518 | m_Enabled: 1 519 | m_CastShadows: 1 520 | m_ReceiveShadows: 1 521 | m_DynamicOccludee: 1 522 | m_MotionVectors: 1 523 | m_LightProbeUsage: 1 524 | m_ReflectionProbeUsage: 1 525 | m_RayTracingMode: 2 526 | m_RayTraceProcedural: 0 527 | m_RenderingLayerMask: 1 528 | m_RendererPriority: 0 529 | m_Materials: 530 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 531 | m_StaticBatchInfo: 532 | firstSubMesh: 0 533 | subMeshCount: 0 534 | m_StaticBatchRoot: {fileID: 0} 535 | m_ProbeAnchor: {fileID: 0} 536 | m_LightProbeVolumeOverride: {fileID: 0} 537 | m_ScaleInLightmap: 1 538 | m_ReceiveGI: 1 539 | m_PreserveUVs: 0 540 | m_IgnoreNormalsForChartDetection: 0 541 | m_ImportantGI: 0 542 | m_StitchLightmapSeams: 1 543 | m_SelectedEditorRenderState: 3 544 | m_MinimumChartSize: 4 545 | m_AutoUVMaxDistance: 0.5 546 | m_AutoUVMaxAngle: 89 547 | m_LightmapParameters: {fileID: 0} 548 | m_SortingLayerID: 0 549 | m_SortingLayer: 0 550 | m_SortingOrder: 0 551 | m_AdditionalVertexStreams: {fileID: 0} 552 | --- !u!33 &395490932 553 | MeshFilter: 554 | m_ObjectHideFlags: 0 555 | m_CorrespondingSourceObject: {fileID: 0} 556 | m_PrefabInstance: {fileID: 0} 557 | m_PrefabAsset: {fileID: 0} 558 | m_GameObject: {fileID: 395490928} 559 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 560 | --- !u!1 &710053527 561 | GameObject: 562 | m_ObjectHideFlags: 0 563 | m_CorrespondingSourceObject: {fileID: 0} 564 | m_PrefabInstance: {fileID: 0} 565 | m_PrefabAsset: {fileID: 0} 566 | serializedVersion: 6 567 | m_Component: 568 | - component: {fileID: 710053528} 569 | - component: {fileID: 710053531} 570 | - component: {fileID: 710053530} 571 | - component: {fileID: 710053529} 572 | m_Layer: 0 573 | m_Name: Cube (1) 574 | m_TagString: Untagged 575 | m_Icon: {fileID: 0} 576 | m_NavMeshLayer: 0 577 | m_StaticEditorFlags: 0 578 | m_IsActive: 1 579 | --- !u!4 &710053528 580 | Transform: 581 | m_ObjectHideFlags: 0 582 | m_CorrespondingSourceObject: {fileID: 0} 583 | m_PrefabInstance: {fileID: 0} 584 | m_PrefabAsset: {fileID: 0} 585 | m_GameObject: {fileID: 710053527} 586 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 587 | m_LocalPosition: {x: 0, y: -1.19, z: -0.91} 588 | m_LocalScale: {x: 1, y: 1, z: 1} 589 | m_Children: 590 | - {fileID: 837822648} 591 | - {fileID: 395490929} 592 | m_Father: {fileID: 914988019} 593 | m_RootOrder: 0 594 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 595 | --- !u!65 &710053529 596 | BoxCollider: 597 | m_ObjectHideFlags: 0 598 | m_CorrespondingSourceObject: {fileID: 0} 599 | m_PrefabInstance: {fileID: 0} 600 | m_PrefabAsset: {fileID: 0} 601 | m_GameObject: {fileID: 710053527} 602 | m_Material: {fileID: 0} 603 | m_IsTrigger: 0 604 | m_Enabled: 1 605 | serializedVersion: 2 606 | m_Size: {x: 1, y: 1, z: 1} 607 | m_Center: {x: 0, y: 0, z: 0} 608 | --- !u!23 &710053530 609 | MeshRenderer: 610 | m_ObjectHideFlags: 0 611 | m_CorrespondingSourceObject: {fileID: 0} 612 | m_PrefabInstance: {fileID: 0} 613 | m_PrefabAsset: {fileID: 0} 614 | m_GameObject: {fileID: 710053527} 615 | m_Enabled: 1 616 | m_CastShadows: 1 617 | m_ReceiveShadows: 1 618 | m_DynamicOccludee: 1 619 | m_MotionVectors: 1 620 | m_LightProbeUsage: 1 621 | m_ReflectionProbeUsage: 1 622 | m_RayTracingMode: 2 623 | m_RayTraceProcedural: 0 624 | m_RenderingLayerMask: 1 625 | m_RendererPriority: 0 626 | m_Materials: 627 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 628 | m_StaticBatchInfo: 629 | firstSubMesh: 0 630 | subMeshCount: 0 631 | m_StaticBatchRoot: {fileID: 0} 632 | m_ProbeAnchor: {fileID: 0} 633 | m_LightProbeVolumeOverride: {fileID: 0} 634 | m_ScaleInLightmap: 1 635 | m_ReceiveGI: 1 636 | m_PreserveUVs: 0 637 | m_IgnoreNormalsForChartDetection: 0 638 | m_ImportantGI: 0 639 | m_StitchLightmapSeams: 1 640 | m_SelectedEditorRenderState: 3 641 | m_MinimumChartSize: 4 642 | m_AutoUVMaxDistance: 0.5 643 | m_AutoUVMaxAngle: 89 644 | m_LightmapParameters: {fileID: 0} 645 | m_SortingLayerID: 0 646 | m_SortingLayer: 0 647 | m_SortingOrder: 0 648 | m_AdditionalVertexStreams: {fileID: 0} 649 | --- !u!33 &710053531 650 | MeshFilter: 651 | m_ObjectHideFlags: 0 652 | m_CorrespondingSourceObject: {fileID: 0} 653 | m_PrefabInstance: {fileID: 0} 654 | m_PrefabAsset: {fileID: 0} 655 | m_GameObject: {fileID: 710053527} 656 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 657 | --- !u!1 &748874878 658 | GameObject: 659 | m_ObjectHideFlags: 0 660 | m_CorrespondingSourceObject: {fileID: 0} 661 | m_PrefabInstance: {fileID: 0} 662 | m_PrefabAsset: {fileID: 0} 663 | serializedVersion: 6 664 | m_Component: 665 | - component: {fileID: 748874879} 666 | - component: {fileID: 748874882} 667 | - component: {fileID: 748874881} 668 | - component: {fileID: 748874880} 669 | m_Layer: 0 670 | m_Name: Cube (6) 671 | m_TagString: Untagged 672 | m_Icon: {fileID: 0} 673 | m_NavMeshLayer: 0 674 | m_StaticEditorFlags: 0 675 | m_IsActive: 1 676 | --- !u!4 &748874879 677 | Transform: 678 | m_ObjectHideFlags: 0 679 | m_CorrespondingSourceObject: {fileID: 0} 680 | m_PrefabInstance: {fileID: 0} 681 | m_PrefabAsset: {fileID: 0} 682 | m_GameObject: {fileID: 748874878} 683 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 684 | m_LocalPosition: {x: 0, y: -1.277, z: 0.9589999} 685 | m_LocalScale: {x: 1, y: 1, z: 1} 686 | m_Children: [] 687 | m_Father: {fileID: 1273031308} 688 | m_RootOrder: 1 689 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 690 | --- !u!65 &748874880 691 | BoxCollider: 692 | m_ObjectHideFlags: 0 693 | m_CorrespondingSourceObject: {fileID: 0} 694 | m_PrefabInstance: {fileID: 0} 695 | m_PrefabAsset: {fileID: 0} 696 | m_GameObject: {fileID: 748874878} 697 | m_Material: {fileID: 0} 698 | m_IsTrigger: 0 699 | m_Enabled: 1 700 | serializedVersion: 2 701 | m_Size: {x: 1, y: 1, z: 1} 702 | m_Center: {x: 0, y: 0, z: 0} 703 | --- !u!23 &748874881 704 | MeshRenderer: 705 | m_ObjectHideFlags: 0 706 | m_CorrespondingSourceObject: {fileID: 0} 707 | m_PrefabInstance: {fileID: 0} 708 | m_PrefabAsset: {fileID: 0} 709 | m_GameObject: {fileID: 748874878} 710 | m_Enabled: 1 711 | m_CastShadows: 1 712 | m_ReceiveShadows: 1 713 | m_DynamicOccludee: 1 714 | m_MotionVectors: 1 715 | m_LightProbeUsage: 1 716 | m_ReflectionProbeUsage: 1 717 | m_RayTracingMode: 2 718 | m_RayTraceProcedural: 0 719 | m_RenderingLayerMask: 1 720 | m_RendererPriority: 0 721 | m_Materials: 722 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 723 | m_StaticBatchInfo: 724 | firstSubMesh: 0 725 | subMeshCount: 0 726 | m_StaticBatchRoot: {fileID: 0} 727 | m_ProbeAnchor: {fileID: 0} 728 | m_LightProbeVolumeOverride: {fileID: 0} 729 | m_ScaleInLightmap: 1 730 | m_ReceiveGI: 1 731 | m_PreserveUVs: 0 732 | m_IgnoreNormalsForChartDetection: 0 733 | m_ImportantGI: 0 734 | m_StitchLightmapSeams: 1 735 | m_SelectedEditorRenderState: 3 736 | m_MinimumChartSize: 4 737 | m_AutoUVMaxDistance: 0.5 738 | m_AutoUVMaxAngle: 89 739 | m_LightmapParameters: {fileID: 0} 740 | m_SortingLayerID: 0 741 | m_SortingLayer: 0 742 | m_SortingOrder: 0 743 | m_AdditionalVertexStreams: {fileID: 0} 744 | --- !u!33 &748874882 745 | MeshFilter: 746 | m_ObjectHideFlags: 0 747 | m_CorrespondingSourceObject: {fileID: 0} 748 | m_PrefabInstance: {fileID: 0} 749 | m_PrefabAsset: {fileID: 0} 750 | m_GameObject: {fileID: 748874878} 751 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 752 | --- !u!1 &837822647 753 | GameObject: 754 | m_ObjectHideFlags: 0 755 | m_CorrespondingSourceObject: {fileID: 0} 756 | m_PrefabInstance: {fileID: 0} 757 | m_PrefabAsset: {fileID: 0} 758 | serializedVersion: 6 759 | m_Component: 760 | - component: {fileID: 837822648} 761 | - component: {fileID: 837822651} 762 | - component: {fileID: 837822650} 763 | - component: {fileID: 837822649} 764 | m_Layer: 0 765 | m_Name: Cube (3) 766 | m_TagString: Untagged 767 | m_Icon: {fileID: 0} 768 | m_NavMeshLayer: 0 769 | m_StaticEditorFlags: 0 770 | m_IsActive: 1 771 | --- !u!4 &837822648 772 | Transform: 773 | m_ObjectHideFlags: 0 774 | m_CorrespondingSourceObject: {fileID: 0} 775 | m_PrefabInstance: {fileID: 0} 776 | m_PrefabAsset: {fileID: 0} 777 | m_GameObject: {fileID: 837822647} 778 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 779 | m_LocalPosition: {x: 0, y: -1.28, z: -0.971} 780 | m_LocalScale: {x: 1, y: 1, z: 1} 781 | m_Children: [] 782 | m_Father: {fileID: 710053528} 783 | m_RootOrder: 0 784 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 785 | --- !u!65 &837822649 786 | BoxCollider: 787 | m_ObjectHideFlags: 0 788 | m_CorrespondingSourceObject: {fileID: 0} 789 | m_PrefabInstance: {fileID: 0} 790 | m_PrefabAsset: {fileID: 0} 791 | m_GameObject: {fileID: 837822647} 792 | m_Material: {fileID: 0} 793 | m_IsTrigger: 0 794 | m_Enabled: 1 795 | serializedVersion: 2 796 | m_Size: {x: 1, y: 1, z: 1} 797 | m_Center: {x: 0, y: 0, z: 0} 798 | --- !u!23 &837822650 799 | MeshRenderer: 800 | m_ObjectHideFlags: 0 801 | m_CorrespondingSourceObject: {fileID: 0} 802 | m_PrefabInstance: {fileID: 0} 803 | m_PrefabAsset: {fileID: 0} 804 | m_GameObject: {fileID: 837822647} 805 | m_Enabled: 1 806 | m_CastShadows: 1 807 | m_ReceiveShadows: 1 808 | m_DynamicOccludee: 1 809 | m_MotionVectors: 1 810 | m_LightProbeUsage: 1 811 | m_ReflectionProbeUsage: 1 812 | m_RayTracingMode: 2 813 | m_RayTraceProcedural: 0 814 | m_RenderingLayerMask: 1 815 | m_RendererPriority: 0 816 | m_Materials: 817 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 818 | m_StaticBatchInfo: 819 | firstSubMesh: 0 820 | subMeshCount: 0 821 | m_StaticBatchRoot: {fileID: 0} 822 | m_ProbeAnchor: {fileID: 0} 823 | m_LightProbeVolumeOverride: {fileID: 0} 824 | m_ScaleInLightmap: 1 825 | m_ReceiveGI: 1 826 | m_PreserveUVs: 0 827 | m_IgnoreNormalsForChartDetection: 0 828 | m_ImportantGI: 0 829 | m_StitchLightmapSeams: 1 830 | m_SelectedEditorRenderState: 3 831 | m_MinimumChartSize: 4 832 | m_AutoUVMaxDistance: 0.5 833 | m_AutoUVMaxAngle: 89 834 | m_LightmapParameters: {fileID: 0} 835 | m_SortingLayerID: 0 836 | m_SortingLayer: 0 837 | m_SortingOrder: 0 838 | m_AdditionalVertexStreams: {fileID: 0} 839 | --- !u!33 &837822651 840 | MeshFilter: 841 | m_ObjectHideFlags: 0 842 | m_CorrespondingSourceObject: {fileID: 0} 843 | m_PrefabInstance: {fileID: 0} 844 | m_PrefabAsset: {fileID: 0} 845 | m_GameObject: {fileID: 837822647} 846 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 847 | --- !u!1 &898752366 848 | GameObject: 849 | m_ObjectHideFlags: 0 850 | m_CorrespondingSourceObject: {fileID: 0} 851 | m_PrefabInstance: {fileID: 0} 852 | m_PrefabAsset: {fileID: 0} 853 | serializedVersion: 6 854 | m_Component: 855 | - component: {fileID: 898752367} 856 | - component: {fileID: 898752370} 857 | - component: {fileID: 898752369} 858 | - component: {fileID: 898752368} 859 | m_Layer: 0 860 | m_Name: Cube (5) 861 | m_TagString: Untagged 862 | m_Icon: {fileID: 0} 863 | m_NavMeshLayer: 0 864 | m_StaticEditorFlags: 0 865 | m_IsActive: 1 866 | --- !u!4 &898752367 867 | Transform: 868 | m_ObjectHideFlags: 0 869 | m_CorrespondingSourceObject: {fileID: 0} 870 | m_PrefabInstance: {fileID: 0} 871 | m_PrefabAsset: {fileID: 0} 872 | m_GameObject: {fileID: 898752366} 873 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 874 | m_LocalPosition: {x: 0, y: -1.277, z: -0.2809999} 875 | m_LocalScale: {x: 1, y: 1, z: 1} 876 | m_Children: [] 877 | m_Father: {fileID: 1273031308} 878 | m_RootOrder: 0 879 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 880 | --- !u!65 &898752368 881 | BoxCollider: 882 | m_ObjectHideFlags: 0 883 | m_CorrespondingSourceObject: {fileID: 0} 884 | m_PrefabInstance: {fileID: 0} 885 | m_PrefabAsset: {fileID: 0} 886 | m_GameObject: {fileID: 898752366} 887 | m_Material: {fileID: 0} 888 | m_IsTrigger: 0 889 | m_Enabled: 1 890 | serializedVersion: 2 891 | m_Size: {x: 1, y: 1, z: 1} 892 | m_Center: {x: 0, y: 0, z: 0} 893 | --- !u!23 &898752369 894 | MeshRenderer: 895 | m_ObjectHideFlags: 0 896 | m_CorrespondingSourceObject: {fileID: 0} 897 | m_PrefabInstance: {fileID: 0} 898 | m_PrefabAsset: {fileID: 0} 899 | m_GameObject: {fileID: 898752366} 900 | m_Enabled: 1 901 | m_CastShadows: 1 902 | m_ReceiveShadows: 1 903 | m_DynamicOccludee: 1 904 | m_MotionVectors: 1 905 | m_LightProbeUsage: 1 906 | m_ReflectionProbeUsage: 1 907 | m_RayTracingMode: 2 908 | m_RayTraceProcedural: 0 909 | m_RenderingLayerMask: 1 910 | m_RendererPriority: 0 911 | m_Materials: 912 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 913 | m_StaticBatchInfo: 914 | firstSubMesh: 0 915 | subMeshCount: 0 916 | m_StaticBatchRoot: {fileID: 0} 917 | m_ProbeAnchor: {fileID: 0} 918 | m_LightProbeVolumeOverride: {fileID: 0} 919 | m_ScaleInLightmap: 1 920 | m_ReceiveGI: 1 921 | m_PreserveUVs: 0 922 | m_IgnoreNormalsForChartDetection: 0 923 | m_ImportantGI: 0 924 | m_StitchLightmapSeams: 1 925 | m_SelectedEditorRenderState: 3 926 | m_MinimumChartSize: 4 927 | m_AutoUVMaxDistance: 0.5 928 | m_AutoUVMaxAngle: 89 929 | m_LightmapParameters: {fileID: 0} 930 | m_SortingLayerID: 0 931 | m_SortingLayer: 0 932 | m_SortingOrder: 0 933 | m_AdditionalVertexStreams: {fileID: 0} 934 | --- !u!33 &898752370 935 | MeshFilter: 936 | m_ObjectHideFlags: 0 937 | m_CorrespondingSourceObject: {fileID: 0} 938 | m_PrefabInstance: {fileID: 0} 939 | m_PrefabAsset: {fileID: 0} 940 | m_GameObject: {fileID: 898752366} 941 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 942 | --- !u!1 &914988018 943 | GameObject: 944 | m_ObjectHideFlags: 0 945 | m_CorrespondingSourceObject: {fileID: 0} 946 | m_PrefabInstance: {fileID: 0} 947 | m_PrefabAsset: {fileID: 0} 948 | serializedVersion: 6 949 | m_Component: 950 | - component: {fileID: 914988019} 951 | - component: {fileID: 914988023} 952 | - component: {fileID: 914988022} 953 | - component: {fileID: 914988021} 954 | - component: {fileID: 914988020} 955 | m_Layer: 0 956 | m_Name: Cube 957 | m_TagString: Untagged 958 | m_Icon: {fileID: 0} 959 | m_NavMeshLayer: 0 960 | m_StaticEditorFlags: 0 961 | m_IsActive: 0 962 | --- !u!4 &914988019 963 | Transform: 964 | m_ObjectHideFlags: 0 965 | m_CorrespondingSourceObject: {fileID: 0} 966 | m_PrefabInstance: {fileID: 0} 967 | m_PrefabAsset: {fileID: 0} 968 | m_GameObject: {fileID: 914988018} 969 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 970 | m_LocalPosition: {x: 11.29, y: -1.68, z: 1.8} 971 | m_LocalScale: {x: 1, y: 1, z: 1} 972 | m_Children: 973 | - {fileID: 710053528} 974 | - {fileID: 1111611111} 975 | m_Father: {fileID: 1005128143} 976 | m_RootOrder: 1 977 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 978 | --- !u!114 &914988020 979 | MonoBehaviour: 980 | m_ObjectHideFlags: 0 981 | m_CorrespondingSourceObject: {fileID: 0} 982 | m_PrefabInstance: {fileID: 0} 983 | m_PrefabAsset: {fileID: 0} 984 | m_GameObject: {fileID: 914988018} 985 | m_Enabled: 1 986 | m_EditorHideFlags: 0 987 | m_Script: {fileID: 11500000, guid: 42be98af2f222d44d953caa65c5dd995, type: 3} 988 | m_Name: 989 | m_EditorClassIdentifier: 990 | rootBoneTransform: {fileID: 0} 991 | damping: 0.1 992 | dampingDistribution: 993 | serializedVersion: 2 994 | m_Curve: [] 995 | m_PreInfinity: 2 996 | m_PostInfinity: 2 997 | m_RotationOrder: 4 998 | elasticity: 0.1 999 | elasticityDistribution: 1000 | serializedVersion: 2 1001 | m_Curve: [] 1002 | m_PreInfinity: 2 1003 | m_PostInfinity: 2 1004 | m_RotationOrder: 4 1005 | stiffness: 0.1 1006 | stiffnessDistribution: 1007 | serializedVersion: 2 1008 | m_Curve: [] 1009 | m_PreInfinity: 2 1010 | m_PostInfinity: 2 1011 | m_RotationOrder: 4 1012 | inert: 0 1013 | inertDistribution: 1014 | serializedVersion: 2 1015 | m_Curve: [] 1016 | m_PreInfinity: 2 1017 | m_PostInfinity: 2 1018 | m_RotationOrder: 4 1019 | friction: 0 1020 | frictionDistribution: 1021 | serializedVersion: 2 1022 | m_Curve: [] 1023 | m_PreInfinity: 2 1024 | m_PostInfinity: 2 1025 | m_RotationOrder: 4 1026 | radius: 0 1027 | radiusDistribution: 1028 | serializedVersion: 2 1029 | m_Curve: [] 1030 | m_PreInfinity: 2 1031 | m_PostInfinity: 2 1032 | m_RotationOrder: 4 1033 | gravity: {x: 0, y: 0, z: 0} 1034 | force: {x: 0, y: 0, z: 0} 1035 | endLength: 0 1036 | endOffset: {x: 0, y: 0, z: 0} 1037 | colliderArray: [] 1038 | exclusionTransformArray: [] 1039 | --- !u!65 &914988021 1040 | BoxCollider: 1041 | m_ObjectHideFlags: 0 1042 | m_CorrespondingSourceObject: {fileID: 0} 1043 | m_PrefabInstance: {fileID: 0} 1044 | m_PrefabAsset: {fileID: 0} 1045 | m_GameObject: {fileID: 914988018} 1046 | m_Material: {fileID: 0} 1047 | m_IsTrigger: 0 1048 | m_Enabled: 1 1049 | serializedVersion: 2 1050 | m_Size: {x: 1, y: 1, z: 1} 1051 | m_Center: {x: 0, y: 0, z: 0} 1052 | --- !u!23 &914988022 1053 | MeshRenderer: 1054 | m_ObjectHideFlags: 0 1055 | m_CorrespondingSourceObject: {fileID: 0} 1056 | m_PrefabInstance: {fileID: 0} 1057 | m_PrefabAsset: {fileID: 0} 1058 | m_GameObject: {fileID: 914988018} 1059 | m_Enabled: 1 1060 | m_CastShadows: 1 1061 | m_ReceiveShadows: 1 1062 | m_DynamicOccludee: 1 1063 | m_MotionVectors: 1 1064 | m_LightProbeUsage: 1 1065 | m_ReflectionProbeUsage: 1 1066 | m_RayTracingMode: 2 1067 | m_RayTraceProcedural: 0 1068 | m_RenderingLayerMask: 1 1069 | m_RendererPriority: 0 1070 | m_Materials: 1071 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 1072 | m_StaticBatchInfo: 1073 | firstSubMesh: 0 1074 | subMeshCount: 0 1075 | m_StaticBatchRoot: {fileID: 0} 1076 | m_ProbeAnchor: {fileID: 0} 1077 | m_LightProbeVolumeOverride: {fileID: 0} 1078 | m_ScaleInLightmap: 1 1079 | m_ReceiveGI: 1 1080 | m_PreserveUVs: 0 1081 | m_IgnoreNormalsForChartDetection: 0 1082 | m_ImportantGI: 0 1083 | m_StitchLightmapSeams: 1 1084 | m_SelectedEditorRenderState: 3 1085 | m_MinimumChartSize: 4 1086 | m_AutoUVMaxDistance: 0.5 1087 | m_AutoUVMaxAngle: 89 1088 | m_LightmapParameters: {fileID: 0} 1089 | m_SortingLayerID: 0 1090 | m_SortingLayer: 0 1091 | m_SortingOrder: 0 1092 | m_AdditionalVertexStreams: {fileID: 0} 1093 | --- !u!33 &914988023 1094 | MeshFilter: 1095 | m_ObjectHideFlags: 0 1096 | m_CorrespondingSourceObject: {fileID: 0} 1097 | m_PrefabInstance: {fileID: 0} 1098 | m_PrefabAsset: {fileID: 0} 1099 | m_GameObject: {fileID: 914988018} 1100 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 1101 | --- !u!1 &1005128142 1102 | GameObject: 1103 | m_ObjectHideFlags: 0 1104 | m_CorrespondingSourceObject: {fileID: 0} 1105 | m_PrefabInstance: {fileID: 0} 1106 | m_PrefabAsset: {fileID: 0} 1107 | serializedVersion: 6 1108 | m_Component: 1109 | - component: {fileID: 1005128143} 1110 | m_Layer: 0 1111 | m_Name: GameObject (1) 1112 | m_TagString: Untagged 1113 | m_Icon: {fileID: 0} 1114 | m_NavMeshLayer: 0 1115 | m_StaticEditorFlags: 0 1116 | m_IsActive: 1 1117 | --- !u!4 &1005128143 1118 | Transform: 1119 | m_ObjectHideFlags: 0 1120 | m_CorrespondingSourceObject: {fileID: 0} 1121 | m_PrefabInstance: {fileID: 0} 1122 | m_PrefabAsset: {fileID: 0} 1123 | m_GameObject: {fileID: 1005128142} 1124 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 1125 | m_LocalPosition: {x: 0, y: 0, z: 0} 1126 | m_LocalScale: {x: 1, y: 1, z: 1} 1127 | m_Children: 1128 | - {fileID: 124613358} 1129 | - {fileID: 914988019} 1130 | m_Father: {fileID: 0} 1131 | m_RootOrder: 2 1132 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1133 | --- !u!1 &1048082509 1134 | GameObject: 1135 | m_ObjectHideFlags: 0 1136 | m_CorrespondingSourceObject: {fileID: 0} 1137 | m_PrefabInstance: {fileID: 0} 1138 | m_PrefabAsset: {fileID: 0} 1139 | serializedVersion: 6 1140 | m_Component: 1141 | - component: {fileID: 1048082510} 1142 | - component: {fileID: 1048082513} 1143 | - component: {fileID: 1048082512} 1144 | - component: {fileID: 1048082511} 1145 | m_Layer: 0 1146 | m_Name: Cube (3) 1147 | m_TagString: Untagged 1148 | m_Icon: {fileID: 0} 1149 | m_NavMeshLayer: 0 1150 | m_StaticEditorFlags: 0 1151 | m_IsActive: 1 1152 | --- !u!4 &1048082510 1153 | Transform: 1154 | m_ObjectHideFlags: 0 1155 | m_CorrespondingSourceObject: {fileID: 0} 1156 | m_PrefabInstance: {fileID: 0} 1157 | m_PrefabAsset: {fileID: 0} 1158 | m_GameObject: {fileID: 1048082509} 1159 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1160 | m_LocalPosition: {x: 0, y: -1.28, z: -0.971} 1161 | m_LocalScale: {x: 1, y: 1, z: 1} 1162 | m_Children: [] 1163 | m_Father: {fileID: 198838267} 1164 | m_RootOrder: 0 1165 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1166 | --- !u!65 &1048082511 1167 | BoxCollider: 1168 | m_ObjectHideFlags: 0 1169 | m_CorrespondingSourceObject: {fileID: 0} 1170 | m_PrefabInstance: {fileID: 0} 1171 | m_PrefabAsset: {fileID: 0} 1172 | m_GameObject: {fileID: 1048082509} 1173 | m_Material: {fileID: 0} 1174 | m_IsTrigger: 0 1175 | m_Enabled: 1 1176 | serializedVersion: 2 1177 | m_Size: {x: 1, y: 1, z: 1} 1178 | m_Center: {x: 0, y: 0, z: 0} 1179 | --- !u!23 &1048082512 1180 | MeshRenderer: 1181 | m_ObjectHideFlags: 0 1182 | m_CorrespondingSourceObject: {fileID: 0} 1183 | m_PrefabInstance: {fileID: 0} 1184 | m_PrefabAsset: {fileID: 0} 1185 | m_GameObject: {fileID: 1048082509} 1186 | m_Enabled: 1 1187 | m_CastShadows: 1 1188 | m_ReceiveShadows: 1 1189 | m_DynamicOccludee: 1 1190 | m_MotionVectors: 1 1191 | m_LightProbeUsage: 1 1192 | m_ReflectionProbeUsage: 1 1193 | m_RayTracingMode: 2 1194 | m_RayTraceProcedural: 0 1195 | m_RenderingLayerMask: 1 1196 | m_RendererPriority: 0 1197 | m_Materials: 1198 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 1199 | m_StaticBatchInfo: 1200 | firstSubMesh: 0 1201 | subMeshCount: 0 1202 | m_StaticBatchRoot: {fileID: 0} 1203 | m_ProbeAnchor: {fileID: 0} 1204 | m_LightProbeVolumeOverride: {fileID: 0} 1205 | m_ScaleInLightmap: 1 1206 | m_ReceiveGI: 1 1207 | m_PreserveUVs: 0 1208 | m_IgnoreNormalsForChartDetection: 0 1209 | m_ImportantGI: 0 1210 | m_StitchLightmapSeams: 1 1211 | m_SelectedEditorRenderState: 3 1212 | m_MinimumChartSize: 4 1213 | m_AutoUVMaxDistance: 0.5 1214 | m_AutoUVMaxAngle: 89 1215 | m_LightmapParameters: {fileID: 0} 1216 | m_SortingLayerID: 0 1217 | m_SortingLayer: 0 1218 | m_SortingOrder: 0 1219 | m_AdditionalVertexStreams: {fileID: 0} 1220 | --- !u!33 &1048082513 1221 | MeshFilter: 1222 | m_ObjectHideFlags: 0 1223 | m_CorrespondingSourceObject: {fileID: 0} 1224 | m_PrefabInstance: {fileID: 0} 1225 | m_PrefabAsset: {fileID: 0} 1226 | m_GameObject: {fileID: 1048082509} 1227 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 1228 | --- !u!1 &1111611110 1229 | GameObject: 1230 | m_ObjectHideFlags: 0 1231 | m_CorrespondingSourceObject: {fileID: 0} 1232 | m_PrefabInstance: {fileID: 0} 1233 | m_PrefabAsset: {fileID: 0} 1234 | serializedVersion: 6 1235 | m_Component: 1236 | - component: {fileID: 1111611111} 1237 | - component: {fileID: 1111611114} 1238 | - component: {fileID: 1111611113} 1239 | - component: {fileID: 1111611112} 1240 | m_Layer: 0 1241 | m_Name: Cube (2) 1242 | m_TagString: Untagged 1243 | m_Icon: {fileID: 0} 1244 | m_NavMeshLayer: 0 1245 | m_StaticEditorFlags: 0 1246 | m_IsActive: 1 1247 | --- !u!4 &1111611111 1248 | Transform: 1249 | m_ObjectHideFlags: 0 1250 | m_CorrespondingSourceObject: {fileID: 0} 1251 | m_PrefabInstance: {fileID: 0} 1252 | m_PrefabAsset: {fileID: 0} 1253 | m_GameObject: {fileID: 1111611110} 1254 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1255 | m_LocalPosition: {x: 0, y: -1.1930003, z: 0.89600736} 1256 | m_LocalScale: {x: 1, y: 1, z: 1} 1257 | m_Children: 1258 | - {fileID: 1422171449} 1259 | - {fileID: 1971386630} 1260 | m_Father: {fileID: 914988019} 1261 | m_RootOrder: 1 1262 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1263 | --- !u!65 &1111611112 1264 | BoxCollider: 1265 | m_ObjectHideFlags: 0 1266 | m_CorrespondingSourceObject: {fileID: 0} 1267 | m_PrefabInstance: {fileID: 0} 1268 | m_PrefabAsset: {fileID: 0} 1269 | m_GameObject: {fileID: 1111611110} 1270 | m_Material: {fileID: 0} 1271 | m_IsTrigger: 0 1272 | m_Enabled: 1 1273 | serializedVersion: 2 1274 | m_Size: {x: 1, y: 1, z: 1} 1275 | m_Center: {x: 0, y: 0, z: 0} 1276 | --- !u!23 &1111611113 1277 | MeshRenderer: 1278 | m_ObjectHideFlags: 0 1279 | m_CorrespondingSourceObject: {fileID: 0} 1280 | m_PrefabInstance: {fileID: 0} 1281 | m_PrefabAsset: {fileID: 0} 1282 | m_GameObject: {fileID: 1111611110} 1283 | m_Enabled: 1 1284 | m_CastShadows: 1 1285 | m_ReceiveShadows: 1 1286 | m_DynamicOccludee: 1 1287 | m_MotionVectors: 1 1288 | m_LightProbeUsage: 1 1289 | m_ReflectionProbeUsage: 1 1290 | m_RayTracingMode: 2 1291 | m_RayTraceProcedural: 0 1292 | m_RenderingLayerMask: 1 1293 | m_RendererPriority: 0 1294 | m_Materials: 1295 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 1296 | m_StaticBatchInfo: 1297 | firstSubMesh: 0 1298 | subMeshCount: 0 1299 | m_StaticBatchRoot: {fileID: 0} 1300 | m_ProbeAnchor: {fileID: 0} 1301 | m_LightProbeVolumeOverride: {fileID: 0} 1302 | m_ScaleInLightmap: 1 1303 | m_ReceiveGI: 1 1304 | m_PreserveUVs: 0 1305 | m_IgnoreNormalsForChartDetection: 0 1306 | m_ImportantGI: 0 1307 | m_StitchLightmapSeams: 1 1308 | m_SelectedEditorRenderState: 3 1309 | m_MinimumChartSize: 4 1310 | m_AutoUVMaxDistance: 0.5 1311 | m_AutoUVMaxAngle: 89 1312 | m_LightmapParameters: {fileID: 0} 1313 | m_SortingLayerID: 0 1314 | m_SortingLayer: 0 1315 | m_SortingOrder: 0 1316 | m_AdditionalVertexStreams: {fileID: 0} 1317 | --- !u!33 &1111611114 1318 | MeshFilter: 1319 | m_ObjectHideFlags: 0 1320 | m_CorrespondingSourceObject: {fileID: 0} 1321 | m_PrefabInstance: {fileID: 0} 1322 | m_PrefabAsset: {fileID: 0} 1323 | m_GameObject: {fileID: 1111611110} 1324 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 1325 | --- !u!1 &1273031307 1326 | GameObject: 1327 | m_ObjectHideFlags: 0 1328 | m_CorrespondingSourceObject: {fileID: 0} 1329 | m_PrefabInstance: {fileID: 0} 1330 | m_PrefabAsset: {fileID: 0} 1331 | serializedVersion: 6 1332 | m_Component: 1333 | - component: {fileID: 1273031308} 1334 | - component: {fileID: 1273031311} 1335 | - component: {fileID: 1273031310} 1336 | - component: {fileID: 1273031309} 1337 | m_Layer: 0 1338 | m_Name: Cube (2) 1339 | m_TagString: Untagged 1340 | m_Icon: {fileID: 0} 1341 | m_NavMeshLayer: 0 1342 | m_StaticEditorFlags: 0 1343 | m_IsActive: 1 1344 | --- !u!4 &1273031308 1345 | Transform: 1346 | m_ObjectHideFlags: 0 1347 | m_CorrespondingSourceObject: {fileID: 0} 1348 | m_PrefabInstance: {fileID: 0} 1349 | m_PrefabAsset: {fileID: 0} 1350 | m_GameObject: {fileID: 1273031307} 1351 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1352 | m_LocalPosition: {x: 0, y: -1.1930003, z: 0.89600736} 1353 | m_LocalScale: {x: 1, y: 1, z: 1} 1354 | m_Children: 1355 | - {fileID: 898752367} 1356 | - {fileID: 748874879} 1357 | m_Father: {fileID: 124613358} 1358 | m_RootOrder: 1 1359 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1360 | --- !u!65 &1273031309 1361 | BoxCollider: 1362 | m_ObjectHideFlags: 0 1363 | m_CorrespondingSourceObject: {fileID: 0} 1364 | m_PrefabInstance: {fileID: 0} 1365 | m_PrefabAsset: {fileID: 0} 1366 | m_GameObject: {fileID: 1273031307} 1367 | m_Material: {fileID: 0} 1368 | m_IsTrigger: 0 1369 | m_Enabled: 1 1370 | serializedVersion: 2 1371 | m_Size: {x: 1, y: 1, z: 1} 1372 | m_Center: {x: 0, y: 0, z: 0} 1373 | --- !u!23 &1273031310 1374 | MeshRenderer: 1375 | m_ObjectHideFlags: 0 1376 | m_CorrespondingSourceObject: {fileID: 0} 1377 | m_PrefabInstance: {fileID: 0} 1378 | m_PrefabAsset: {fileID: 0} 1379 | m_GameObject: {fileID: 1273031307} 1380 | m_Enabled: 1 1381 | m_CastShadows: 1 1382 | m_ReceiveShadows: 1 1383 | m_DynamicOccludee: 1 1384 | m_MotionVectors: 1 1385 | m_LightProbeUsage: 1 1386 | m_ReflectionProbeUsage: 1 1387 | m_RayTracingMode: 2 1388 | m_RayTraceProcedural: 0 1389 | m_RenderingLayerMask: 1 1390 | m_RendererPriority: 0 1391 | m_Materials: 1392 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 1393 | m_StaticBatchInfo: 1394 | firstSubMesh: 0 1395 | subMeshCount: 0 1396 | m_StaticBatchRoot: {fileID: 0} 1397 | m_ProbeAnchor: {fileID: 0} 1398 | m_LightProbeVolumeOverride: {fileID: 0} 1399 | m_ScaleInLightmap: 1 1400 | m_ReceiveGI: 1 1401 | m_PreserveUVs: 0 1402 | m_IgnoreNormalsForChartDetection: 0 1403 | m_ImportantGI: 0 1404 | m_StitchLightmapSeams: 1 1405 | m_SelectedEditorRenderState: 3 1406 | m_MinimumChartSize: 4 1407 | m_AutoUVMaxDistance: 0.5 1408 | m_AutoUVMaxAngle: 89 1409 | m_LightmapParameters: {fileID: 0} 1410 | m_SortingLayerID: 0 1411 | m_SortingLayer: 0 1412 | m_SortingOrder: 0 1413 | m_AdditionalVertexStreams: {fileID: 0} 1414 | --- !u!33 &1273031311 1415 | MeshFilter: 1416 | m_ObjectHideFlags: 0 1417 | m_CorrespondingSourceObject: {fileID: 0} 1418 | m_PrefabInstance: {fileID: 0} 1419 | m_PrefabAsset: {fileID: 0} 1420 | m_GameObject: {fileID: 1273031307} 1421 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 1422 | --- !u!1 &1408554713 1423 | GameObject: 1424 | m_ObjectHideFlags: 0 1425 | m_CorrespondingSourceObject: {fileID: 0} 1426 | m_PrefabInstance: {fileID: 0} 1427 | m_PrefabAsset: {fileID: 0} 1428 | serializedVersion: 6 1429 | m_Component: 1430 | - component: {fileID: 1408554714} 1431 | - component: {fileID: 1408554717} 1432 | - component: {fileID: 1408554716} 1433 | - component: {fileID: 1408554715} 1434 | m_Layer: 0 1435 | m_Name: Cube (4) 1436 | m_TagString: Untagged 1437 | m_Icon: {fileID: 0} 1438 | m_NavMeshLayer: 0 1439 | m_StaticEditorFlags: 0 1440 | m_IsActive: 1 1441 | --- !u!4 &1408554714 1442 | Transform: 1443 | m_ObjectHideFlags: 0 1444 | m_CorrespondingSourceObject: {fileID: 0} 1445 | m_PrefabInstance: {fileID: 0} 1446 | m_PrefabAsset: {fileID: 0} 1447 | m_GameObject: {fileID: 1408554713} 1448 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1449 | m_LocalPosition: {x: 0, y: -1.2800002, z: 0.26899987} 1450 | m_LocalScale: {x: 1, y: 1, z: 1} 1451 | m_Children: [] 1452 | m_Father: {fileID: 198838267} 1453 | m_RootOrder: 1 1454 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1455 | --- !u!65 &1408554715 1456 | BoxCollider: 1457 | m_ObjectHideFlags: 0 1458 | m_CorrespondingSourceObject: {fileID: 0} 1459 | m_PrefabInstance: {fileID: 0} 1460 | m_PrefabAsset: {fileID: 0} 1461 | m_GameObject: {fileID: 1408554713} 1462 | m_Material: {fileID: 0} 1463 | m_IsTrigger: 0 1464 | m_Enabled: 1 1465 | serializedVersion: 2 1466 | m_Size: {x: 1, y: 1, z: 1} 1467 | m_Center: {x: 0, y: 0, z: 0} 1468 | --- !u!23 &1408554716 1469 | MeshRenderer: 1470 | m_ObjectHideFlags: 0 1471 | m_CorrespondingSourceObject: {fileID: 0} 1472 | m_PrefabInstance: {fileID: 0} 1473 | m_PrefabAsset: {fileID: 0} 1474 | m_GameObject: {fileID: 1408554713} 1475 | m_Enabled: 1 1476 | m_CastShadows: 1 1477 | m_ReceiveShadows: 1 1478 | m_DynamicOccludee: 1 1479 | m_MotionVectors: 1 1480 | m_LightProbeUsage: 1 1481 | m_ReflectionProbeUsage: 1 1482 | m_RayTracingMode: 2 1483 | m_RayTraceProcedural: 0 1484 | m_RenderingLayerMask: 1 1485 | m_RendererPriority: 0 1486 | m_Materials: 1487 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 1488 | m_StaticBatchInfo: 1489 | firstSubMesh: 0 1490 | subMeshCount: 0 1491 | m_StaticBatchRoot: {fileID: 0} 1492 | m_ProbeAnchor: {fileID: 0} 1493 | m_LightProbeVolumeOverride: {fileID: 0} 1494 | m_ScaleInLightmap: 1 1495 | m_ReceiveGI: 1 1496 | m_PreserveUVs: 0 1497 | m_IgnoreNormalsForChartDetection: 0 1498 | m_ImportantGI: 0 1499 | m_StitchLightmapSeams: 1 1500 | m_SelectedEditorRenderState: 3 1501 | m_MinimumChartSize: 4 1502 | m_AutoUVMaxDistance: 0.5 1503 | m_AutoUVMaxAngle: 89 1504 | m_LightmapParameters: {fileID: 0} 1505 | m_SortingLayerID: 0 1506 | m_SortingLayer: 0 1507 | m_SortingOrder: 0 1508 | m_AdditionalVertexStreams: {fileID: 0} 1509 | --- !u!33 &1408554717 1510 | MeshFilter: 1511 | m_ObjectHideFlags: 0 1512 | m_CorrespondingSourceObject: {fileID: 0} 1513 | m_PrefabInstance: {fileID: 0} 1514 | m_PrefabAsset: {fileID: 0} 1515 | m_GameObject: {fileID: 1408554713} 1516 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 1517 | --- !u!1 &1422171448 1518 | GameObject: 1519 | m_ObjectHideFlags: 0 1520 | m_CorrespondingSourceObject: {fileID: 0} 1521 | m_PrefabInstance: {fileID: 0} 1522 | m_PrefabAsset: {fileID: 0} 1523 | serializedVersion: 6 1524 | m_Component: 1525 | - component: {fileID: 1422171449} 1526 | - component: {fileID: 1422171452} 1527 | - component: {fileID: 1422171451} 1528 | - component: {fileID: 1422171450} 1529 | m_Layer: 0 1530 | m_Name: Cube (5) 1531 | m_TagString: Untagged 1532 | m_Icon: {fileID: 0} 1533 | m_NavMeshLayer: 0 1534 | m_StaticEditorFlags: 0 1535 | m_IsActive: 1 1536 | --- !u!4 &1422171449 1537 | Transform: 1538 | m_ObjectHideFlags: 0 1539 | m_CorrespondingSourceObject: {fileID: 0} 1540 | m_PrefabInstance: {fileID: 0} 1541 | m_PrefabAsset: {fileID: 0} 1542 | m_GameObject: {fileID: 1422171448} 1543 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1544 | m_LocalPosition: {x: 0, y: -1.277, z: -0.2809999} 1545 | m_LocalScale: {x: 1, y: 1, z: 1} 1546 | m_Children: [] 1547 | m_Father: {fileID: 1111611111} 1548 | m_RootOrder: 0 1549 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1550 | --- !u!65 &1422171450 1551 | BoxCollider: 1552 | m_ObjectHideFlags: 0 1553 | m_CorrespondingSourceObject: {fileID: 0} 1554 | m_PrefabInstance: {fileID: 0} 1555 | m_PrefabAsset: {fileID: 0} 1556 | m_GameObject: {fileID: 1422171448} 1557 | m_Material: {fileID: 0} 1558 | m_IsTrigger: 0 1559 | m_Enabled: 1 1560 | serializedVersion: 2 1561 | m_Size: {x: 1, y: 1, z: 1} 1562 | m_Center: {x: 0, y: 0, z: 0} 1563 | --- !u!23 &1422171451 1564 | MeshRenderer: 1565 | m_ObjectHideFlags: 0 1566 | m_CorrespondingSourceObject: {fileID: 0} 1567 | m_PrefabInstance: {fileID: 0} 1568 | m_PrefabAsset: {fileID: 0} 1569 | m_GameObject: {fileID: 1422171448} 1570 | m_Enabled: 1 1571 | m_CastShadows: 1 1572 | m_ReceiveShadows: 1 1573 | m_DynamicOccludee: 1 1574 | m_MotionVectors: 1 1575 | m_LightProbeUsage: 1 1576 | m_ReflectionProbeUsage: 1 1577 | m_RayTracingMode: 2 1578 | m_RayTraceProcedural: 0 1579 | m_RenderingLayerMask: 1 1580 | m_RendererPriority: 0 1581 | m_Materials: 1582 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 1583 | m_StaticBatchInfo: 1584 | firstSubMesh: 0 1585 | subMeshCount: 0 1586 | m_StaticBatchRoot: {fileID: 0} 1587 | m_ProbeAnchor: {fileID: 0} 1588 | m_LightProbeVolumeOverride: {fileID: 0} 1589 | m_ScaleInLightmap: 1 1590 | m_ReceiveGI: 1 1591 | m_PreserveUVs: 0 1592 | m_IgnoreNormalsForChartDetection: 0 1593 | m_ImportantGI: 0 1594 | m_StitchLightmapSeams: 1 1595 | m_SelectedEditorRenderState: 3 1596 | m_MinimumChartSize: 4 1597 | m_AutoUVMaxDistance: 0.5 1598 | m_AutoUVMaxAngle: 89 1599 | m_LightmapParameters: {fileID: 0} 1600 | m_SortingLayerID: 0 1601 | m_SortingLayer: 0 1602 | m_SortingOrder: 0 1603 | m_AdditionalVertexStreams: {fileID: 0} 1604 | --- !u!33 &1422171452 1605 | MeshFilter: 1606 | m_ObjectHideFlags: 0 1607 | m_CorrespondingSourceObject: {fileID: 0} 1608 | m_PrefabInstance: {fileID: 0} 1609 | m_PrefabAsset: {fileID: 0} 1610 | m_GameObject: {fileID: 1422171448} 1611 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 1612 | --- !u!1 &1951337271 1613 | GameObject: 1614 | m_ObjectHideFlags: 0 1615 | m_CorrespondingSourceObject: {fileID: 0} 1616 | m_PrefabInstance: {fileID: 0} 1617 | m_PrefabAsset: {fileID: 0} 1618 | serializedVersion: 6 1619 | m_Component: 1620 | - component: {fileID: 1951337273} 1621 | - component: {fileID: 1951337272} 1622 | m_Layer: 0 1623 | m_Name: Directional Light 1624 | m_TagString: Untagged 1625 | m_Icon: {fileID: 0} 1626 | m_NavMeshLayer: 0 1627 | m_StaticEditorFlags: 0 1628 | m_IsActive: 1 1629 | --- !u!108 &1951337272 1630 | Light: 1631 | m_ObjectHideFlags: 0 1632 | m_CorrespondingSourceObject: {fileID: 0} 1633 | m_PrefabInstance: {fileID: 0} 1634 | m_PrefabAsset: {fileID: 0} 1635 | m_GameObject: {fileID: 1951337271} 1636 | m_Enabled: 1 1637 | serializedVersion: 10 1638 | m_Type: 1 1639 | m_Shape: 0 1640 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 1641 | m_Intensity: 1 1642 | m_Range: 10 1643 | m_SpotAngle: 30 1644 | m_InnerSpotAngle: 21.80208 1645 | m_CookieSize: 10 1646 | m_Shadows: 1647 | m_Type: 2 1648 | m_Resolution: -1 1649 | m_CustomResolution: -1 1650 | m_Strength: 1 1651 | m_Bias: 0.05 1652 | m_NormalBias: 0.4 1653 | m_NearPlane: 0.2 1654 | m_CullingMatrixOverride: 1655 | e00: 1 1656 | e01: 0 1657 | e02: 0 1658 | e03: 0 1659 | e10: 0 1660 | e11: 1 1661 | e12: 0 1662 | e13: 0 1663 | e20: 0 1664 | e21: 0 1665 | e22: 1 1666 | e23: 0 1667 | e30: 0 1668 | e31: 0 1669 | e32: 0 1670 | e33: 1 1671 | m_UseCullingMatrixOverride: 0 1672 | m_Cookie: {fileID: 0} 1673 | m_DrawHalo: 0 1674 | m_Flare: {fileID: 0} 1675 | m_RenderMode: 0 1676 | m_CullingMask: 1677 | serializedVersion: 2 1678 | m_Bits: 4294967295 1679 | m_RenderingLayerMask: 1 1680 | m_Lightmapping: 4 1681 | m_LightShadowCasterMode: 0 1682 | m_AreaSize: {x: 1, y: 1} 1683 | m_BounceIntensity: 1 1684 | m_ColorTemperature: 6570 1685 | m_UseColorTemperature: 0 1686 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 1687 | m_UseBoundingSphereOverride: 0 1688 | m_UseViewFrustumForShadowCasterCull: 1 1689 | m_ShadowRadius: 0 1690 | m_ShadowAngle: 0 1691 | --- !u!4 &1951337273 1692 | Transform: 1693 | m_ObjectHideFlags: 0 1694 | m_CorrespondingSourceObject: {fileID: 0} 1695 | m_PrefabInstance: {fileID: 0} 1696 | m_PrefabAsset: {fileID: 0} 1697 | m_GameObject: {fileID: 1951337271} 1698 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 1699 | m_LocalPosition: {x: 0, y: 3, z: 0} 1700 | m_LocalScale: {x: 1, y: 1, z: 1} 1701 | m_Children: [] 1702 | m_Father: {fileID: 0} 1703 | m_RootOrder: 1 1704 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 1705 | --- !u!1 &1971386629 1706 | GameObject: 1707 | m_ObjectHideFlags: 0 1708 | m_CorrespondingSourceObject: {fileID: 0} 1709 | m_PrefabInstance: {fileID: 0} 1710 | m_PrefabAsset: {fileID: 0} 1711 | serializedVersion: 6 1712 | m_Component: 1713 | - component: {fileID: 1971386630} 1714 | - component: {fileID: 1971386633} 1715 | - component: {fileID: 1971386632} 1716 | - component: {fileID: 1971386631} 1717 | m_Layer: 0 1718 | m_Name: Cube (6) 1719 | m_TagString: Untagged 1720 | m_Icon: {fileID: 0} 1721 | m_NavMeshLayer: 0 1722 | m_StaticEditorFlags: 0 1723 | m_IsActive: 1 1724 | --- !u!4 &1971386630 1725 | Transform: 1726 | m_ObjectHideFlags: 0 1727 | m_CorrespondingSourceObject: {fileID: 0} 1728 | m_PrefabInstance: {fileID: 0} 1729 | m_PrefabAsset: {fileID: 0} 1730 | m_GameObject: {fileID: 1971386629} 1731 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1732 | m_LocalPosition: {x: 0, y: -1.277, z: 0.9589999} 1733 | m_LocalScale: {x: 1, y: 1, z: 1} 1734 | m_Children: [] 1735 | m_Father: {fileID: 1111611111} 1736 | m_RootOrder: 1 1737 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1738 | --- !u!65 &1971386631 1739 | BoxCollider: 1740 | m_ObjectHideFlags: 0 1741 | m_CorrespondingSourceObject: {fileID: 0} 1742 | m_PrefabInstance: {fileID: 0} 1743 | m_PrefabAsset: {fileID: 0} 1744 | m_GameObject: {fileID: 1971386629} 1745 | m_Material: {fileID: 0} 1746 | m_IsTrigger: 0 1747 | m_Enabled: 1 1748 | serializedVersion: 2 1749 | m_Size: {x: 1, y: 1, z: 1} 1750 | m_Center: {x: 0, y: 0, z: 0} 1751 | --- !u!23 &1971386632 1752 | MeshRenderer: 1753 | m_ObjectHideFlags: 0 1754 | m_CorrespondingSourceObject: {fileID: 0} 1755 | m_PrefabInstance: {fileID: 0} 1756 | m_PrefabAsset: {fileID: 0} 1757 | m_GameObject: {fileID: 1971386629} 1758 | m_Enabled: 1 1759 | m_CastShadows: 1 1760 | m_ReceiveShadows: 1 1761 | m_DynamicOccludee: 1 1762 | m_MotionVectors: 1 1763 | m_LightProbeUsage: 1 1764 | m_ReflectionProbeUsage: 1 1765 | m_RayTracingMode: 2 1766 | m_RayTraceProcedural: 0 1767 | m_RenderingLayerMask: 1 1768 | m_RendererPriority: 0 1769 | m_Materials: 1770 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 1771 | m_StaticBatchInfo: 1772 | firstSubMesh: 0 1773 | subMeshCount: 0 1774 | m_StaticBatchRoot: {fileID: 0} 1775 | m_ProbeAnchor: {fileID: 0} 1776 | m_LightProbeVolumeOverride: {fileID: 0} 1777 | m_ScaleInLightmap: 1 1778 | m_ReceiveGI: 1 1779 | m_PreserveUVs: 0 1780 | m_IgnoreNormalsForChartDetection: 0 1781 | m_ImportantGI: 0 1782 | m_StitchLightmapSeams: 1 1783 | m_SelectedEditorRenderState: 3 1784 | m_MinimumChartSize: 4 1785 | m_AutoUVMaxDistance: 0.5 1786 | m_AutoUVMaxAngle: 89 1787 | m_LightmapParameters: {fileID: 0} 1788 | m_SortingLayerID: 0 1789 | m_SortingLayer: 0 1790 | m_SortingOrder: 0 1791 | m_AdditionalVertexStreams: {fileID: 0} 1792 | --- !u!33 &1971386633 1793 | MeshFilter: 1794 | m_ObjectHideFlags: 0 1795 | m_CorrespondingSourceObject: {fileID: 0} 1796 | m_PrefabInstance: {fileID: 0} 1797 | m_PrefabAsset: {fileID: 0} 1798 | m_GameObject: {fileID: 1971386629} 1799 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 1800 | -------------------------------------------------------------------------------- /Assets/Sample/ForkedBone(Developing)/ForkedBone.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4deac4f20d869fa44ac4fd7bf8ae0406 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Sample/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4a1a2ca329230c14da64b59391cb4ec1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample/StressTest.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 00d59f4e78aad01479b1e0c1d845dedd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample/StressTest/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f3ef8a754e8b105488f2d41387717e3f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample/StressTest/Prefabs/RootParent.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &1156804404173425302 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 1156804404173425325} 12 | - component: {fileID: 1156804404173425298} 13 | - component: {fileID: 1156804404173425299} 14 | - component: {fileID: 1156804404173425296} 15 | m_Layer: 0 16 | m_Name: Cube 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!4 &1156804404173425325 23 | Transform: 24 | m_ObjectHideFlags: 0 25 | m_CorrespondingSourceObject: {fileID: 0} 26 | m_PrefabInstance: {fileID: 0} 27 | m_PrefabAsset: {fileID: 0} 28 | m_GameObject: {fileID: 1156804404173425302} 29 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 30 | m_LocalPosition: {x: 0, y: 0, z: 0} 31 | m_LocalScale: {x: 1, y: 1, z: 1} 32 | m_Children: 33 | - {fileID: 1156804405058801519} 34 | m_Father: {fileID: 1156804405478641254} 35 | m_RootOrder: 0 36 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 37 | --- !u!33 &1156804404173425298 38 | MeshFilter: 39 | m_ObjectHideFlags: 0 40 | m_CorrespondingSourceObject: {fileID: 0} 41 | m_PrefabInstance: {fileID: 0} 42 | m_PrefabAsset: {fileID: 0} 43 | m_GameObject: {fileID: 1156804404173425302} 44 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 45 | --- !u!23 &1156804404173425299 46 | MeshRenderer: 47 | m_ObjectHideFlags: 0 48 | m_CorrespondingSourceObject: {fileID: 0} 49 | m_PrefabInstance: {fileID: 0} 50 | m_PrefabAsset: {fileID: 0} 51 | m_GameObject: {fileID: 1156804404173425302} 52 | m_Enabled: 1 53 | m_CastShadows: 1 54 | m_ReceiveShadows: 1 55 | m_DynamicOccludee: 1 56 | m_MotionVectors: 1 57 | m_LightProbeUsage: 1 58 | m_ReflectionProbeUsage: 1 59 | m_RayTracingMode: 2 60 | m_RayTraceProcedural: 0 61 | m_RenderingLayerMask: 1 62 | m_RendererPriority: 0 63 | m_Materials: 64 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 65 | m_StaticBatchInfo: 66 | firstSubMesh: 0 67 | subMeshCount: 0 68 | m_StaticBatchRoot: {fileID: 0} 69 | m_ProbeAnchor: {fileID: 0} 70 | m_LightProbeVolumeOverride: {fileID: 0} 71 | m_ScaleInLightmap: 1 72 | m_ReceiveGI: 1 73 | m_PreserveUVs: 0 74 | m_IgnoreNormalsForChartDetection: 0 75 | m_ImportantGI: 0 76 | m_StitchLightmapSeams: 1 77 | m_SelectedEditorRenderState: 3 78 | m_MinimumChartSize: 4 79 | m_AutoUVMaxDistance: 0.5 80 | m_AutoUVMaxAngle: 89 81 | m_LightmapParameters: {fileID: 0} 82 | m_SortingLayerID: 0 83 | m_SortingLayer: 0 84 | m_SortingOrder: 0 85 | m_AdditionalVertexStreams: {fileID: 0} 86 | --- !u!114 &1156804404173425296 87 | MonoBehaviour: 88 | m_ObjectHideFlags: 0 89 | m_CorrespondingSourceObject: {fileID: 0} 90 | m_PrefabInstance: {fileID: 0} 91 | m_PrefabAsset: {fileID: 0} 92 | m_GameObject: {fileID: 1156804404173425302} 93 | m_Enabled: 1 94 | m_EditorHideFlags: 0 95 | m_Script: {fileID: 11500000, guid: 42be98af2f222d44d953caa65c5dd995, type: 3} 96 | m_Name: 97 | m_EditorClassIdentifier: 98 | rootBoneTransform: {fileID: 0} 99 | damping: 0.68 100 | dampingDistribution: 101 | serializedVersion: 2 102 | m_Curve: [] 103 | m_PreInfinity: 2 104 | m_PostInfinity: 2 105 | m_RotationOrder: 4 106 | elasticity: 0.06 107 | elasticityDistribution: 108 | serializedVersion: 2 109 | m_Curve: [] 110 | m_PreInfinity: 2 111 | m_PostInfinity: 2 112 | m_RotationOrder: 4 113 | stiffness: 0.04 114 | stiffnessDistribution: 115 | serializedVersion: 2 116 | m_Curve: [] 117 | m_PreInfinity: 2 118 | m_PostInfinity: 2 119 | m_RotationOrder: 4 120 | inert: 0 121 | inertDistribution: 122 | serializedVersion: 2 123 | m_Curve: [] 124 | m_PreInfinity: 2 125 | m_PostInfinity: 2 126 | m_RotationOrder: 4 127 | friction: 0 128 | frictionDistribution: 129 | serializedVersion: 2 130 | m_Curve: [] 131 | m_PreInfinity: 2 132 | m_PostInfinity: 2 133 | m_RotationOrder: 4 134 | radius: 0 135 | radiusDistribution: 136 | serializedVersion: 2 137 | m_Curve: [] 138 | m_PreInfinity: 2 139 | m_PostInfinity: 2 140 | m_RotationOrder: 4 141 | gravity: {x: 0, y: 0, z: 0} 142 | force: {x: 0, y: 0, z: 0} 143 | endLength: 1 144 | endOffset: {x: 0, y: 0, z: 0} 145 | colliderArray: [] 146 | exclusionTransformArray: [] 147 | --- !u!1 &1156804404244603048 148 | GameObject: 149 | m_ObjectHideFlags: 0 150 | m_CorrespondingSourceObject: {fileID: 0} 151 | m_PrefabInstance: {fileID: 0} 152 | m_PrefabAsset: {fileID: 0} 153 | serializedVersion: 6 154 | m_Component: 155 | - component: {fileID: 1156804404244603051} 156 | - component: {fileID: 1156804404244603044} 157 | - component: {fileID: 1156804404244603045} 158 | m_Layer: 0 159 | m_Name: Cube (8) 160 | m_TagString: Untagged 161 | m_Icon: {fileID: 0} 162 | m_NavMeshLayer: 0 163 | m_StaticEditorFlags: 0 164 | m_IsActive: 1 165 | --- !u!4 &1156804404244603051 166 | Transform: 167 | m_ObjectHideFlags: 0 168 | m_CorrespondingSourceObject: {fileID: 0} 169 | m_PrefabInstance: {fileID: 0} 170 | m_PrefabAsset: {fileID: 0} 171 | m_GameObject: {fileID: 1156804404244603048} 172 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 173 | m_LocalPosition: {x: 0, y: 0, z: 1.1990005} 174 | m_LocalScale: {x: 1, y: 1, z: 1} 175 | m_Children: [] 176 | m_Father: {fileID: 1156804405416563839} 177 | m_RootOrder: 0 178 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 179 | --- !u!33 &1156804404244603044 180 | MeshFilter: 181 | m_ObjectHideFlags: 0 182 | m_CorrespondingSourceObject: {fileID: 0} 183 | m_PrefabInstance: {fileID: 0} 184 | m_PrefabAsset: {fileID: 0} 185 | m_GameObject: {fileID: 1156804404244603048} 186 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 187 | --- !u!23 &1156804404244603045 188 | MeshRenderer: 189 | m_ObjectHideFlags: 0 190 | m_CorrespondingSourceObject: {fileID: 0} 191 | m_PrefabInstance: {fileID: 0} 192 | m_PrefabAsset: {fileID: 0} 193 | m_GameObject: {fileID: 1156804404244603048} 194 | m_Enabled: 1 195 | m_CastShadows: 1 196 | m_ReceiveShadows: 1 197 | m_DynamicOccludee: 1 198 | m_MotionVectors: 1 199 | m_LightProbeUsage: 1 200 | m_ReflectionProbeUsage: 1 201 | m_RayTracingMode: 2 202 | m_RayTraceProcedural: 0 203 | m_RenderingLayerMask: 1 204 | m_RendererPriority: 0 205 | m_Materials: 206 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 207 | m_StaticBatchInfo: 208 | firstSubMesh: 0 209 | subMeshCount: 0 210 | m_StaticBatchRoot: {fileID: 0} 211 | m_ProbeAnchor: {fileID: 0} 212 | m_LightProbeVolumeOverride: {fileID: 0} 213 | m_ScaleInLightmap: 1 214 | m_ReceiveGI: 1 215 | m_PreserveUVs: 0 216 | m_IgnoreNormalsForChartDetection: 0 217 | m_ImportantGI: 0 218 | m_StitchLightmapSeams: 1 219 | m_SelectedEditorRenderState: 3 220 | m_MinimumChartSize: 4 221 | m_AutoUVMaxDistance: 0.5 222 | m_AutoUVMaxAngle: 89 223 | m_LightmapParameters: {fileID: 0} 224 | m_SortingLayerID: 0 225 | m_SortingLayer: 0 226 | m_SortingOrder: 0 227 | m_AdditionalVertexStreams: {fileID: 0} 228 | --- !u!1 &1156804404269718949 229 | GameObject: 230 | m_ObjectHideFlags: 0 231 | m_CorrespondingSourceObject: {fileID: 0} 232 | m_PrefabInstance: {fileID: 0} 233 | m_PrefabAsset: {fileID: 0} 234 | serializedVersion: 6 235 | m_Component: 236 | - component: {fileID: 1156804404269718948} 237 | - component: {fileID: 1156804404269718945} 238 | - component: {fileID: 1156804404269718950} 239 | m_Layer: 0 240 | m_Name: Cube (4) 241 | m_TagString: Untagged 242 | m_Icon: {fileID: 0} 243 | m_NavMeshLayer: 0 244 | m_StaticEditorFlags: 0 245 | m_IsActive: 1 246 | --- !u!4 &1156804404269718948 247 | Transform: 248 | m_ObjectHideFlags: 0 249 | m_CorrespondingSourceObject: {fileID: 0} 250 | m_PrefabInstance: {fileID: 0} 251 | m_PrefabAsset: {fileID: 0} 252 | m_GameObject: {fileID: 1156804404269718949} 253 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 254 | m_LocalPosition: {x: 0, y: 0, z: 1.2890002} 255 | m_LocalScale: {x: 1, y: 1, z: 1} 256 | m_Children: 257 | - {fileID: 1156804405026042114} 258 | m_Father: {fileID: 1156804405389603259} 259 | m_RootOrder: 0 260 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 261 | --- !u!33 &1156804404269718945 262 | MeshFilter: 263 | m_ObjectHideFlags: 0 264 | m_CorrespondingSourceObject: {fileID: 0} 265 | m_PrefabInstance: {fileID: 0} 266 | m_PrefabAsset: {fileID: 0} 267 | m_GameObject: {fileID: 1156804404269718949} 268 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 269 | --- !u!23 &1156804404269718950 270 | MeshRenderer: 271 | m_ObjectHideFlags: 0 272 | m_CorrespondingSourceObject: {fileID: 0} 273 | m_PrefabInstance: {fileID: 0} 274 | m_PrefabAsset: {fileID: 0} 275 | m_GameObject: {fileID: 1156804404269718949} 276 | m_Enabled: 1 277 | m_CastShadows: 1 278 | m_ReceiveShadows: 1 279 | m_DynamicOccludee: 1 280 | m_MotionVectors: 1 281 | m_LightProbeUsage: 1 282 | m_ReflectionProbeUsage: 1 283 | m_RayTracingMode: 2 284 | m_RayTraceProcedural: 0 285 | m_RenderingLayerMask: 1 286 | m_RendererPriority: 0 287 | m_Materials: 288 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 289 | m_StaticBatchInfo: 290 | firstSubMesh: 0 291 | subMeshCount: 0 292 | m_StaticBatchRoot: {fileID: 0} 293 | m_ProbeAnchor: {fileID: 0} 294 | m_LightProbeVolumeOverride: {fileID: 0} 295 | m_ScaleInLightmap: 1 296 | m_ReceiveGI: 1 297 | m_PreserveUVs: 0 298 | m_IgnoreNormalsForChartDetection: 0 299 | m_ImportantGI: 0 300 | m_StitchLightmapSeams: 1 301 | m_SelectedEditorRenderState: 3 302 | m_MinimumChartSize: 4 303 | m_AutoUVMaxDistance: 0.5 304 | m_AutoUVMaxAngle: 89 305 | m_LightmapParameters: {fileID: 0} 306 | m_SortingLayerID: 0 307 | m_SortingLayer: 0 308 | m_SortingOrder: 0 309 | m_AdditionalVertexStreams: {fileID: 0} 310 | --- !u!1 &1156804404376900891 311 | GameObject: 312 | m_ObjectHideFlags: 0 313 | m_CorrespondingSourceObject: {fileID: 0} 314 | m_PrefabInstance: {fileID: 0} 315 | m_PrefabAsset: {fileID: 0} 316 | serializedVersion: 6 317 | m_Component: 318 | - component: {fileID: 1156804404376900890} 319 | - component: {fileID: 1156804404376900887} 320 | - component: {fileID: 1156804404376900884} 321 | m_Layer: 0 322 | m_Name: Cube (2) 323 | m_TagString: Untagged 324 | m_Icon: {fileID: 0} 325 | m_NavMeshLayer: 0 326 | m_StaticEditorFlags: 0 327 | m_IsActive: 1 328 | --- !u!4 &1156804404376900890 329 | Transform: 330 | m_ObjectHideFlags: 0 331 | m_CorrespondingSourceObject: {fileID: 0} 332 | m_PrefabInstance: {fileID: 0} 333 | m_PrefabAsset: {fileID: 0} 334 | m_GameObject: {fileID: 1156804404376900891} 335 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 336 | m_LocalPosition: {x: 0, y: 0.011, z: 1.21} 337 | m_LocalScale: {x: 1, y: 1, z: 1} 338 | m_Children: 339 | - {fileID: 1156804405389603259} 340 | m_Father: {fileID: 1156804405058801519} 341 | m_RootOrder: 0 342 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 343 | --- !u!33 &1156804404376900887 344 | MeshFilter: 345 | m_ObjectHideFlags: 0 346 | m_CorrespondingSourceObject: {fileID: 0} 347 | m_PrefabInstance: {fileID: 0} 348 | m_PrefabAsset: {fileID: 0} 349 | m_GameObject: {fileID: 1156804404376900891} 350 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 351 | --- !u!23 &1156804404376900884 352 | MeshRenderer: 353 | m_ObjectHideFlags: 0 354 | m_CorrespondingSourceObject: {fileID: 0} 355 | m_PrefabInstance: {fileID: 0} 356 | m_PrefabAsset: {fileID: 0} 357 | m_GameObject: {fileID: 1156804404376900891} 358 | m_Enabled: 1 359 | m_CastShadows: 1 360 | m_ReceiveShadows: 1 361 | m_DynamicOccludee: 1 362 | m_MotionVectors: 1 363 | m_LightProbeUsage: 1 364 | m_ReflectionProbeUsage: 1 365 | m_RayTracingMode: 2 366 | m_RayTraceProcedural: 0 367 | m_RenderingLayerMask: 1 368 | m_RendererPriority: 0 369 | m_Materials: 370 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 371 | m_StaticBatchInfo: 372 | firstSubMesh: 0 373 | subMeshCount: 0 374 | m_StaticBatchRoot: {fileID: 0} 375 | m_ProbeAnchor: {fileID: 0} 376 | m_LightProbeVolumeOverride: {fileID: 0} 377 | m_ScaleInLightmap: 1 378 | m_ReceiveGI: 1 379 | m_PreserveUVs: 0 380 | m_IgnoreNormalsForChartDetection: 0 381 | m_ImportantGI: 0 382 | m_StitchLightmapSeams: 1 383 | m_SelectedEditorRenderState: 3 384 | m_MinimumChartSize: 4 385 | m_AutoUVMaxDistance: 0.5 386 | m_AutoUVMaxAngle: 89 387 | m_LightmapParameters: {fileID: 0} 388 | m_SortingLayerID: 0 389 | m_SortingLayer: 0 390 | m_SortingOrder: 0 391 | m_AdditionalVertexStreams: {fileID: 0} 392 | --- !u!1 &1156804405026042115 393 | GameObject: 394 | m_ObjectHideFlags: 0 395 | m_CorrespondingSourceObject: {fileID: 0} 396 | m_PrefabInstance: {fileID: 0} 397 | m_PrefabAsset: {fileID: 0} 398 | serializedVersion: 6 399 | m_Component: 400 | - component: {fileID: 1156804405026042114} 401 | - component: {fileID: 1156804405026042143} 402 | - component: {fileID: 1156804405026042140} 403 | m_Layer: 0 404 | m_Name: Cube (5) 405 | m_TagString: Untagged 406 | m_Icon: {fileID: 0} 407 | m_NavMeshLayer: 0 408 | m_StaticEditorFlags: 0 409 | m_IsActive: 1 410 | --- !u!4 &1156804405026042114 411 | Transform: 412 | m_ObjectHideFlags: 0 413 | m_CorrespondingSourceObject: {fileID: 0} 414 | m_PrefabInstance: {fileID: 0} 415 | m_PrefabAsset: {fileID: 0} 416 | m_GameObject: {fileID: 1156804405026042115} 417 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 418 | m_LocalPosition: {x: 0, y: 0, z: 1.2000002} 419 | m_LocalScale: {x: 1, y: 1, z: 1} 420 | m_Children: 421 | - {fileID: 1156804405416563839} 422 | m_Father: {fileID: 1156804404269718948} 423 | m_RootOrder: 0 424 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 425 | --- !u!33 &1156804405026042143 426 | MeshFilter: 427 | m_ObjectHideFlags: 0 428 | m_CorrespondingSourceObject: {fileID: 0} 429 | m_PrefabInstance: {fileID: 0} 430 | m_PrefabAsset: {fileID: 0} 431 | m_GameObject: {fileID: 1156804405026042115} 432 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 433 | --- !u!23 &1156804405026042140 434 | MeshRenderer: 435 | m_ObjectHideFlags: 0 436 | m_CorrespondingSourceObject: {fileID: 0} 437 | m_PrefabInstance: {fileID: 0} 438 | m_PrefabAsset: {fileID: 0} 439 | m_GameObject: {fileID: 1156804405026042115} 440 | m_Enabled: 1 441 | m_CastShadows: 1 442 | m_ReceiveShadows: 1 443 | m_DynamicOccludee: 1 444 | m_MotionVectors: 1 445 | m_LightProbeUsage: 1 446 | m_ReflectionProbeUsage: 1 447 | m_RayTracingMode: 2 448 | m_RayTraceProcedural: 0 449 | m_RenderingLayerMask: 1 450 | m_RendererPriority: 0 451 | m_Materials: 452 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 453 | m_StaticBatchInfo: 454 | firstSubMesh: 0 455 | subMeshCount: 0 456 | m_StaticBatchRoot: {fileID: 0} 457 | m_ProbeAnchor: {fileID: 0} 458 | m_LightProbeVolumeOverride: {fileID: 0} 459 | m_ScaleInLightmap: 1 460 | m_ReceiveGI: 1 461 | m_PreserveUVs: 0 462 | m_IgnoreNormalsForChartDetection: 0 463 | m_ImportantGI: 0 464 | m_StitchLightmapSeams: 1 465 | m_SelectedEditorRenderState: 3 466 | m_MinimumChartSize: 4 467 | m_AutoUVMaxDistance: 0.5 468 | m_AutoUVMaxAngle: 89 469 | m_LightmapParameters: {fileID: 0} 470 | m_SortingLayerID: 0 471 | m_SortingLayer: 0 472 | m_SortingOrder: 0 473 | m_AdditionalVertexStreams: {fileID: 0} 474 | --- !u!1 &1156804405058801516 475 | GameObject: 476 | m_ObjectHideFlags: 0 477 | m_CorrespondingSourceObject: {fileID: 0} 478 | m_PrefabInstance: {fileID: 0} 479 | m_PrefabAsset: {fileID: 0} 480 | serializedVersion: 6 481 | m_Component: 482 | - component: {fileID: 1156804405058801519} 483 | - component: {fileID: 1156804405058801512} 484 | - component: {fileID: 1156804405058801513} 485 | m_Layer: 0 486 | m_Name: Cube (1) 487 | m_TagString: Untagged 488 | m_Icon: {fileID: 0} 489 | m_NavMeshLayer: 0 490 | m_StaticEditorFlags: 0 491 | m_IsActive: 1 492 | --- !u!4 &1156804405058801519 493 | Transform: 494 | m_ObjectHideFlags: 0 495 | m_CorrespondingSourceObject: {fileID: 0} 496 | m_PrefabInstance: {fileID: 0} 497 | m_PrefabAsset: {fileID: 0} 498 | m_GameObject: {fileID: 1156804405058801516} 499 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 500 | m_LocalPosition: {x: 0, y: -0.021, z: 1.18} 501 | m_LocalScale: {x: 1, y: 1, z: 1} 502 | m_Children: 503 | - {fileID: 1156804404376900890} 504 | m_Father: {fileID: 1156804404173425325} 505 | m_RootOrder: 0 506 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 507 | --- !u!33 &1156804405058801512 508 | MeshFilter: 509 | m_ObjectHideFlags: 0 510 | m_CorrespondingSourceObject: {fileID: 0} 511 | m_PrefabInstance: {fileID: 0} 512 | m_PrefabAsset: {fileID: 0} 513 | m_GameObject: {fileID: 1156804405058801516} 514 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 515 | --- !u!23 &1156804405058801513 516 | MeshRenderer: 517 | m_ObjectHideFlags: 0 518 | m_CorrespondingSourceObject: {fileID: 0} 519 | m_PrefabInstance: {fileID: 0} 520 | m_PrefabAsset: {fileID: 0} 521 | m_GameObject: {fileID: 1156804405058801516} 522 | m_Enabled: 1 523 | m_CastShadows: 1 524 | m_ReceiveShadows: 1 525 | m_DynamicOccludee: 1 526 | m_MotionVectors: 1 527 | m_LightProbeUsage: 1 528 | m_ReflectionProbeUsage: 1 529 | m_RayTracingMode: 2 530 | m_RayTraceProcedural: 0 531 | m_RenderingLayerMask: 1 532 | m_RendererPriority: 0 533 | m_Materials: 534 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 535 | m_StaticBatchInfo: 536 | firstSubMesh: 0 537 | subMeshCount: 0 538 | m_StaticBatchRoot: {fileID: 0} 539 | m_ProbeAnchor: {fileID: 0} 540 | m_LightProbeVolumeOverride: {fileID: 0} 541 | m_ScaleInLightmap: 1 542 | m_ReceiveGI: 1 543 | m_PreserveUVs: 0 544 | m_IgnoreNormalsForChartDetection: 0 545 | m_ImportantGI: 0 546 | m_StitchLightmapSeams: 1 547 | m_SelectedEditorRenderState: 3 548 | m_MinimumChartSize: 4 549 | m_AutoUVMaxDistance: 0.5 550 | m_AutoUVMaxAngle: 89 551 | m_LightmapParameters: {fileID: 0} 552 | m_SortingLayerID: 0 553 | m_SortingLayer: 0 554 | m_SortingOrder: 0 555 | m_AdditionalVertexStreams: {fileID: 0} 556 | --- !u!1 &1156804405389603256 557 | GameObject: 558 | m_ObjectHideFlags: 0 559 | m_CorrespondingSourceObject: {fileID: 0} 560 | m_PrefabInstance: {fileID: 0} 561 | m_PrefabAsset: {fileID: 0} 562 | serializedVersion: 6 563 | m_Component: 564 | - component: {fileID: 1156804405389603259} 565 | - component: {fileID: 1156804405389603252} 566 | - component: {fileID: 1156804405389603253} 567 | m_Layer: 0 568 | m_Name: Cube (3) 569 | m_TagString: Untagged 570 | m_Icon: {fileID: 0} 571 | m_NavMeshLayer: 0 572 | m_StaticEditorFlags: 0 573 | m_IsActive: 1 574 | --- !u!4 &1156804405389603259 575 | Transform: 576 | m_ObjectHideFlags: 0 577 | m_CorrespondingSourceObject: {fileID: 0} 578 | m_PrefabInstance: {fileID: 0} 579 | m_PrefabAsset: {fileID: 0} 580 | m_GameObject: {fileID: 1156804405389603256} 581 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 582 | m_LocalPosition: {x: 0, y: 0, z: 1.215} 583 | m_LocalScale: {x: 1, y: 1, z: 1} 584 | m_Children: 585 | - {fileID: 1156804404269718948} 586 | m_Father: {fileID: 1156804404376900890} 587 | m_RootOrder: 0 588 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 589 | --- !u!33 &1156804405389603252 590 | MeshFilter: 591 | m_ObjectHideFlags: 0 592 | m_CorrespondingSourceObject: {fileID: 0} 593 | m_PrefabInstance: {fileID: 0} 594 | m_PrefabAsset: {fileID: 0} 595 | m_GameObject: {fileID: 1156804405389603256} 596 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 597 | --- !u!23 &1156804405389603253 598 | MeshRenderer: 599 | m_ObjectHideFlags: 0 600 | m_CorrespondingSourceObject: {fileID: 0} 601 | m_PrefabInstance: {fileID: 0} 602 | m_PrefabAsset: {fileID: 0} 603 | m_GameObject: {fileID: 1156804405389603256} 604 | m_Enabled: 1 605 | m_CastShadows: 1 606 | m_ReceiveShadows: 1 607 | m_DynamicOccludee: 1 608 | m_MotionVectors: 1 609 | m_LightProbeUsage: 1 610 | m_ReflectionProbeUsage: 1 611 | m_RayTracingMode: 2 612 | m_RayTraceProcedural: 0 613 | m_RenderingLayerMask: 1 614 | m_RendererPriority: 0 615 | m_Materials: 616 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 617 | m_StaticBatchInfo: 618 | firstSubMesh: 0 619 | subMeshCount: 0 620 | m_StaticBatchRoot: {fileID: 0} 621 | m_ProbeAnchor: {fileID: 0} 622 | m_LightProbeVolumeOverride: {fileID: 0} 623 | m_ScaleInLightmap: 1 624 | m_ReceiveGI: 1 625 | m_PreserveUVs: 0 626 | m_IgnoreNormalsForChartDetection: 0 627 | m_ImportantGI: 0 628 | m_StitchLightmapSeams: 1 629 | m_SelectedEditorRenderState: 3 630 | m_MinimumChartSize: 4 631 | m_AutoUVMaxDistance: 0.5 632 | m_AutoUVMaxAngle: 89 633 | m_LightmapParameters: {fileID: 0} 634 | m_SortingLayerID: 0 635 | m_SortingLayer: 0 636 | m_SortingOrder: 0 637 | m_AdditionalVertexStreams: {fileID: 0} 638 | --- !u!1 &1156804405416563836 639 | GameObject: 640 | m_ObjectHideFlags: 0 641 | m_CorrespondingSourceObject: {fileID: 0} 642 | m_PrefabInstance: {fileID: 0} 643 | m_PrefabAsset: {fileID: 0} 644 | serializedVersion: 6 645 | m_Component: 646 | - component: {fileID: 1156804405416563839} 647 | - component: {fileID: 1156804405416563832} 648 | - component: {fileID: 1156804405416563833} 649 | m_Layer: 0 650 | m_Name: Cube (6) 651 | m_TagString: Untagged 652 | m_Icon: {fileID: 0} 653 | m_NavMeshLayer: 0 654 | m_StaticEditorFlags: 0 655 | m_IsActive: 1 656 | --- !u!4 &1156804405416563839 657 | Transform: 658 | m_ObjectHideFlags: 0 659 | m_CorrespondingSourceObject: {fileID: 0} 660 | m_PrefabInstance: {fileID: 0} 661 | m_PrefabAsset: {fileID: 0} 662 | m_GameObject: {fileID: 1156804405416563836} 663 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 664 | m_LocalPosition: {x: 0, y: 0, z: 1.18} 665 | m_LocalScale: {x: 1, y: 1, z: 1} 666 | m_Children: 667 | - {fileID: 1156804404244603051} 668 | m_Father: {fileID: 1156804405026042114} 669 | m_RootOrder: 0 670 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 671 | --- !u!33 &1156804405416563832 672 | MeshFilter: 673 | m_ObjectHideFlags: 0 674 | m_CorrespondingSourceObject: {fileID: 0} 675 | m_PrefabInstance: {fileID: 0} 676 | m_PrefabAsset: {fileID: 0} 677 | m_GameObject: {fileID: 1156804405416563836} 678 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 679 | --- !u!23 &1156804405416563833 680 | MeshRenderer: 681 | m_ObjectHideFlags: 0 682 | m_CorrespondingSourceObject: {fileID: 0} 683 | m_PrefabInstance: {fileID: 0} 684 | m_PrefabAsset: {fileID: 0} 685 | m_GameObject: {fileID: 1156804405416563836} 686 | m_Enabled: 1 687 | m_CastShadows: 1 688 | m_ReceiveShadows: 1 689 | m_DynamicOccludee: 1 690 | m_MotionVectors: 1 691 | m_LightProbeUsage: 1 692 | m_ReflectionProbeUsage: 1 693 | m_RayTracingMode: 2 694 | m_RayTraceProcedural: 0 695 | m_RenderingLayerMask: 1 696 | m_RendererPriority: 0 697 | m_Materials: 698 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 699 | m_StaticBatchInfo: 700 | firstSubMesh: 0 701 | subMeshCount: 0 702 | m_StaticBatchRoot: {fileID: 0} 703 | m_ProbeAnchor: {fileID: 0} 704 | m_LightProbeVolumeOverride: {fileID: 0} 705 | m_ScaleInLightmap: 1 706 | m_ReceiveGI: 1 707 | m_PreserveUVs: 0 708 | m_IgnoreNormalsForChartDetection: 0 709 | m_ImportantGI: 0 710 | m_StitchLightmapSeams: 1 711 | m_SelectedEditorRenderState: 3 712 | m_MinimumChartSize: 4 713 | m_AutoUVMaxDistance: 0.5 714 | m_AutoUVMaxAngle: 89 715 | m_LightmapParameters: {fileID: 0} 716 | m_SortingLayerID: 0 717 | m_SortingLayer: 0 718 | m_SortingOrder: 0 719 | m_AdditionalVertexStreams: {fileID: 0} 720 | --- !u!1 &1156804405478641255 721 | GameObject: 722 | m_ObjectHideFlags: 0 723 | m_CorrespondingSourceObject: {fileID: 0} 724 | m_PrefabInstance: {fileID: 0} 725 | m_PrefabAsset: {fileID: 0} 726 | serializedVersion: 6 727 | m_Component: 728 | - component: {fileID: 1156804405478641254} 729 | - component: {fileID: 1156804405478641249} 730 | m_Layer: 0 731 | m_Name: RootParent 732 | m_TagString: Untagged 733 | m_Icon: {fileID: 0} 734 | m_NavMeshLayer: 0 735 | m_StaticEditorFlags: 0 736 | m_IsActive: 1 737 | --- !u!4 &1156804405478641254 738 | Transform: 739 | m_ObjectHideFlags: 0 740 | m_CorrespondingSourceObject: {fileID: 0} 741 | m_PrefabInstance: {fileID: 0} 742 | m_PrefabAsset: {fileID: 0} 743 | m_GameObject: {fileID: 1156804405478641255} 744 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 745 | m_LocalPosition: {x: 0, y: 0, z: 0} 746 | m_LocalScale: {x: 1, y: 1, z: 1} 747 | m_Children: 748 | - {fileID: 1156804404173425325} 749 | m_Father: {fileID: 0} 750 | m_RootOrder: 0 751 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 752 | --- !u!114 &1156804405478641249 753 | MonoBehaviour: 754 | m_ObjectHideFlags: 0 755 | m_CorrespondingSourceObject: {fileID: 0} 756 | m_PrefabInstance: {fileID: 0} 757 | m_PrefabAsset: {fileID: 0} 758 | m_GameObject: {fileID: 1156804405478641255} 759 | m_Enabled: 1 760 | m_EditorHideFlags: 0 761 | m_Script: {fileID: 11500000, guid: 83eea12a8d20c534eb89e7fea8489807, type: 3} 762 | m_Name: 763 | m_EditorClassIdentifier: 764 | direction: {x: 0, y: 1, z: 0} 765 | length: 1 766 | interval: 5 767 | -------------------------------------------------------------------------------- /Assets/Sample/StressTest/Prefabs/RootParent.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0d860a8815d604042896297d3fb201aa 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Sample/StressTest/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 000eb8c7cc5530c4caf281b7312bb95f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Sample/StressTest/Scripts/AutoMove.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public class AutoMove : MonoBehaviour 4 | { 5 | [SerializeField] private Vector3 direction = Vector3.up; 6 | 7 | [SerializeField] private float length = 0.5f; 8 | 9 | [SerializeField] [Range(0.1f, 5.0f)] private float interval = 2.0f; 10 | 11 | private Vector3 startPosition; 12 | private float time = 0; 13 | 14 | 15 | private void Start() 16 | { 17 | startPosition = transform.localPosition; 18 | } 19 | 20 | private void Update() 21 | { 22 | time += Time.deltaTime * 5; 23 | float ang = (time % interval) / interval * Mathf.PI * 2.0f; 24 | Vector3 offset = Vector3.Scale(direction, new Vector3(Mathf.Sin(ang), Mathf.Sin(ang), Mathf.Cos(ang))) * length; 25 | transform.localPosition = startPosition + offset; 26 | } 27 | } -------------------------------------------------------------------------------- /Assets/Sample/StressTest/Scripts/AutoMove.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 83eea12a8d20c534eb89e7fea8489807 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Sample/StressTest/Scripts/Generator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | 6 | public class Generator : MonoBehaviour 7 | { 8 | [SerializeField] 9 | private GameObject testObject; 10 | private void Awake() 11 | { 12 | for (int i = 0; i < 40; i++) 13 | { 14 | for (int j = 0; j < 10; j++) 15 | { 16 | GameObject go = Instantiate(testObject); 17 | go.transform.position = new Vector3(i * 4,0,j * 13); 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Assets/Sample/StressTest/Scripts/Generator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6894359ec8fcdc8409f5309ca54f8e6f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Sample/StressTest/StressTest.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 12 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 1 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 512 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 256 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 1 83 | m_PVRDenoiserTypeDirect: 1 84 | m_PVRDenoiserTypeIndirect: 1 85 | m_PVRDenoiserTypeAO: 1 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 1 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 0} 101 | m_LightingSettings: {fileID: 0} 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 2 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | accuratePlacement: 0 121 | maxJobWorkers: 0 122 | preserveTilesOutsideBounds: 0 123 | debug: 124 | m_Flags: 0 125 | m_NavMeshData: {fileID: 0} 126 | --- !u!1 &62638981 127 | GameObject: 128 | m_ObjectHideFlags: 0 129 | m_CorrespondingSourceObject: {fileID: 0} 130 | m_PrefabInstance: {fileID: 0} 131 | m_PrefabAsset: {fileID: 0} 132 | serializedVersion: 6 133 | m_Component: 134 | - component: {fileID: 62638984} 135 | - component: {fileID: 62638983} 136 | - component: {fileID: 62638982} 137 | m_Layer: 0 138 | m_Name: Main Camera 139 | m_TagString: MainCamera 140 | m_Icon: {fileID: 0} 141 | m_NavMeshLayer: 0 142 | m_StaticEditorFlags: 0 143 | m_IsActive: 1 144 | --- !u!81 &62638982 145 | AudioListener: 146 | m_ObjectHideFlags: 0 147 | m_CorrespondingSourceObject: {fileID: 0} 148 | m_PrefabInstance: {fileID: 0} 149 | m_PrefabAsset: {fileID: 0} 150 | m_GameObject: {fileID: 62638981} 151 | m_Enabled: 1 152 | --- !u!20 &62638983 153 | Camera: 154 | m_ObjectHideFlags: 0 155 | m_CorrespondingSourceObject: {fileID: 0} 156 | m_PrefabInstance: {fileID: 0} 157 | m_PrefabAsset: {fileID: 0} 158 | m_GameObject: {fileID: 62638981} 159 | m_Enabled: 1 160 | serializedVersion: 2 161 | m_ClearFlags: 1 162 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 163 | m_projectionMatrixMode: 1 164 | m_GateFitMode: 2 165 | m_FOVAxisMode: 0 166 | m_SensorSize: {x: 36, y: 24} 167 | m_LensShift: {x: 0, y: 0} 168 | m_FocalLength: 50 169 | m_NormalizedViewPortRect: 170 | serializedVersion: 2 171 | x: 0 172 | y: 0 173 | width: 1 174 | height: 1 175 | near clip plane: 0.3 176 | far clip plane: 1000 177 | field of view: 60 178 | orthographic: 0 179 | orthographic size: 5 180 | m_Depth: -1 181 | m_CullingMask: 182 | serializedVersion: 2 183 | m_Bits: 4294967295 184 | m_RenderingPath: -1 185 | m_TargetTexture: {fileID: 0} 186 | m_TargetDisplay: 0 187 | m_TargetEye: 3 188 | m_HDR: 1 189 | m_AllowMSAA: 1 190 | m_AllowDynamicResolution: 0 191 | m_ForceIntoRT: 0 192 | m_OcclusionCulling: 1 193 | m_StereoConvergence: 10 194 | m_StereoSeparation: 0.022 195 | --- !u!4 &62638984 196 | Transform: 197 | m_ObjectHideFlags: 0 198 | m_CorrespondingSourceObject: {fileID: 0} 199 | m_PrefabInstance: {fileID: 0} 200 | m_PrefabAsset: {fileID: 0} 201 | m_GameObject: {fileID: 62638981} 202 | m_LocalRotation: {x: -0.26951393, y: 0.44852588, z: -0.14392248, w: -0.8399245} 203 | m_LocalPosition: {x: 178.71143, y: 41.873665, z: -1.6757889} 204 | m_LocalScale: {x: 1, y: 1, z: 1} 205 | m_Children: [] 206 | m_Father: {fileID: 0} 207 | m_RootOrder: 0 208 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 209 | --- !u!1 &1388843406 210 | GameObject: 211 | m_ObjectHideFlags: 0 212 | m_CorrespondingSourceObject: {fileID: 0} 213 | m_PrefabInstance: {fileID: 0} 214 | m_PrefabAsset: {fileID: 0} 215 | serializedVersion: 6 216 | m_Component: 217 | - component: {fileID: 1388843408} 218 | - component: {fileID: 1388843407} 219 | m_Layer: 0 220 | m_Name: Directional Light 221 | m_TagString: Untagged 222 | m_Icon: {fileID: 0} 223 | m_NavMeshLayer: 0 224 | m_StaticEditorFlags: 0 225 | m_IsActive: 1 226 | --- !u!108 &1388843407 227 | Light: 228 | m_ObjectHideFlags: 0 229 | m_CorrespondingSourceObject: {fileID: 0} 230 | m_PrefabInstance: {fileID: 0} 231 | m_PrefabAsset: {fileID: 0} 232 | m_GameObject: {fileID: 1388843406} 233 | m_Enabled: 1 234 | serializedVersion: 10 235 | m_Type: 1 236 | m_Shape: 0 237 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 238 | m_Intensity: 1 239 | m_Range: 10 240 | m_SpotAngle: 30 241 | m_InnerSpotAngle: 21.80208 242 | m_CookieSize: 10 243 | m_Shadows: 244 | m_Type: 2 245 | m_Resolution: -1 246 | m_CustomResolution: -1 247 | m_Strength: 1 248 | m_Bias: 0.05 249 | m_NormalBias: 0.4 250 | m_NearPlane: 0.2 251 | m_CullingMatrixOverride: 252 | e00: 1 253 | e01: 0 254 | e02: 0 255 | e03: 0 256 | e10: 0 257 | e11: 1 258 | e12: 0 259 | e13: 0 260 | e20: 0 261 | e21: 0 262 | e22: 1 263 | e23: 0 264 | e30: 0 265 | e31: 0 266 | e32: 0 267 | e33: 1 268 | m_UseCullingMatrixOverride: 0 269 | m_Cookie: {fileID: 0} 270 | m_DrawHalo: 0 271 | m_Flare: {fileID: 0} 272 | m_RenderMode: 0 273 | m_CullingMask: 274 | serializedVersion: 2 275 | m_Bits: 4294967295 276 | m_RenderingLayerMask: 1 277 | m_Lightmapping: 4 278 | m_LightShadowCasterMode: 0 279 | m_AreaSize: {x: 1, y: 1} 280 | m_BounceIntensity: 1 281 | m_ColorTemperature: 6570 282 | m_UseColorTemperature: 0 283 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 284 | m_UseBoundingSphereOverride: 0 285 | m_UseViewFrustumForShadowCasterCull: 1 286 | m_ShadowRadius: 0 287 | m_ShadowAngle: 0 288 | --- !u!4 &1388843408 289 | Transform: 290 | m_ObjectHideFlags: 0 291 | m_CorrespondingSourceObject: {fileID: 0} 292 | m_PrefabInstance: {fileID: 0} 293 | m_PrefabAsset: {fileID: 0} 294 | m_GameObject: {fileID: 1388843406} 295 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 296 | m_LocalPosition: {x: 0, y: 3, z: 0} 297 | m_LocalScale: {x: 1, y: 1, z: 1} 298 | m_Children: [] 299 | m_Father: {fileID: 0} 300 | m_RootOrder: 1 301 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 302 | --- !u!1 &1634025859 303 | GameObject: 304 | m_ObjectHideFlags: 0 305 | m_CorrespondingSourceObject: {fileID: 0} 306 | m_PrefabInstance: {fileID: 0} 307 | m_PrefabAsset: {fileID: 0} 308 | serializedVersion: 6 309 | m_Component: 310 | - component: {fileID: 1634025861} 311 | - component: {fileID: 1634025860} 312 | m_Layer: 0 313 | m_Name: GameObject 314 | m_TagString: Untagged 315 | m_Icon: {fileID: 0} 316 | m_NavMeshLayer: 0 317 | m_StaticEditorFlags: 0 318 | m_IsActive: 1 319 | --- !u!114 &1634025860 320 | MonoBehaviour: 321 | m_ObjectHideFlags: 0 322 | m_CorrespondingSourceObject: {fileID: 0} 323 | m_PrefabInstance: {fileID: 0} 324 | m_PrefabAsset: {fileID: 0} 325 | m_GameObject: {fileID: 1634025859} 326 | m_Enabled: 1 327 | m_EditorHideFlags: 0 328 | m_Script: {fileID: 11500000, guid: 987d515c178729f44b720568eec83553, type: 3} 329 | m_Name: 330 | m_EditorClassIdentifier: 331 | isGlobal: 1 332 | radius: 0 333 | height: 0 334 | direction: 1 335 | center: {x: 0, y: 0, z: 0} 336 | bound: 0 337 | --- !u!4 &1634025861 338 | Transform: 339 | m_ObjectHideFlags: 0 340 | m_CorrespondingSourceObject: {fileID: 0} 341 | m_PrefabInstance: {fileID: 0} 342 | m_PrefabAsset: {fileID: 0} 343 | m_GameObject: {fileID: 1634025859} 344 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 345 | m_LocalPosition: {x: 0, y: 0, z: 4.57} 346 | m_LocalScale: {x: 1, y: 1, z: 1} 347 | m_Children: [] 348 | m_Father: {fileID: 0} 349 | m_RootOrder: 3 350 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 351 | --- !u!1 &2081195742 352 | GameObject: 353 | m_ObjectHideFlags: 0 354 | m_CorrespondingSourceObject: {fileID: 0} 355 | m_PrefabInstance: {fileID: 0} 356 | m_PrefabAsset: {fileID: 0} 357 | serializedVersion: 6 358 | m_Component: 359 | - component: {fileID: 2081195744} 360 | - component: {fileID: 2081195743} 361 | m_Layer: 0 362 | m_Name: Generator 363 | m_TagString: Untagged 364 | m_Icon: {fileID: 0} 365 | m_NavMeshLayer: 0 366 | m_StaticEditorFlags: 0 367 | m_IsActive: 1 368 | --- !u!114 &2081195743 369 | MonoBehaviour: 370 | m_ObjectHideFlags: 0 371 | m_CorrespondingSourceObject: {fileID: 0} 372 | m_PrefabInstance: {fileID: 0} 373 | m_PrefabAsset: {fileID: 0} 374 | m_GameObject: {fileID: 2081195742} 375 | m_Enabled: 1 376 | m_EditorHideFlags: 0 377 | m_Script: {fileID: 11500000, guid: 6894359ec8fcdc8409f5309ca54f8e6f, type: 3} 378 | m_Name: 379 | m_EditorClassIdentifier: 380 | testObject: {fileID: 1156804405478641255, guid: 0d860a8815d604042896297d3fb201aa, 381 | type: 3} 382 | --- !u!4 &2081195744 383 | Transform: 384 | m_ObjectHideFlags: 0 385 | m_CorrespondingSourceObject: {fileID: 0} 386 | m_PrefabInstance: {fileID: 0} 387 | m_PrefabAsset: {fileID: 0} 388 | m_GameObject: {fileID: 2081195742} 389 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 390 | m_LocalPosition: {x: 0, y: 0, z: 0} 391 | m_LocalScale: {x: 1, y: 1, z: 1} 392 | m_Children: [] 393 | m_Father: {fileID: 0} 394 | m_RootOrder: 2 395 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 396 | -------------------------------------------------------------------------------- /Assets/Sample/StressTest/StressTest.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 01a8ad1741964084ab64ed94383971f3 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.2d.sprite": "1.0.0", 4 | "com.unity.2d.tilemap": "1.0.0", 5 | "com.unity.analytics": "3.5.3", 6 | "com.unity.burst": "1.3.3", 7 | "com.unity.collab-proxy": "1.3.9", 8 | "com.unity.collections": "0.7.1-preview.3", 9 | "com.unity.ide.rider": "2.0.7", 10 | "com.unity.ide.visualstudio": "2.0.7", 11 | "com.unity.jobs": "0.2.10-preview.12", 12 | "com.unity.mathematics": "1.2.1", 13 | "com.unity.test-framework": "1.1.22", 14 | "com.unity.ugui": "1.0.0", 15 | "com.unity.xr.legacyinputhelpers": "2.1.7", 16 | "com.unity.modules.ai": "1.0.0", 17 | "com.unity.modules.androidjni": "1.0.0", 18 | "com.unity.modules.animation": "1.0.0", 19 | "com.unity.modules.assetbundle": "1.0.0", 20 | "com.unity.modules.audio": "1.0.0", 21 | "com.unity.modules.cloth": "1.0.0", 22 | "com.unity.modules.director": "1.0.0", 23 | "com.unity.modules.imageconversion": "1.0.0", 24 | "com.unity.modules.imgui": "1.0.0", 25 | "com.unity.modules.jsonserialize": "1.0.0", 26 | "com.unity.modules.particlesystem": "1.0.0", 27 | "com.unity.modules.physics": "1.0.0", 28 | "com.unity.modules.physics2d": "1.0.0", 29 | "com.unity.modules.screencapture": "1.0.0", 30 | "com.unity.modules.terrain": "1.0.0", 31 | "com.unity.modules.terrainphysics": "1.0.0", 32 | "com.unity.modules.tilemap": "1.0.0", 33 | "com.unity.modules.ui": "1.0.0", 34 | "com.unity.modules.uielements": "1.0.0", 35 | "com.unity.modules.umbra": "1.0.0", 36 | "com.unity.modules.unityanalytics": "1.0.0", 37 | "com.unity.modules.unitywebrequest": "1.0.0", 38 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 39 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 40 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 41 | "com.unity.modules.unitywebrequestwww": "1.0.0", 42 | "com.unity.modules.vehicles": "1.0.0", 43 | "com.unity.modules.video": "1.0.0", 44 | "com.unity.modules.vr": "1.0.0", 45 | "com.unity.modules.wind": "1.0.0", 46 | "com.unity.modules.xr": "1.0.0" 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Packages/packages-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.2d.sprite": { 4 | "version": "1.0.0", 5 | "depth": 0, 6 | "source": "builtin", 7 | "dependencies": {} 8 | }, 9 | "com.unity.2d.tilemap": { 10 | "version": "1.0.0", 11 | "depth": 0, 12 | "source": "builtin", 13 | "dependencies": {} 14 | }, 15 | "com.unity.analytics": { 16 | "version": "3.5.3", 17 | "depth": 0, 18 | "source": "registry", 19 | "dependencies": { 20 | "com.unity.ugui": "1.0.0" 21 | }, 22 | "url": "https://packages.unity.cn" 23 | }, 24 | "com.unity.burst": { 25 | "version": "1.3.3", 26 | "depth": 0, 27 | "source": "registry", 28 | "dependencies": { 29 | "com.unity.mathematics": "1.1.0" 30 | }, 31 | "url": "https://packages.unity.cn" 32 | }, 33 | "com.unity.collab-proxy": { 34 | "version": "1.3.9", 35 | "depth": 0, 36 | "source": "registry", 37 | "dependencies": {}, 38 | "url": "https://packages.unity.cn" 39 | }, 40 | "com.unity.collections": { 41 | "version": "0.9.0-preview.6", 42 | "depth": 1, 43 | "source": "registry", 44 | "dependencies": { 45 | "com.unity.test-framework.performance": "2.0.8-preview", 46 | "com.unity.burst": "1.3.0-preview.12" 47 | }, 48 | "url": "https://packages.unity.cn" 49 | }, 50 | "com.unity.ext.nunit": { 51 | "version": "1.0.6", 52 | "depth": 1, 53 | "source": "registry", 54 | "dependencies": {}, 55 | "url": "https://packages.unity.cn" 56 | }, 57 | "com.unity.ide.rider": { 58 | "version": "2.0.7", 59 | "depth": 0, 60 | "source": "registry", 61 | "dependencies": { 62 | "com.unity.test-framework": "1.1.1" 63 | }, 64 | "url": "https://packages.unity.cn" 65 | }, 66 | "com.unity.ide.visualstudio": { 67 | "version": "2.0.7", 68 | "depth": 0, 69 | "source": "registry", 70 | "dependencies": { 71 | "com.unity.test-framework": "1.1.9" 72 | }, 73 | "url": "https://packages.unity.cn" 74 | }, 75 | "com.unity.jobs": { 76 | "version": "0.2.10-preview.12", 77 | "depth": 0, 78 | "source": "registry", 79 | "dependencies": { 80 | "com.unity.collections": "0.9.0-preview.6", 81 | "com.unity.mathematics": "1.1.0" 82 | }, 83 | "url": "https://packages.unity.cn" 84 | }, 85 | "com.unity.mathematics": { 86 | "version": "1.2.1", 87 | "depth": 0, 88 | "source": "registry", 89 | "dependencies": {}, 90 | "url": "https://packages.unity.cn" 91 | }, 92 | "com.unity.nuget.newtonsoft-json": { 93 | "version": "2.0.0-preview", 94 | "depth": 3, 95 | "source": "registry", 96 | "dependencies": {}, 97 | "url": "https://packages.unity.cn" 98 | }, 99 | "com.unity.test-framework": { 100 | "version": "1.1.22", 101 | "depth": 0, 102 | "source": "registry", 103 | "dependencies": { 104 | "com.unity.ext.nunit": "1.0.6", 105 | "com.unity.modules.imgui": "1.0.0", 106 | "com.unity.modules.jsonserialize": "1.0.0" 107 | }, 108 | "url": "https://packages.unity.cn" 109 | }, 110 | "com.unity.test-framework.performance": { 111 | "version": "2.0.8-preview", 112 | "depth": 2, 113 | "source": "registry", 114 | "dependencies": { 115 | "com.unity.test-framework": "1.1.0", 116 | "com.unity.nuget.newtonsoft-json": "2.0.0-preview" 117 | }, 118 | "url": "https://packages.unity.cn" 119 | }, 120 | "com.unity.ugui": { 121 | "version": "1.0.0", 122 | "depth": 0, 123 | "source": "builtin", 124 | "dependencies": { 125 | "com.unity.modules.ui": "1.0.0", 126 | "com.unity.modules.imgui": "1.0.0" 127 | } 128 | }, 129 | "com.unity.xr.legacyinputhelpers": { 130 | "version": "2.1.7", 131 | "depth": 0, 132 | "source": "registry", 133 | "dependencies": { 134 | "com.unity.modules.vr": "1.0.0", 135 | "com.unity.modules.xr": "1.0.0" 136 | }, 137 | "url": "https://packages.unity.cn" 138 | }, 139 | "com.unity.modules.ai": { 140 | "version": "1.0.0", 141 | "depth": 0, 142 | "source": "builtin", 143 | "dependencies": {} 144 | }, 145 | "com.unity.modules.androidjni": { 146 | "version": "1.0.0", 147 | "depth": 0, 148 | "source": "builtin", 149 | "dependencies": {} 150 | }, 151 | "com.unity.modules.animation": { 152 | "version": "1.0.0", 153 | "depth": 0, 154 | "source": "builtin", 155 | "dependencies": {} 156 | }, 157 | "com.unity.modules.assetbundle": { 158 | "version": "1.0.0", 159 | "depth": 0, 160 | "source": "builtin", 161 | "dependencies": {} 162 | }, 163 | "com.unity.modules.audio": { 164 | "version": "1.0.0", 165 | "depth": 0, 166 | "source": "builtin", 167 | "dependencies": {} 168 | }, 169 | "com.unity.modules.cloth": { 170 | "version": "1.0.0", 171 | "depth": 0, 172 | "source": "builtin", 173 | "dependencies": { 174 | "com.unity.modules.physics": "1.0.0" 175 | } 176 | }, 177 | "com.unity.modules.director": { 178 | "version": "1.0.0", 179 | "depth": 0, 180 | "source": "builtin", 181 | "dependencies": { 182 | "com.unity.modules.audio": "1.0.0", 183 | "com.unity.modules.animation": "1.0.0" 184 | } 185 | }, 186 | "com.unity.modules.imageconversion": { 187 | "version": "1.0.0", 188 | "depth": 0, 189 | "source": "builtin", 190 | "dependencies": {} 191 | }, 192 | "com.unity.modules.imgui": { 193 | "version": "1.0.0", 194 | "depth": 0, 195 | "source": "builtin", 196 | "dependencies": {} 197 | }, 198 | "com.unity.modules.jsonserialize": { 199 | "version": "1.0.0", 200 | "depth": 0, 201 | "source": "builtin", 202 | "dependencies": {} 203 | }, 204 | "com.unity.modules.particlesystem": { 205 | "version": "1.0.0", 206 | "depth": 0, 207 | "source": "builtin", 208 | "dependencies": {} 209 | }, 210 | "com.unity.modules.physics": { 211 | "version": "1.0.0", 212 | "depth": 0, 213 | "source": "builtin", 214 | "dependencies": {} 215 | }, 216 | "com.unity.modules.physics2d": { 217 | "version": "1.0.0", 218 | "depth": 0, 219 | "source": "builtin", 220 | "dependencies": {} 221 | }, 222 | "com.unity.modules.screencapture": { 223 | "version": "1.0.0", 224 | "depth": 0, 225 | "source": "builtin", 226 | "dependencies": { 227 | "com.unity.modules.imageconversion": "1.0.0" 228 | } 229 | }, 230 | "com.unity.modules.subsystems": { 231 | "version": "1.0.0", 232 | "depth": 1, 233 | "source": "builtin", 234 | "dependencies": { 235 | "com.unity.modules.jsonserialize": "1.0.0" 236 | } 237 | }, 238 | "com.unity.modules.terrain": { 239 | "version": "1.0.0", 240 | "depth": 0, 241 | "source": "builtin", 242 | "dependencies": {} 243 | }, 244 | "com.unity.modules.terrainphysics": { 245 | "version": "1.0.0", 246 | "depth": 0, 247 | "source": "builtin", 248 | "dependencies": { 249 | "com.unity.modules.physics": "1.0.0", 250 | "com.unity.modules.terrain": "1.0.0" 251 | } 252 | }, 253 | "com.unity.modules.tilemap": { 254 | "version": "1.0.0", 255 | "depth": 0, 256 | "source": "builtin", 257 | "dependencies": { 258 | "com.unity.modules.physics2d": "1.0.0" 259 | } 260 | }, 261 | "com.unity.modules.ui": { 262 | "version": "1.0.0", 263 | "depth": 0, 264 | "source": "builtin", 265 | "dependencies": {} 266 | }, 267 | "com.unity.modules.uielements": { 268 | "version": "1.0.0", 269 | "depth": 0, 270 | "source": "builtin", 271 | "dependencies": { 272 | "com.unity.modules.ui": "1.0.0", 273 | "com.unity.modules.imgui": "1.0.0", 274 | "com.unity.modules.jsonserialize": "1.0.0", 275 | "com.unity.modules.uielementsnative": "1.0.0" 276 | } 277 | }, 278 | "com.unity.modules.uielementsnative": { 279 | "version": "1.0.0", 280 | "depth": 1, 281 | "source": "builtin", 282 | "dependencies": { 283 | "com.unity.modules.ui": "1.0.0", 284 | "com.unity.modules.imgui": "1.0.0", 285 | "com.unity.modules.jsonserialize": "1.0.0" 286 | } 287 | }, 288 | "com.unity.modules.umbra": { 289 | "version": "1.0.0", 290 | "depth": 0, 291 | "source": "builtin", 292 | "dependencies": {} 293 | }, 294 | "com.unity.modules.unityanalytics": { 295 | "version": "1.0.0", 296 | "depth": 0, 297 | "source": "builtin", 298 | "dependencies": { 299 | "com.unity.modules.unitywebrequest": "1.0.0", 300 | "com.unity.modules.jsonserialize": "1.0.0" 301 | } 302 | }, 303 | "com.unity.modules.unitywebrequest": { 304 | "version": "1.0.0", 305 | "depth": 0, 306 | "source": "builtin", 307 | "dependencies": {} 308 | }, 309 | "com.unity.modules.unitywebrequestassetbundle": { 310 | "version": "1.0.0", 311 | "depth": 0, 312 | "source": "builtin", 313 | "dependencies": { 314 | "com.unity.modules.assetbundle": "1.0.0", 315 | "com.unity.modules.unitywebrequest": "1.0.0" 316 | } 317 | }, 318 | "com.unity.modules.unitywebrequestaudio": { 319 | "version": "1.0.0", 320 | "depth": 0, 321 | "source": "builtin", 322 | "dependencies": { 323 | "com.unity.modules.unitywebrequest": "1.0.0", 324 | "com.unity.modules.audio": "1.0.0" 325 | } 326 | }, 327 | "com.unity.modules.unitywebrequesttexture": { 328 | "version": "1.0.0", 329 | "depth": 0, 330 | "source": "builtin", 331 | "dependencies": { 332 | "com.unity.modules.unitywebrequest": "1.0.0", 333 | "com.unity.modules.imageconversion": "1.0.0" 334 | } 335 | }, 336 | "com.unity.modules.unitywebrequestwww": { 337 | "version": "1.0.0", 338 | "depth": 0, 339 | "source": "builtin", 340 | "dependencies": { 341 | "com.unity.modules.unitywebrequest": "1.0.0", 342 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 343 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 344 | "com.unity.modules.audio": "1.0.0", 345 | "com.unity.modules.assetbundle": "1.0.0", 346 | "com.unity.modules.imageconversion": "1.0.0" 347 | } 348 | }, 349 | "com.unity.modules.vehicles": { 350 | "version": "1.0.0", 351 | "depth": 0, 352 | "source": "builtin", 353 | "dependencies": { 354 | "com.unity.modules.physics": "1.0.0" 355 | } 356 | }, 357 | "com.unity.modules.video": { 358 | "version": "1.0.0", 359 | "depth": 0, 360 | "source": "builtin", 361 | "dependencies": { 362 | "com.unity.modules.audio": "1.0.0", 363 | "com.unity.modules.ui": "1.0.0", 364 | "com.unity.modules.unitywebrequest": "1.0.0" 365 | } 366 | }, 367 | "com.unity.modules.vr": { 368 | "version": "1.0.0", 369 | "depth": 0, 370 | "source": "builtin", 371 | "dependencies": { 372 | "com.unity.modules.jsonserialize": "1.0.0", 373 | "com.unity.modules.physics": "1.0.0", 374 | "com.unity.modules.xr": "1.0.0" 375 | } 376 | }, 377 | "com.unity.modules.wind": { 378 | "version": "1.0.0", 379 | "depth": 0, 380 | "source": "builtin", 381 | "dependencies": {} 382 | }, 383 | "com.unity.modules.xr": { 384 | "version": "1.0.0", 385 | "depth": 0, 386 | "source": "builtin", 387 | "dependencies": { 388 | "com.unity.modules.physics": "1.0.0", 389 | "com.unity.modules.jsonserialize": "1.0.0", 390 | "com.unity.modules.subsystems": "1.0.0" 391 | } 392 | } 393 | } 394 | } 395 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 1024 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_AmbisonicDecoderPlugin: 16 | m_DisableAudio: 0 17 | m_VirtualizeEffects: 1 18 | -------------------------------------------------------------------------------- /ProjectSettings/BurstAotSettings_StandaloneWindows.json: -------------------------------------------------------------------------------- 1 | { 2 | "MonoBehaviour": { 3 | "Version": 2, 4 | "EnableBurstCompilation": true, 5 | "EnableOptimisations": true, 6 | "EnableSafetyChecks": false, 7 | "UsePlatformSDKLinker": false, 8 | "CpuMinTargetX32": 1, 9 | "CpuMaxTargetX32": 2, 10 | "CpuMinTargetX64": 3, 11 | "CpuMaxTargetX64": 4 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 8 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | m_configObjects: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 9 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 2 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 1 30 | m_AssetPipelineMode: 1 31 | m_CacheServerMode: 0 32 | m_CacheServerEndpoint: 33 | m_CacheServerNamespacePrefix: default 34 | m_CacheServerEnableDownload: 1 35 | m_CacheServerEnableUpload: 1 36 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 40 | - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0} 41 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} 42 | m_PreloadedShaders: [] 43 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 44 | type: 0} 45 | m_CustomRenderPipeline: {fileID: 0} 46 | m_TransparencySortMode: 0 47 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 48 | m_DefaultRenderingPath: 1 49 | m_DefaultMobileRenderingPath: 1 50 | m_TierSettings: [] 51 | m_LightmapStripping: 0 52 | m_FogStripping: 0 53 | m_InstancingStripping: 0 54 | m_LightmapKeepPlain: 1 55 | m_LightmapKeepDirCombined: 1 56 | m_LightmapKeepDynamicPlain: 1 57 | m_LightmapKeepDynamicDirCombined: 1 58 | m_LightmapKeepShadowMask: 1 59 | m_LightmapKeepSubtractive: 1 60 | m_FogKeepLinear: 1 61 | m_FogKeepExp: 1 62 | m_FogKeepExp2: 1 63 | m_AlbedoSwatchInfos: [] 64 | m_LightsUseLinearIntensity: 0 65 | m_LightsUseColorTemperature: 0 66 | m_LogWhenShaderIsCompiled: 0 67 | m_AllowEnlightenSupportForUpgradedProject: 1 68 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreviewPackages: 0 16 | m_EnablePackageDependencies: 0 17 | m_AdvancedSettingsExpanded: 1 18 | m_ScopedRegistriesSettingsExpanded: 1 19 | oneTimeWarningShown: 0 20 | m_Registries: 21 | - m_Id: main 22 | m_Name: 23 | m_Url: https://packages.unity.cn 24 | m_Scopes: [] 25 | m_IsDefault: 1 26 | m_Capabilities: 7 27 | m_UserSelectedRegistryName: 28 | m_UserAddingNewScopedRegistry: 0 29 | m_RegistryInfoDraft: 30 | m_ErrorMessage: 31 | m_Original: 32 | m_Id: 33 | m_Name: 34 | m_Url: 35 | m_Scopes: [] 36 | m_IsDefault: 0 37 | m_Capabilities: 0 38 | m_Modified: 0 39 | m_Name: 40 | m_Url: 41 | m_Scopes: 42 | - 43 | m_SelectedScopeIndex: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_AutoSimulation: 1 23 | m_QueriesHitTriggers: 1 24 | m_QueriesStartInColliders: 1 25 | m_ChangeStopsCallbacks: 0 26 | m_CallbacksOnDisable: 1 27 | m_ReuseCollisionCallbacks: 1 28 | m_AutoSyncTransforms: 0 29 | m_AlwaysShowColliders: 0 30 | m_ShowColliderSleep: 1 31 | m_ShowColliderContacts: 0 32 | m_ShowColliderAABB: 0 33 | m_ContactArrowScale: 0.2 34 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 35 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 36 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 37 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 38 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 39 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: 7 | - type: 8 | m_NativeTypeID: 108 9 | m_ManagedTypePPtr: {fileID: 0} 10 | m_ManagedTypeFallback: 11 | defaultPresets: 12 | - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea, 13 | type: 2} 14 | - type: 15 | m_NativeTypeID: 1020 16 | m_ManagedTypePPtr: {fileID: 0} 17 | m_ManagedTypeFallback: 18 | defaultPresets: 19 | - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6, 20 | type: 2} 21 | - type: 22 | m_NativeTypeID: 1006 23 | m_ManagedTypePPtr: {fileID: 0} 24 | m_ManagedTypeFallback: 25 | defaultPresets: 26 | - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9, 27 | type: 2} 28 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 20 7 | productGUID: 166bf91410dd0564fa833ca21315b6e7 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: DefaultCompany 16 | productName: DynamicBoneJobSystem 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 1 51 | m_MTRendering: 1 52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 53 | iosShowActivityIndicatorOnLoading: -1 54 | androidShowActivityIndicatorOnLoading: -1 55 | iosUseCustomAppBackgroundBehavior: 0 56 | iosAllowHTTPDownload: 1 57 | allowedAutorotateToPortrait: 1 58 | allowedAutorotateToPortraitUpsideDown: 1 59 | allowedAutorotateToLandscapeRight: 1 60 | allowedAutorotateToLandscapeLeft: 1 61 | useOSAutorotation: 1 62 | use32BitDisplayBuffer: 1 63 | preserveFramebufferAlpha: 0 64 | disableDepthAndStencilBuffers: 0 65 | androidStartInFullscreen: 1 66 | androidRenderOutsideSafeArea: 0 67 | androidUseSwappy: 0 68 | androidBlitType: 0 69 | defaultIsNativeResolution: 1 70 | macRetinaSupport: 1 71 | runInBackground: 1 72 | captureSingleScreen: 0 73 | muteOtherAudioSources: 0 74 | Prepare IOS For Recording: 0 75 | Force IOS Speakers When Recording: 0 76 | deferSystemGesturesMode: 0 77 | hideHomeButton: 0 78 | submitAnalytics: 1 79 | usePlayerLog: 1 80 | bakeCollisionMeshes: 0 81 | forceSingleInstance: 0 82 | useFlipModelSwapchain: 1 83 | resizableWindow: 0 84 | useMacAppStoreValidation: 0 85 | macAppStoreCategory: public.app-category.games 86 | gpuSkinning: 1 87 | xboxPIXTextureCapture: 0 88 | xboxEnableAvatar: 0 89 | xboxEnableKinect: 0 90 | xboxEnableKinectAutoTracking: 0 91 | xboxEnableFitness: 0 92 | visibleInBackground: 1 93 | allowFullscreenSwitch: 1 94 | fullscreenMode: 1 95 | xboxSpeechDB: 0 96 | xboxEnableHeadOrientation: 0 97 | xboxEnableGuest: 0 98 | xboxEnablePIXSampling: 0 99 | metalFramebufferOnly: 0 100 | xboxOneResolution: 0 101 | xboxOneSResolution: 0 102 | xboxOneXResolution: 3 103 | xboxOneMonoLoggingLevel: 0 104 | xboxOneLoggingLevel: 1 105 | xboxOneDisableEsram: 0 106 | xboxOneEnableTypeOptimization: 0 107 | xboxOnePresentImmediateThreshold: 0 108 | switchQueueCommandMemory: 0 109 | switchQueueControlMemory: 16384 110 | switchQueueComputeMemory: 262144 111 | switchNVNShaderPoolsGranularity: 33554432 112 | switchNVNDefaultPoolsGranularity: 16777216 113 | switchNVNOtherPoolsGranularity: 16777216 114 | stadiaPresentMode: 0 115 | stadiaTargetFramerate: 0 116 | vulkanNumSwapchainBuffers: 3 117 | vulkanEnableSetSRGBWrite: 0 118 | m_SupportedAspectRatios: 119 | 4:3: 1 120 | 5:4: 1 121 | 16:10: 1 122 | 16:9: 1 123 | Others: 1 124 | bundleVersion: 0.1 125 | preloadedAssets: [] 126 | metroInputSource: 0 127 | wsaTransparentSwapchain: 0 128 | m_HolographicPauseOnTrackingLoss: 1 129 | xboxOneDisableKinectGpuReservation: 1 130 | xboxOneEnable7thCore: 1 131 | vrSettings: 132 | cardboard: 133 | depthFormat: 0 134 | enableTransitionView: 0 135 | daydream: 136 | depthFormat: 0 137 | useSustainedPerformanceMode: 0 138 | enableVideoLayer: 0 139 | useProtectedVideoMemory: 0 140 | minimumSupportedHeadTracking: 0 141 | maximumSupportedHeadTracking: 1 142 | hololens: 143 | depthFormat: 1 144 | depthBufferSharingEnabled: 1 145 | lumin: 146 | depthFormat: 0 147 | frameTiming: 2 148 | enableGLCache: 0 149 | glCacheMaxBlobSize: 524288 150 | glCacheMaxFileSize: 8388608 151 | oculus: 152 | sharedDepthBuffer: 1 153 | dashSupport: 1 154 | lowOverheadMode: 0 155 | protectedContext: 0 156 | v2Signing: 1 157 | enable360StereoCapture: 0 158 | isWsaHolographicRemotingEnabled: 0 159 | enableFrameTimingStats: 0 160 | useHDRDisplay: 0 161 | D3DHDRBitDepth: 0 162 | m_ColorGamuts: 00000000 163 | targetPixelDensity: 30 164 | resolutionScalingMode: 0 165 | androidSupportedAspectRatio: 1 166 | androidMaxAspectRatio: 2.1 167 | applicationIdentifier: {} 168 | buildNumber: {} 169 | AndroidBundleVersionCode: 1 170 | AndroidMinSdkVersion: 19 171 | AndroidTargetSdkVersion: 0 172 | AndroidPreferredInstallLocation: 1 173 | aotOptions: 174 | stripEngineCode: 1 175 | iPhoneStrippingLevel: 0 176 | iPhoneScriptCallOptimization: 0 177 | ForceInternetPermission: 0 178 | ForceSDCardPermission: 0 179 | CreateWallpaper: 0 180 | APKExpansionFiles: 0 181 | keepLoadedShadersAlive: 0 182 | StripUnusedMeshComponents: 1 183 | VertexChannelCompressionMask: 4054 184 | iPhoneSdkVersion: 988 185 | iOSTargetOSVersionString: 10.0 186 | tvOSSdkVersion: 0 187 | tvOSRequireExtendedGameController: 0 188 | tvOSTargetOSVersionString: 10.0 189 | uIPrerenderedIcon: 0 190 | uIRequiresPersistentWiFi: 0 191 | uIRequiresFullScreen: 1 192 | uIStatusBarHidden: 1 193 | uIExitOnSuspend: 0 194 | uIStatusBarStyle: 0 195 | appleTVSplashScreen: {fileID: 0} 196 | appleTVSplashScreen2x: {fileID: 0} 197 | tvOSSmallIconLayers: [] 198 | tvOSSmallIconLayers2x: [] 199 | tvOSLargeIconLayers: [] 200 | tvOSLargeIconLayers2x: [] 201 | tvOSTopShelfImageLayers: [] 202 | tvOSTopShelfImageLayers2x: [] 203 | tvOSTopShelfImageWideLayers: [] 204 | tvOSTopShelfImageWideLayers2x: [] 205 | iOSLaunchScreenType: 0 206 | iOSLaunchScreenPortrait: {fileID: 0} 207 | iOSLaunchScreenLandscape: {fileID: 0} 208 | iOSLaunchScreenBackgroundColor: 209 | serializedVersion: 2 210 | rgba: 0 211 | iOSLaunchScreenFillPct: 100 212 | iOSLaunchScreenSize: 100 213 | iOSLaunchScreenCustomXibPath: 214 | iOSLaunchScreeniPadType: 0 215 | iOSLaunchScreeniPadImage: {fileID: 0} 216 | iOSLaunchScreeniPadBackgroundColor: 217 | serializedVersion: 2 218 | rgba: 0 219 | iOSLaunchScreeniPadFillPct: 100 220 | iOSLaunchScreeniPadSize: 100 221 | iOSLaunchScreeniPadCustomXibPath: 222 | iOSUseLaunchScreenStoryboard: 0 223 | iOSLaunchScreenCustomStoryboardPath: 224 | iOSDeviceRequirements: [] 225 | iOSURLSchemes: [] 226 | iOSBackgroundModes: 0 227 | iOSMetalForceHardShadows: 0 228 | metalEditorSupport: 1 229 | metalAPIValidation: 1 230 | iOSRenderExtraFrameOnPause: 0 231 | appleDeveloperTeamID: 232 | iOSManualSigningProvisioningProfileID: 233 | tvOSManualSigningProvisioningProfileID: 234 | iOSManualSigningProvisioningProfileType: 0 235 | tvOSManualSigningProvisioningProfileType: 0 236 | appleEnableAutomaticSigning: 0 237 | iOSRequireARKit: 0 238 | iOSAutomaticallyDetectAndAddCapabilities: 1 239 | appleEnableProMotion: 0 240 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea 241 | templatePackageId: com.unity.template.3d@1.3.0 242 | templateDefaultScene: Assets/Scenes/SampleScene.unity 243 | AndroidTargetArchitectures: 5 244 | AndroidSplashScreenScale: 0 245 | androidSplashScreen: {fileID: 0} 246 | AndroidKeystoreName: '{inproject}: ' 247 | AndroidKeyaliasName: 248 | AndroidBuildApkPerCpuArchitecture: 0 249 | AndroidTVCompatibility: 1 250 | AndroidIsGame: 1 251 | AndroidEnableTango: 0 252 | androidEnableBanner: 1 253 | androidUseLowAccuracyLocation: 0 254 | androidUseCustomKeystore: 0 255 | m_AndroidBanners: 256 | - width: 320 257 | height: 180 258 | banner: {fileID: 0} 259 | androidGamepadSupportLevel: 0 260 | AndroidValidateAppBundleSize: 1 261 | AndroidAppBundleSizeToValidate: 150 262 | m_BuildTargetIcons: [] 263 | m_BuildTargetPlatformIcons: [] 264 | m_BuildTargetBatching: 265 | - m_BuildTarget: Standalone 266 | m_StaticBatching: 1 267 | m_DynamicBatching: 1 268 | - m_BuildTarget: tvOS 269 | m_StaticBatching: 1 270 | m_DynamicBatching: 0 271 | - m_BuildTarget: Android 272 | m_StaticBatching: 1 273 | m_DynamicBatching: 0 274 | - m_BuildTarget: iPhone 275 | m_StaticBatching: 1 276 | m_DynamicBatching: 0 277 | - m_BuildTarget: WebGL 278 | m_StaticBatching: 0 279 | m_DynamicBatching: 0 280 | m_BuildTargetGraphicsJobs: 281 | - m_BuildTarget: MacStandaloneSupport 282 | m_GraphicsJobs: 0 283 | - m_BuildTarget: Switch 284 | m_GraphicsJobs: 0 285 | - m_BuildTarget: MetroSupport 286 | m_GraphicsJobs: 0 287 | - m_BuildTarget: AppleTVSupport 288 | m_GraphicsJobs: 0 289 | - m_BuildTarget: BJMSupport 290 | m_GraphicsJobs: 0 291 | - m_BuildTarget: LinuxStandaloneSupport 292 | m_GraphicsJobs: 0 293 | - m_BuildTarget: PS4Player 294 | m_GraphicsJobs: 0 295 | - m_BuildTarget: iOSSupport 296 | m_GraphicsJobs: 0 297 | - m_BuildTarget: WindowsStandaloneSupport 298 | m_GraphicsJobs: 0 299 | - m_BuildTarget: XboxOnePlayer 300 | m_GraphicsJobs: 0 301 | - m_BuildTarget: LuminSupport 302 | m_GraphicsJobs: 0 303 | - m_BuildTarget: AndroidPlayer 304 | m_GraphicsJobs: 0 305 | - m_BuildTarget: WebGLSupport 306 | m_GraphicsJobs: 0 307 | m_BuildTargetGraphicsJobMode: 308 | - m_BuildTarget: PS4Player 309 | m_GraphicsJobMode: 0 310 | - m_BuildTarget: XboxOnePlayer 311 | m_GraphicsJobMode: 0 312 | m_BuildTargetGraphicsAPIs: 313 | - m_BuildTarget: AndroidPlayer 314 | m_APIs: 0b00000008000000 315 | m_Automatic: 1 316 | - m_BuildTarget: iOSSupport 317 | m_APIs: 10000000 318 | m_Automatic: 1 319 | - m_BuildTarget: AppleTVSupport 320 | m_APIs: 10000000 321 | m_Automatic: 0 322 | - m_BuildTarget: WebGLSupport 323 | m_APIs: 0b000000 324 | m_Automatic: 1 325 | m_BuildTargetVRSettings: 326 | - m_BuildTarget: Standalone 327 | m_Enabled: 0 328 | m_Devices: 329 | - Oculus 330 | - OpenVR 331 | openGLRequireES31: 0 332 | openGLRequireES31AEP: 0 333 | openGLRequireES32: 0 334 | m_TemplateCustomTags: {} 335 | mobileMTRendering: 336 | Android: 1 337 | iPhone: 1 338 | tvOS: 1 339 | m_BuildTargetGroupLightmapEncodingQuality: [] 340 | m_BuildTargetGroupLightmapSettings: [] 341 | playModeTestRunnerEnabled: 0 342 | runPlayModeTestAsEditModeTest: 0 343 | actionOnDotNetUnhandledException: 1 344 | enableInternalProfiler: 0 345 | logObjCUncaughtExceptions: 1 346 | enableCrashReportAPI: 0 347 | cameraUsageDescription: 348 | locationUsageDescription: 349 | microphoneUsageDescription: 350 | switchNetLibKey: 351 | switchSocketMemoryPoolSize: 6144 352 | switchSocketAllocatorPoolSize: 128 353 | switchSocketConcurrencyLimit: 14 354 | switchScreenResolutionBehavior: 2 355 | switchUseCPUProfiler: 0 356 | switchApplicationID: 0x01004b9000490000 357 | switchNSODependencies: 358 | switchTitleNames_0: 359 | switchTitleNames_1: 360 | switchTitleNames_2: 361 | switchTitleNames_3: 362 | switchTitleNames_4: 363 | switchTitleNames_5: 364 | switchTitleNames_6: 365 | switchTitleNames_7: 366 | switchTitleNames_8: 367 | switchTitleNames_9: 368 | switchTitleNames_10: 369 | switchTitleNames_11: 370 | switchTitleNames_12: 371 | switchTitleNames_13: 372 | switchTitleNames_14: 373 | switchPublisherNames_0: 374 | switchPublisherNames_1: 375 | switchPublisherNames_2: 376 | switchPublisherNames_3: 377 | switchPublisherNames_4: 378 | switchPublisherNames_5: 379 | switchPublisherNames_6: 380 | switchPublisherNames_7: 381 | switchPublisherNames_8: 382 | switchPublisherNames_9: 383 | switchPublisherNames_10: 384 | switchPublisherNames_11: 385 | switchPublisherNames_12: 386 | switchPublisherNames_13: 387 | switchPublisherNames_14: 388 | switchIcons_0: {fileID: 0} 389 | switchIcons_1: {fileID: 0} 390 | switchIcons_2: {fileID: 0} 391 | switchIcons_3: {fileID: 0} 392 | switchIcons_4: {fileID: 0} 393 | switchIcons_5: {fileID: 0} 394 | switchIcons_6: {fileID: 0} 395 | switchIcons_7: {fileID: 0} 396 | switchIcons_8: {fileID: 0} 397 | switchIcons_9: {fileID: 0} 398 | switchIcons_10: {fileID: 0} 399 | switchIcons_11: {fileID: 0} 400 | switchIcons_12: {fileID: 0} 401 | switchIcons_13: {fileID: 0} 402 | switchIcons_14: {fileID: 0} 403 | switchSmallIcons_0: {fileID: 0} 404 | switchSmallIcons_1: {fileID: 0} 405 | switchSmallIcons_2: {fileID: 0} 406 | switchSmallIcons_3: {fileID: 0} 407 | switchSmallIcons_4: {fileID: 0} 408 | switchSmallIcons_5: {fileID: 0} 409 | switchSmallIcons_6: {fileID: 0} 410 | switchSmallIcons_7: {fileID: 0} 411 | switchSmallIcons_8: {fileID: 0} 412 | switchSmallIcons_9: {fileID: 0} 413 | switchSmallIcons_10: {fileID: 0} 414 | switchSmallIcons_11: {fileID: 0} 415 | switchSmallIcons_12: {fileID: 0} 416 | switchSmallIcons_13: {fileID: 0} 417 | switchSmallIcons_14: {fileID: 0} 418 | switchManualHTML: 419 | switchAccessibleURLs: 420 | switchLegalInformation: 421 | switchMainThreadStackSize: 1048576 422 | switchPresenceGroupId: 423 | switchLogoHandling: 0 424 | switchReleaseVersion: 0 425 | switchDisplayVersion: 1.0.0 426 | switchStartupUserAccount: 0 427 | switchTouchScreenUsage: 0 428 | switchSupportedLanguagesMask: 0 429 | switchLogoType: 0 430 | switchApplicationErrorCodeCategory: 431 | switchUserAccountSaveDataSize: 0 432 | switchUserAccountSaveDataJournalSize: 0 433 | switchApplicationAttribute: 0 434 | switchCardSpecSize: -1 435 | switchCardSpecClock: -1 436 | switchRatingsMask: 0 437 | switchRatingsInt_0: 0 438 | switchRatingsInt_1: 0 439 | switchRatingsInt_2: 0 440 | switchRatingsInt_3: 0 441 | switchRatingsInt_4: 0 442 | switchRatingsInt_5: 0 443 | switchRatingsInt_6: 0 444 | switchRatingsInt_7: 0 445 | switchRatingsInt_8: 0 446 | switchRatingsInt_9: 0 447 | switchRatingsInt_10: 0 448 | switchRatingsInt_11: 0 449 | switchRatingsInt_12: 0 450 | switchLocalCommunicationIds_0: 451 | switchLocalCommunicationIds_1: 452 | switchLocalCommunicationIds_2: 453 | switchLocalCommunicationIds_3: 454 | switchLocalCommunicationIds_4: 455 | switchLocalCommunicationIds_5: 456 | switchLocalCommunicationIds_6: 457 | switchLocalCommunicationIds_7: 458 | switchParentalControl: 0 459 | switchAllowsScreenshot: 1 460 | switchAllowsVideoCapturing: 1 461 | switchAllowsRuntimeAddOnContentInstall: 0 462 | switchDataLossConfirmation: 0 463 | switchUserAccountLockEnabled: 0 464 | switchSystemResourceMemory: 16777216 465 | switchSupportedNpadStyles: 3 466 | switchNativeFsCacheSize: 32 467 | switchIsHoldTypeHorizontal: 0 468 | switchSupportedNpadCount: 8 469 | switchSocketConfigEnabled: 0 470 | switchTcpInitialSendBufferSize: 32 471 | switchTcpInitialReceiveBufferSize: 64 472 | switchTcpAutoSendBufferSizeMax: 256 473 | switchTcpAutoReceiveBufferSizeMax: 256 474 | switchUdpSendBufferSize: 9 475 | switchUdpReceiveBufferSize: 42 476 | switchSocketBufferEfficiency: 4 477 | switchSocketInitializeEnabled: 1 478 | switchNetworkInterfaceManagerInitializeEnabled: 1 479 | switchPlayerConnectionEnabled: 1 480 | ps4NPAgeRating: 12 481 | ps4NPTitleSecret: 482 | ps4NPTrophyPackPath: 483 | ps4ParentalLevel: 11 484 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 485 | ps4Category: 0 486 | ps4MasterVersion: 01.00 487 | ps4AppVersion: 01.00 488 | ps4AppType: 0 489 | ps4ParamSfxPath: 490 | ps4VideoOutPixelFormat: 0 491 | ps4VideoOutInitialWidth: 1920 492 | ps4VideoOutBaseModeInitialWidth: 1920 493 | ps4VideoOutReprojectionRate: 60 494 | ps4PronunciationXMLPath: 495 | ps4PronunciationSIGPath: 496 | ps4BackgroundImagePath: 497 | ps4StartupImagePath: 498 | ps4StartupImagesFolder: 499 | ps4IconImagesFolder: 500 | ps4SaveDataImagePath: 501 | ps4SdkOverride: 502 | ps4BGMPath: 503 | ps4ShareFilePath: 504 | ps4ShareOverlayImagePath: 505 | ps4PrivacyGuardImagePath: 506 | ps4NPtitleDatPath: 507 | ps4RemotePlayKeyAssignment: -1 508 | ps4RemotePlayKeyMappingDir: 509 | ps4PlayTogetherPlayerCount: 0 510 | ps4EnterButtonAssignment: 1 511 | ps4ApplicationParam1: 0 512 | ps4ApplicationParam2: 0 513 | ps4ApplicationParam3: 0 514 | ps4ApplicationParam4: 0 515 | ps4DownloadDataSize: 0 516 | ps4GarlicHeapSize: 2048 517 | ps4ProGarlicHeapSize: 2560 518 | playerPrefsMaxSize: 32768 519 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 520 | ps4pnSessions: 1 521 | ps4pnPresence: 1 522 | ps4pnFriends: 1 523 | ps4pnGameCustomData: 1 524 | playerPrefsSupport: 0 525 | enableApplicationExit: 0 526 | resetTempFolder: 1 527 | restrictedAudioUsageRights: 0 528 | ps4UseResolutionFallback: 0 529 | ps4ReprojectionSupport: 0 530 | ps4UseAudio3dBackend: 0 531 | ps4UseLowGarlicFragmentationMode: 1 532 | ps4SocialScreenEnabled: 0 533 | ps4ScriptOptimizationLevel: 0 534 | ps4Audio3dVirtualSpeakerCount: 14 535 | ps4attribCpuUsage: 0 536 | ps4PatchPkgPath: 537 | ps4PatchLatestPkgPath: 538 | ps4PatchChangeinfoPath: 539 | ps4PatchDayOne: 0 540 | ps4attribUserManagement: 0 541 | ps4attribMoveSupport: 0 542 | ps4attrib3DSupport: 0 543 | ps4attribShareSupport: 0 544 | ps4attribExclusiveVR: 0 545 | ps4disableAutoHideSplash: 0 546 | ps4videoRecordingFeaturesUsed: 0 547 | ps4contentSearchFeaturesUsed: 0 548 | ps4attribEyeToEyeDistanceSettingVR: 0 549 | ps4IncludedModules: [] 550 | ps4attribVROutputEnabled: 0 551 | monoEnv: 552 | splashScreenBackgroundSourceLandscape: {fileID: 0} 553 | splashScreenBackgroundSourcePortrait: {fileID: 0} 554 | blurSplashScreenBackground: 1 555 | spritePackerPolicy: 556 | webGLMemorySize: 256 557 | webGLExceptionSupport: 1 558 | webGLNameFilesAsHashes: 0 559 | webGLDataCaching: 1 560 | webGLDebugSymbols: 0 561 | webGLEmscriptenArgs: 562 | webGLModulesDirectory: 563 | webGLTemplate: APPLICATION:Default 564 | webGLAnalyzeBuildSize: 0 565 | webGLUseEmbeddedResources: 0 566 | webGLCompressionFormat: 1 567 | webGLLinkerTarget: 1 568 | webGLThreadsSupport: 0 569 | webGLWasmStreaming: 0 570 | scriptingDefineSymbols: {} 571 | platformArchitecture: {} 572 | scriptingBackend: {} 573 | il2cppCompilerConfiguration: {} 574 | managedStrippingLevel: {} 575 | incrementalIl2cppBuild: {} 576 | allowUnsafeCode: 1 577 | additionalIl2CppArgs: 578 | scriptingRuntimeVersion: 1 579 | gcIncremental: 0 580 | gcWBarrierValidation: 0 581 | apiCompatibilityLevelPerPlatform: {} 582 | m_RenderingPath: 1 583 | m_MobileRenderingPath: 1 584 | metroPackageName: Template_3D 585 | metroPackageVersion: 586 | metroCertificatePath: 587 | metroCertificatePassword: 588 | metroCertificateSubject: 589 | metroCertificateIssuer: 590 | metroCertificateNotAfter: 0000000000000000 591 | metroApplicationDescription: Template_3D 592 | wsaImages: {} 593 | metroTileShortName: 594 | metroTileShowName: 0 595 | metroMediumTileShowName: 0 596 | metroLargeTileShowName: 0 597 | metroWideTileShowName: 0 598 | metroSupportStreamingInstall: 0 599 | metroLastRequiredScene: 0 600 | metroDefaultTileSize: 1 601 | metroTileForegroundText: 2 602 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 603 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 604 | a: 1} 605 | metroSplashScreenUseBackgroundColor: 0 606 | platformCapabilities: {} 607 | metroTargetDeviceFamilies: {} 608 | metroFTAName: 609 | metroFTAFileTypes: [] 610 | metroProtocolName: 611 | XboxOneProductId: 612 | XboxOneUpdateKey: 613 | XboxOneSandboxId: 614 | XboxOneContentId: 615 | XboxOneTitleId: 616 | XboxOneSCId: 617 | XboxOneGameOsOverridePath: 618 | XboxOnePackagingOverridePath: 619 | XboxOneAppManifestOverridePath: 620 | XboxOneVersion: 1.0.0.0 621 | XboxOnePackageEncryption: 0 622 | XboxOnePackageUpdateGranularity: 2 623 | XboxOneDescription: 624 | XboxOneLanguage: 625 | - enus 626 | XboxOneCapability: [] 627 | XboxOneGameRating: {} 628 | XboxOneIsContentPackage: 0 629 | XboxOneEnableGPUVariability: 1 630 | XboxOneSockets: {} 631 | XboxOneSplashScreen: {fileID: 0} 632 | XboxOneAllowedProductIds: [] 633 | XboxOnePersistentLocalStorageSize: 0 634 | XboxOneXTitleMemory: 8 635 | XboxOneOverrideIdentityName: 636 | XboxOneOverrideIdentityPublisher: 637 | vrEditorSettings: 638 | daydream: 639 | daydreamIconForeground: {fileID: 0} 640 | daydreamIconBackground: {fileID: 0} 641 | cloudServicesEnabled: 642 | UNet: 1 643 | luminIcon: 644 | m_Name: 645 | m_ModelFolderPath: 646 | m_PortalFolderPath: 647 | luminCert: 648 | m_CertPath: 649 | m_SignPackage: 1 650 | luminIsChannelApp: 0 651 | luminVersion: 652 | m_VersionCode: 1 653 | m_VersionName: 654 | apiCompatibilityLevel: 6 655 | cloudProjectId: 656 | framebufferDepthMemorylessMode: 0 657 | projectName: 658 | organizationId: 659 | cloudEnabled: 0 660 | enableNativePlatformBackendsForNewInputSystem: 0 661 | disableOldInputManagerSupport: 0 662 | legacyClampBlendShapeWeights: 0 663 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2020.3.1f1c1 2 | m_EditorVersionWithRevision: 2020.3.1f1c1 (3e9f4b065a9d) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 4 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | particleRaycastBudget: 4 33 | asyncUploadTimeSlice: 2 34 | asyncUploadBufferSize: 16 35 | resolutionScalingFixedDPIFactor: 1 36 | excludedTargetPlatforms: [] 37 | - serializedVersion: 2 38 | name: Low 39 | pixelLightCount: 0 40 | shadows: 0 41 | shadowResolution: 0 42 | shadowProjection: 1 43 | shadowCascades: 1 44 | shadowDistance: 20 45 | shadowNearPlaneOffset: 3 46 | shadowCascade2Split: 0.33333334 47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 48 | shadowmaskMode: 0 49 | blendWeights: 2 50 | textureQuality: 0 51 | anisotropicTextures: 0 52 | antiAliasing: 0 53 | softParticles: 0 54 | softVegetation: 0 55 | realtimeReflectionProbes: 0 56 | billboardsFaceCameraPosition: 0 57 | vSyncCount: 0 58 | lodBias: 0.4 59 | maximumLODLevel: 0 60 | particleRaycastBudget: 16 61 | asyncUploadTimeSlice: 2 62 | asyncUploadBufferSize: 16 63 | resolutionScalingFixedDPIFactor: 1 64 | excludedTargetPlatforms: [] 65 | - serializedVersion: 2 66 | name: Medium 67 | pixelLightCount: 1 68 | shadows: 1 69 | shadowResolution: 0 70 | shadowProjection: 1 71 | shadowCascades: 1 72 | shadowDistance: 20 73 | shadowNearPlaneOffset: 3 74 | shadowCascade2Split: 0.33333334 75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 76 | shadowmaskMode: 0 77 | blendWeights: 2 78 | textureQuality: 0 79 | anisotropicTextures: 1 80 | antiAliasing: 0 81 | softParticles: 0 82 | softVegetation: 0 83 | realtimeReflectionProbes: 0 84 | billboardsFaceCameraPosition: 0 85 | vSyncCount: 1 86 | lodBias: 0.7 87 | maximumLODLevel: 0 88 | particleRaycastBudget: 64 89 | asyncUploadTimeSlice: 2 90 | asyncUploadBufferSize: 16 91 | resolutionScalingFixedDPIFactor: 1 92 | excludedTargetPlatforms: [] 93 | - serializedVersion: 2 94 | name: High 95 | pixelLightCount: 2 96 | shadows: 2 97 | shadowResolution: 1 98 | shadowProjection: 1 99 | shadowCascades: 2 100 | shadowDistance: 40 101 | shadowNearPlaneOffset: 3 102 | shadowCascade2Split: 0.33333334 103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 104 | shadowmaskMode: 1 105 | blendWeights: 2 106 | textureQuality: 0 107 | anisotropicTextures: 1 108 | antiAliasing: 2 109 | softParticles: 0 110 | softVegetation: 1 111 | realtimeReflectionProbes: 1 112 | billboardsFaceCameraPosition: 1 113 | vSyncCount: 1 114 | lodBias: 1 115 | maximumLODLevel: 0 116 | particleRaycastBudget: 256 117 | asyncUploadTimeSlice: 2 118 | asyncUploadBufferSize: 16 119 | resolutionScalingFixedDPIFactor: 1 120 | excludedTargetPlatforms: [] 121 | - serializedVersion: 2 122 | name: Very High 123 | pixelLightCount: 3 124 | shadows: 2 125 | shadowResolution: 2 126 | shadowProjection: 1 127 | shadowCascades: 2 128 | shadowDistance: 40 129 | shadowNearPlaneOffset: 3 130 | shadowCascade2Split: 0.33333334 131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 132 | shadowmaskMode: 1 133 | blendWeights: 4 134 | textureQuality: 0 135 | anisotropicTextures: 1 136 | antiAliasing: 4 137 | softParticles: 1 138 | softVegetation: 1 139 | realtimeReflectionProbes: 1 140 | billboardsFaceCameraPosition: 1 141 | vSyncCount: 1 142 | lodBias: 1.5 143 | maximumLODLevel: 0 144 | particleRaycastBudget: 1024 145 | asyncUploadTimeSlice: 2 146 | asyncUploadBufferSize: 16 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Ultra 151 | pixelLightCount: 4 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 4 156 | shadowDistance: 150 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 1 164 | antiAliasing: 4 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 2 171 | maximumLODLevel: 0 172 | particleRaycastBudget: 4096 173 | asyncUploadTimeSlice: 2 174 | asyncUploadBufferSize: 16 175 | resolutionScalingFixedDPIFactor: 1 176 | excludedTargetPlatforms: [] 177 | m_PerPlatformDefaultQuality: 178 | Android: 2 179 | Nintendo 3DS: 5 180 | Nintendo Switch: 5 181 | PS4: 5 182 | PSP2: 2 183 | Standalone: 5 184 | Tizen: 2 185 | WebGL: 3 186 | WiiU: 5 187 | Windows Store Apps: 5 188 | XboxOne: 5 189 | iPhone: 2 190 | tvOS: 2 191 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - PostProcessing 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.1 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_RenderPipeSettingsPath: 10 | m_FixedTimeStep: 0.016666668 11 | m_MaxDeltaTime: 0.05 12 | -------------------------------------------------------------------------------- /ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # UnityHighPerformanceDynamicBone 2 | 目前使用的Unity和Package版本:Unity-2020.3.1f1, Jobs-0.8.0, Burst-1.4.1 3 | 4 | 参照DynamicBone插件的思路,使用**JobSystem**和**BurstCompiler**对其进行了优化,在使用方法上与该插件非常相似,但是拥有超高的性能,快就完事了! 5 | 6 | Unity为我们提供的**JobSystem**和**BurstCompiler**已经很成熟了,完全可以用在项目之中,同时本项目也使用新的数学库Unity.Mathmatics对以前的Vector和transform下的方法等进行了替换和修改。 7 | 8 | 这个项目也是一个用来学习DOTS其中两员大将的非常不错的选择。(什么?都2020年了你居然还不会在Unity使用多线程?)我也是抱着学习和试验的心态来写的,所以难免会出现一些问题。 9 | 10 | 相对于DOTS中的**ECS**, **Job**和**Burst**是可以单独拿出来用的,对你的项目计算密集的部分使用他们就行优化就可以获得巨大的性能提升,而且不必担心影响项目的结构,哪里想改改哪里。 11 | 12 | 13 | 14 | 改善与新增: 15 | 16 | * 有了高性能加持,部分引用较多的Collider可以直接设置成Global供所有动态骨骼使用,免去反复拖拽的工作。 17 | 18 | 目前已知问题和缺陷: 19 | * 暂时只支持单链骨骼,有分叉的会出问题。 20 | * 暂不能完美支持运行时修改参数,会出现抖动,不过用来调试确定参数是可以用的。 21 | * 因为是成批处理的,所以不能对单独的骨骼修改更新频率和更新模式,只能在Manager中统一修改。 22 | * 未实现和指定物体超过一定距离不再进行动态骨骼计算的功能。(可能不需要,因为性能瓶颈不会出现这里) 23 | * 未实现运行时移除不需要再进行计算的骨骼。 24 | 25 | 更新: 26 | 27 | * 2020.8.10:添加Exclusion剔除功能可以移除不需要物理模拟的子骨骼。 28 | 29 | * 2020.8.4:将Collider的Transform信息获取也使用TransformAccess在Job中进行优化。 --------------------------------------------------------------------------------