JEngine
The solution that allows unity games to update in runtime. 使Unity开发的游戏支持热更新的解决方案。
Top Related Projects
Quick Overview
JEngine is an open-source game framework for Unity, designed to enhance development efficiency and performance. It provides a suite of tools and features to streamline game development, including hot update capabilities, resource management, and various optimization techniques.
Pros
- Supports hot updates, allowing for easy game modifications without rebuilding
- Includes a comprehensive set of tools for resource management and optimization
- Provides cross-platform support for various Unity deployment targets
- Offers detailed documentation and active community support
Cons
- Learning curve may be steep for developers new to the framework
- Some features may be overkill for smaller projects or simpler games
- Dependency on Unity engine limits its use to Unity-based projects
- Regular updates may require occasional adjustments to existing projects
Code Examples
- Initializing JEngine:
using JEngine.Core;
public class GameEntry : MonoBehaviour
{
private void Start()
{
GameManager.Initialize();
}
}
- Loading a hot-updateable scene:
using JEngine.Core;
public class SceneLoader
{
public static async void LoadScene(string sceneName)
{
await GameManager.LoadSceneAsync(sceneName);
}
}
- Using JEngine's localization system:
using JEngine.Core;
public class LocalizationExample : MonoBehaviour
{
private void Start()
{
string localizedText = JEngine.Localization.Get("key_example");
Debug.Log(localizedText);
}
}
Getting Started
- Install Unity (2019.4 or later recommended)
- Clone the JEngine repository:
git clone https://github.com/JasonXuDeveloper/JEngine.git - Open the project in Unity
- Import JEngine into your project:
- Copy the
Assets/Dependencies/JEnginefolder to your project'sAssetsfolder
- Copy the
- Initialize JEngine in your game entry script:
using JEngine.Core; public class GameEntry : MonoBehaviour { private void Start() { GameManager.Initialize(); } } - Explore JEngine's features and documentation to leverage its capabilities in your game development process.
Competitor Comparisons
Provides an efficient allocation free async/await integration for Unity.
Pros of UniTask
- Highly optimized for Unity-specific asynchronous programming
- Extensive documentation and examples for easy integration
- Lightweight and focused solely on async/await functionality
Cons of UniTask
- Limited to Unity environment, not suitable for general C# development
- Steeper learning curve for developers unfamiliar with async programming
- May require additional setup and configuration in Unity projects
Code Comparison
UniTask:
async UniTaskVoid Start()
{
await UniTask.Delay(1000);
Debug.Log("Delayed execution");
}
JEngine:
public void Start()
{
this.Delay(1000, () =>
{
Debug.Log("Delayed execution");
});
}
Summary
UniTask excels in Unity-specific async programming with optimized performance, while JEngine offers a broader framework for game development. UniTask provides a more modern approach to asynchronous operations, but may be more complex for beginners. JEngine, on the other hand, offers a wider range of features beyond just async programming, making it a more comprehensive solution for Unity game development.
Reactive Extensions for Unity
Pros of UniRx
- Robust reactive programming framework for Unity
- Extensive documentation and community support
- Seamless integration with Unity's coroutine system
Cons of UniRx
- Steeper learning curve for developers new to reactive programming
- Can introduce complexity in simpler scenarios
- Potential performance overhead for excessive use of observables
Code Comparison
UniRx example:
Observable.EveryUpdate()
.Where(_ => Input.GetKeyDown(KeyCode.Space))
.Subscribe(_ => Debug.Log("Space key pressed"));
JEngine example:
public class SpaceKeyListener : JBehaviour
{
public override void OnUpdate()
{
if (Input.GetKeyDown(KeyCode.Space))
Debug.Log("Space key pressed");
}
}
Summary
UniRx offers a powerful reactive programming paradigm for Unity, with extensive features and community support. However, it may introduce complexity and have a steeper learning curve. JEngine provides a more traditional approach to Unity development, focusing on performance optimization and ease of use. The choice between the two depends on project requirements and team expertise.
Dependency Injection Framework for Unity3D
Pros of Zenject
- More mature and widely adopted in the Unity community
- Extensive documentation and community support
- Powerful dependency injection system for better code organization
Cons of Zenject
- Steeper learning curve for beginners
- Can introduce complexity in smaller projects
- Requires more setup and configuration
Code Comparison
Zenject:
public class Foo : MonoBehaviour
{
[Inject]
public void Construct(Bar bar, Baz baz)
{
// Dependencies injected automatically
}
}
JEngine:
public class Foo : JBehaviour
{
public void Awake()
{
Bar bar = ClassBind.Bind<Bar>();
Baz baz = ClassBind.Bind<Baz>();
}
}
Summary
Zenject offers a robust dependency injection system with extensive community support, making it ideal for larger projects. However, it may be overkill for smaller games and has a steeper learning curve. JEngine provides a simpler approach to class binding and lifecycle management, which can be more accessible for beginners but may lack some of the advanced features found in Zenject.
Nez is a free 2D focused framework that works with MonoGame and FNA
Pros of Nez
- More comprehensive 2D game framework with built-in systems for physics, rendering, and scene management
- Larger community and more extensive documentation
- Better suited for complex 2D game development with a wider range of features
Cons of Nez
- Steeper learning curve due to its more extensive feature set
- Less focused on performance optimization compared to JEngine
- May be overkill for simpler projects or those primarily targeting mobile platforms
Code Comparison
Nez scene setup:
public class MainScene : Scene
{
public override void Initialize()
{
AddEntity(new Player());
AddRenderer(new DefaultRenderer());
}
}
JEngine scene setup:
public class MainScene : JBehaviour
{
public override void Init()
{
CreateGameObject("Player").AddComponent<Player>();
}
}
Both frameworks offer scene management, but Nez provides a more structured approach with built-in renderers and entity systems, while JEngine focuses on simplicity and performance optimization for mobile platforms.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
An out-of-the-box Unity framework for hot updatable games
ð Documentation ⢠ð¨ð³ ä¸æææ¡£
â Overview
JEngine is a powerful Unity framework that enables runtime hot updates for your games. Designed for both beginners and professionals, it provides secure, high-performance features out of the box.
ð Quick Start
Requirements
- Unity 2022.3+
Branch Information
| Branch | Status | Description |
|---|---|---|
master | â Recommended | Latest stable version with the most powerful features |
0.8.x | ð Legacy | Most popular 2023 version (no longer maintained) |
0.7.x | ð Legacy | Most popular 2022 version (no longer maintained) |
0.6.x | ð Legacy | Complete with full documentation (no longer maintained) |
0.5.x | ð Legacy | Used by some commercial projects (no longer maintained) |
development | ð§ Development | Active development branch - PRs welcome! |
ð¦ Packages
Core Package
| Package | Description | Type |
|---|---|---|
| JEngine.Core | Hot update support with secure, high-performance features | Built-in |
Additional Packages
| Package | Description | Link |
|---|---|---|
| MetaJUI | Customized UI framework for JEngine | Repository |
| MetaExcelDataTool | Excel table guide tool | Repository |
ð ï¸ Major Dependencies
| Dependency | Description | Repository |
|---|---|---|
| Obfuz | Code obfuscation | GitHub |
| HybridCLR | Runtime code execution | GitHub |
| YooAssets | Runtime resource updates | GitHub |
ð Latest Features (v1.0.4)
- Fixed
AddComponent<T>andGetComponent<T>issue under editor
ð Project Statistics
ð® Showcase
If your project uses JEngine, feel free to contact the author - we'd be happy to showcase your work here!
![]() | ![]() | ![]() | ![]() |
|---|---|---|---|
![]() | ![]() | ![]() | |
ð¤ Contributors
ð¡ Recommendations
Check out these other excellent Unity frameworks:
- IFramework - Simple Unity Tools
- QFramework - Your first K.I.S.S Unity 3D Framework
- TEngine - Unity framework solution
- BundleMaster - Unity resource loading master
- Nino - Ultimate high-performance binary serialization library for C#.
â If JEngine helps you, please give it a Star! â
Top Related Projects
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot





