using Unity.Pipeline.HotReload; using UnityEngine; namespace Unity.Pipeline.Samples.HotReload { /// /// Hot reload overrides for TestPlayerController. /// This file demonstrates different override patterns and can be compiled manually for testing. /// /// You can tweak gameplay code here. When done run: /// ucli request --runtime UnityPipelineTests.exe reload_file_override "(Absolute Path To)\com.unity.pipeline\Samples\HotReload_WithHelpers\TestPlayerOverrides.cs" /// public static class TestPlayerOverrides { [HotReloadOverrideMethod("TestPlayerController.Update")] public static void Update(TestPlayerController instance) { // HOT RELOAD VERSION: Different behavior instance.transform.Rotate(0, -90 * Time.deltaTime, 0); // Rotate opposite direction instance.lastActionLog = $"HOT RELOAD Update: Reverse rotation at {Time.time:F1}s"; // Add some color change for visual feedback var renderer = instance.GetComponent(); if (renderer != null) { renderer.material.color = Color.Lerp(Color.red, Color.yellow, Mathf.Sin(Time.time * 2f) * 0.5f + 0.5f); } // Auto-move with different key if (Input.GetKey(KeyCode.LeftShift)) { instance.Move(Vector3.up * 0.5f); // Move up instead of forward } } [HotReloadOverrideMethod("TestPlayerController.Move")] public static void Move(TestPlayerController instance, Vector3 direction) { // HOT RELOAD VERSION: Faster, bouncy movement Vector3 movement = direction * instance.moveSpeed * 2.5f * Time.deltaTime; // 2.5x faster movement.y += Mathf.Sin(Time.time * 5f) * 0.02f; // Add bounce instance.transform.position += movement; instance.lastMovement = movement; instance.lastActionLog = $"HOT RELOAD Move: Bouncy {movement} at 2.5x speed"; // Add trail effect Debug.DrawRay(instance.transform.position, movement * 10f, Color.cyan, 1f); } [HotReloadOverrideMethod("PlayerCombat")] public static float CalculateDamage(TestPlayerController instance, float baseDamage, float multiplier) { // HOT RELOAD VERSION: Different damage formula with randomness float damage = (baseDamage + Random.Range(0f, 5f)) * multiplier * 1.2f; // +randomness, +20% bonus damage = Mathf.Round(damage * 10f) / 10f; // Round to 1 decimal instance.lastDamageCalculated = damage; instance.lastActionLog = $"HOT RELOAD Damage: ({baseDamage} + rnd) * {multiplier} * 1.2 = {damage}"; return damage; } [HotReloadOverrideMethod("TestPlayerController.TakeDamage")] public static void TakeDamage(TestPlayerController instance, float damage) { // HOT RELOAD VERSION: Damage reduction and visual feedback float reducedDamage = damage * 0.7f; // 30% damage reduction instance.health = Mathf.Max(0, instance.health - Mathf.RoundToInt(reducedDamage)); instance.lastActionLog = $"HOT RELOAD TakeDamage: -{damage} reduced to -{reducedDamage}, health now {instance.health}"; // Visual feedback var renderer = instance.GetComponent(); if (renderer != null) { // Flash red briefly renderer.material.color = Color.red; } // Screen shake effect (simple) if (Camera.main != null) { Debug.Log("*SCREEN SHAKE*"); } } } }