- ILRuntime update to v1.6.6
- ILRuntime Adapter Generator Enhance
- ILRuntime Automatically Register Adapters
- More JEngine Demos
- Better Logs
- JBehaviour & JEvent & etc supports stacktrace on specefic line
- UIUtility with a cache dictionary to load UI components faster
- Support all MonoBehaviour events from now on
- Auto Generate MonoBehaviour Events for Adapters which inherits MonoBehaviour
- ClassBind supports binding different adapters
- Support Add & Get Component with different adapters which inherits MonoBehaviour
- Generate Editor for Adapters
- Support
Invoke
,InvokeRepeating
,IsInvoking
,CancelInvoke
in hot update scripts - JEvent support Subscribe methods from base class
- Bug fix on saving data on prefabs
- JSaver supports get Default Value
- Better Editor Panel
- Support XAsset Pro (Main feature is patching, needs to subscribe)
- UI Framework
- Enhance JSaver
- JAction supports
DelayFrames
- Fixed a heaps of bugs
- JSON Checker Tool
- JEvent, which is similar to Google core libraries for Java, eventbus
- Subscribe Class
- Subscribe Method
- Post data to all subscribed events
- Can be running on Main Thread or sub Thread
- Enhance ClassBind, much more powerful
- Auto Bind when needed, better performence
- Controls by ClassBindMgr, more advanced while setting fields
- Support Automatically get all fields from a Hot Update Class
- Support Automattically find the FieldType for a field
- JExtensions
- Allows get hot update class from GameObject via Classbind
- Add JBehaviour to GameObject
- Add JUI to GameObject
- Get JBehaviour from GameObject
- Get JUI from GameObject
- JWebSocket
- Connect to websocket servers
- Send message to websocket servers
- Listen message from websocket servers
- Listen and Send in Sub Thread
- JEngine Setting Panel
- Automatically jump to Init scene first while running
- Hot Update Scenes Shortcuts
- ClassBind Tools
- Error Rescue Tools
- More CLR Redirection Methods
- Support MonoBehaviour.SendMessage from Hot Update Class
- Support MonoBehaviour.Instantiate GameObject with Hot Update Classes & Single Hot Update Class
- JBehaviour enhance
- Perform better after built than in Editor
- Support Deltatime, loop counts, etc.
- Powerful Inspector
- Bug fix when copying streaming asset
- C# type to Proto file converter
- Rearrange menuitems
- Enhance ClassBind
- More advanced JBehaviour Editor
- JBehaviour supports create by call
new()
- BindableProperty supports binding on multiple events
- JBehaviour got rid of MonoBehaviour, a significant increasement of performance has been developed
- JUI got rid of MonoBehaviour
- Register Helper for CLR Method Redirection
- ClassBind enhancement
- Less GC to inherit MonoBehaviour in Hot Update Solution
- Value Type Binder Register Helper allows register value type binders, which typically decreases GC on Value Types (EG. Vector3/2)
- ClassBind improvements which increases the performence
- ClassBind supports properties which allows set properties just like setting fields
- Localization improvements which increases the performence
- Localization Text improvements which spends less memory and GC
- Bug fix on ILRuntime Cross Bind Adapter Generator
- JBehaviour improvements which decreases GC and runs better
- Bug fix on JBehaviour when calls
pause()
andresume()
- JPrefab which is a new solution for managing hot update prefabs
- ClassBind allows auto attach any class to a GameObject
- ClassBind allows use consturcor as a initial of fields of a class
- ClassBind allows call
Active()
method whether the bound class inherited MonoBehaviour or JBehaviour or not - Editor for Hot Update Scripts to GameObject supports present more stuffs
- Demo for using AntiCheat Struct & Bindable Property improves
- Anti-Cheat Structs allows detect hackers who hacks your game
- ClassBind improvements more friendly to update from old versions to latests
- Supports copy DLC files to Streaming Assets, which can pass App Store review easier
- Supports move local Streaming Asstes hot update resouces to persistence path which user don't need to download any old things from server
- Anti-Cheat Structs which prevents cheating tools change data stores in memory
- Drag 'n drop on Class Bind
- LitJSON Serialize and Desirialize Float
- Localization supports multiple languages in your game
- Smarter autobind, easier to set value of a Unity Component
- More event functions for MonoBehaviour in HotUpdate
- Rebuilt demos
- Rewrote StringifyHelper
- Updated ILRuntime
- Rewrote JSaver
- Enhanced Auto Class Bind
- Enhanced Cleaning Hot Update Solution in Unity Editor
- Enhanced LitJson to serialize and deserialize BindableProperty (Decreases 80% of size when converting BindableProperty to JSON)
- Adapt protobuf-net
- Proto2CS converter
- Rearranged hot update solution
- JResource now supports load scene async and get progress when loading scene
- Combined JBehaviour & JUI to JEngine.Core
- Enhanced JBehaviour
- Enhanced BindableProperty ToString method
- Enhanced MonoBehaviour Adapter Inspector Window
- StringifyHelper is a helper which serialize and deserialize data
- Support JSON & Protobuf & BinaryFormatter
- JSaver now uses StringifyHelper to do JSON converts
- Enhance clean.cs
- Able to autobind hot update resource
- Auto bind runs in Awake which becomes faster
- ILRuntime Adapter Generator supports custom assembly
- Right Click to copy GameObject Path from hierarchy
- Bug fix on release dll
- Bug fix on Build Setting scenes
- Autobind supports bind to GameObject itself
- Support AES encrypt string
- JSaver, support Data persistence
- MonoBehaviour Adapter Inspector window show error fields
- Autobind editor window
- Autobind support bool value
- Autobind support private and static and instance fields
- ILRuntime Adpater Generater
- Enhanced Autobind
- Less GC on Autobind
- Auto Destory when Finish Autobind
- No need to call any method to require autobind
- Autobind support auto set fields
- Enhance Autobind
- Custom scenes bug fixed
- Pdb symbol bug fixed
- Enhanced JBehaviour
- Autobind classes from hotupdate dll to prefabs
- Support more Unity versions
- Advanced hotupdate dependecies cleaner
- Enhanced development mode
- Allows custom scenes addition
-
JAction now supports execute in main thread
As we know Task.Run in Unity will run in a new thread, which is not able to call most Unity APIs, now JAction found a solution of using Loom.
-
Enhance Developement Mode performance
-
JEngine Framework has been devided into following parts:
-
JEngine
You can include this into your hot-update scripts or your Unity main project
- Core
- UI
- LifeCycle
-
UnityPlugins
You can choose to import these into unity
- JEngine.Unity (compulsory to a new project)
- JEngine.JSON (optional)
- JEngine.Redis (optional)
-
-
Small bugs has been fixed
-
ILRuntime back to Unity Solution
-
JResource supports match pattern, which prevents different resources witch same name can't be loaded
public enum MatchMode { AutoMatch = 1, Animation = 2, Material = 3, Prefab = 4, Scene = 5, ScriptableObject = 6, TextAsset = 7, UI = 8, Other = 9 }
-
Enhanced JAciton
-
Enhanced JBehaviour
-
JResource is now coming
- JResource is based on XAsset and it allows to load asset from hot-update resources via sync/async methods
var txt = JResource.LoadRes<TextAsset>("Text.txt"); Log.Print("Get Resource with Sync method: " + txt.text);
-
JAction supports Cancelation Callback
//Cancel a JAction JAction j8 = new JAction(); j8.RepeatWhen(() => Log.Print("[j8] I am repeating!!!"), () => true, 1, timeout) .ExecuteAsyncParallel(); //You can either add a cancel callback j8.OnCancel(() => Log.Print("[j8] has been cancelled!"));
-
JAction supports Reset
//Reset a JAction j8.Reset();
-
Fixed bug on JAction.ExecuteAsyncParallel
-
JAction supports Async & Async Parallel
//Execute Async JAction j6 = new JAction(); _ = j6.Do(() => Log.Print("[j6] This is an async JAction")) .ExecuteAsync(); //Execute Async Parallel JAction j7 = new JAction(); j7.Do(()=>Log.Print("[j7] This is an async JAction but runs parallel, callback will be called after it has done")) .ExecuteAsyncParallel(()=>Log.Print("[j7] Done"));
-
JAction supports Cancelation
//Cancel a JAction JAction j8 = new JAction(); _ = j8.RepeatWhen(() => Log.Print("[j8] I am repeating!!!"), () => true, repeatDuration, timeout) .ExecuteAsync(); JAction j9 = new JAction(); j9.Delay(5) .Do(() => { j8.Cancel(); Log.Print("[j9] cancelled j8"); }) .Execute();
-
JAction supports more features
-
Repeat with frequency
int repeatCounts = 3; float repeatDuration = 0.5f; JAction j = new JAction(); j.Repeat(() => { Log.Print("I have repeated"); }, repeatCounts, repeatDuration) .Excute();
-
Repeat with condition
int num = 10; float repeatDuration = 0.5f; float timeout = 10f; JAction j = new JAction(); j.RepeatWhen(() => { Log.Print($"num is more than 0, num--"); num--; }, () => num > 0, repeatDuration, timeout) .Excute();
-
Repeat until
int num = 10; float repeatDuration = 0.5f; float timeout = 10f; JAction j = new JAction(); j.RepeatUntil(() => { Log.Print($"num is more than 0, num--"); num--; }, () => num <= 0, repeatDuration, timeout) .Excute();
-
Wait Until
JAction j = new JAction(); j.Until(()=> something is done) .Do(something) .Excute();
-
-
JAction which supports less code but do more
JAction j = new JAction(); j.Do(() => { Log.Print("Hello from JAction!"); }) .Delay(3.0f) .Do(() => { Log.Print("Bye from JAction"); }) .Excute();
-
Hidden dictionary to save Hot Update DLL which strongly increased unity excute speed for dll (Unity will no longer load Hot Update DLL from editor)
- Rewrite JBehaviour's source code which enhances the performence
- JObjectPool is a new solution for Object Pool
- Improve JBehaviour which it now supports method-chaning in some part
- Enhance JUI
- JBehaviour Example
- Rewrite JBehaviour Structure
- Improve JUI
- Fix that JBehaviour can't be called
- Hot Update DLL Encryption based on AES encryption, with a 16 bits key, it is harder to let others hack your dll
- More ILRuntime Registerations support, reduce the requirements of registerations when using ILRuntime
- Update XAsset and ILRuntime to the latest version
-
JUIText becomes JUI
-
Supports any UIBehaviour based class to use
All UGUI components in Unity is UIBehaviour based
-
-
JUI supports data binding
-
JUI supports message mode, will be called when binded data has changed
-
BindableProperty is coming, use it in your data class or sturcts
-
Improve performence of looping in JUIBehaviour
-
Improve performence on getting generic components in JUI
-
Update showcases to a countdown showcase and a data update & binding showcase
-
Combined Unity-GUI-Redis, which is also part of JEngine, now belongs to JEngine.Redis namespace
-
Update XAsset dependency to latest version:
- Supports network monitor
- Build bundles name by hash
- Tiny improvment on the framework
-
Rewrite ILRuntime:
- Supports OnDestory method called by MonoBehaviour
- Tiny improvment on the framework
-
JUI is now coming:
Only supports Text at the moment
- Based on JUIBehaviour
- Method-Chaining which makes more stramlined and beautiful codes
- Unique and managable lifecycle
-
Improve JUIBehaviour
- Update ILRuntime to v1.6.3 which fixes heaps of bugs in the dependency
- JEngine Lifecyle is now included, it is only a prototype and will be extended in the future with more base codes.
- JUIBehaviour is coming, it is a behaviour base on MonoBehaviour but more friendly to manage UI components' lifecycles which are not require to change that frequently, and runs better, you can use less codes to implement more
- Supports development mode which loads dll and resources from local
- Automatically clean up unnecessary dlls, pdbs, etc. in DLL Resource Directory
- Automatically convert dll into bytes in Editor
- Automatically generate Update Resources
- Automatically handle Hot-update DLL
- Update Hot-update codes and resources from server (Base on XAsset & ILRuntime)
- Supports local hot-update code development in Unity Editor via dll in Asstes/HotUpdateResources/Dll/HotUpdateScripts.dll