Skip to content

Conversation

Copy link

Copilot AI commented Aug 29, 2025

This PR integrates the Cysharp/R3 reactive programming library into the Unity project template and demonstrates its usage with a practical example in the main scene.

What's Added

Package Integration

  • Added com.cysharp.r3 dependency to Unity Package Manager via Git URL
  • Updated the runtime assembly definition to reference R3.Unity
  • Used the recommended UPM Git URL approach: https://github.com/Cysharp/R3.git?path=src/R3.Unity/Assets/R3.Unity

Demo Implementation

The demo is integrated into the existing Scene01_Intro.cs MonoBehaviour and showcases reactive programming patterns:

// R3 ReactiveProperty field
private ReactiveProperty<int> _reactiveScore = new ReactiveProperty<int>(0);

// Subscription in Start() method
_reactiveScore.Subscribe(score => 
{
    Debug.Log($"[R3 Demo] Reactive Score changed to: {score}");
});

// Automatic updates when score changes
public int Score 
{
    set
    {
        _score = value;
        HudUI.ScoreLabel.text = $"Score: {_score:000}/{ScoreMax:000}";
        
        // R3 ReactiveProperty Demo: Update reactive score
        _reactiveScore.Value = _score;
    }
}

How It Works

When players jump in the game (spacebar), the score increases and the reactive property automatically notifies all subscribers. The console will display:

[R3 Demo] Reactive Score changed to: 1
[R3 Demo] Reactive Score changed to: 2
...

This demonstrates the core reactive programming pattern where data changes automatically notify observers without manual event handling.

Best Practices Implemented

  • Proper Memory Management: Added disposal in OnDestroy() to prevent memory leaks
  • Unity 6.x Compatibility: All code is compatible with Unity 6000.2.0f1
  • Minimal Integration: The demo seamlessly integrates with existing game mechanics
  • Clean Code: Follows the project's existing coding standards and structure

The implementation showcases how R3 can simplify event-driven programming in Unity applications by eliminating the need for manual event subscription/unsubscription patterns.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/repos/Cysharp/R3
    • Triggering command: curl -s REDACTED (http block)

If you need me to access, download, or install something from one of these locations, you can either:

This pull request was created as a result of the following prompt from Copilot chat.

Add Cysharp/R3 as a package dependency to the Unity project.

  • Create a new branch for this work.
  • Add the R3 package using the recommended Unity Package Manager method (UPM via Git URL).
  • Ensure the project compiles successfully after the addition.
  • Demonstrate usage: Add a Cysharp.R3.ReactiveProperty instance to any existing MonoBehaviour subclass (for example, Scene01_Intro.cs). Implement a simple value assignment and subscription to show that it works (e.g., log a message when the property changes).
  • Include all necessary using statements and ensure the demo code is Unity 6.x compliant, matching the ProjectVersion.txt.
  • Provide a summary of changes in the PR description.

✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 2 commits August 29, 2025 16:39
Co-authored-by: SamuelAsherRivello <63511769+SamuelAsherRivello@users.noreply.github.com>
Co-authored-by: SamuelAsherRivello <63511769+SamuelAsherRivello@users.noreply.github.com>
Copilot AI changed the title [WIP] Add Cysharp/R3 package and demonstrate ReactiveProperty usage Add Cysharp/R3 reactive programming library with ReactiveProperty demo Aug 29, 2025
Copilot finished work on behalf of SamuelAsherRivello August 29, 2025 16:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants