LoxodonFramework is a lightweight MVVM (Model-View-ViewModel) framework specifically crafted for Unity3D.MVVM & Databinding for Unity3D(C# & XLua)LoxodonFramework is a lightweight MVVM (Model-View-ViewModel) framework specifically crafted for Unity3D. It includes data binding and various useful components. The framework's performance is meticulously optimized, avoiding value type boxing and unboxing, minimizing garbage collection overhead. It utilizes dynamic delegates/static code weaving techniques to ensure comparable performance between data binding and direct invocation, zero garbage collection during UI view updates, and more. Additionally, it has been validated in projects, demonstrating superior performance, stability, and reliability with a clear, extensible architecture. We hope it can contribute to making your game development faster and more effortless.For tutorials,examples and support,please see the project.You can also discuss the project in the Unity Forums.The plugin is compatible with MacOSX,Windows,Linux,UWP,WebGL,IOS and Android etc,and provides all the source code of the project.If you like this framework or think it is useful, please write a review on AssetStore or give me a STAR or FORK it on Github, thank you!Check out the source code from githubDocumentTested in Unity 3D on the following platforms:PC/Mac/LinuxAndroidIOSUWP(Windows 10)WebGLNotes:Supports .Net4.x and .Net Standard 2.0Supports Mono and IL2CPPDoes not support .Net2.0 and .Net2.0 Subset If necessary, please use version 1.9.xKey features:MVVM & Databinding Framework;Multiple platforms;Higher Extensibility;XLua support(You can make your game in lua.);async&await (C#&Lua);try&catch&finally for lua;Asynchronous result and asynchronous task are supported;Scheduled Executor and Multi-threading;Messaging system support;Preferences can be encrypted;Localization support;Databinding support: Avoiding boxing and unboxing of value types; Optimizing performance through dynamic delegates/static code weaving techniques, avoiding the use of reflection; Minimizing garbage collection, avoiding memory allocations during string concatenation, and numeric-to-string conversions; Zero garbage collection during UI view updates; Data binding performance is comparable to direct invocation; Field binding; Property binding; Dictionary,list and array binding; Event binding; Unity3d's EventBase binding; Static property and field binding; Method binding; Command binding; ObservableProperty,ObservableDictionary and ObservableList binding; Expression binding;Plugins:Loxodon Framework BundleLoxodon Framework Bundle is an AssetBundle manager.It provides a functionality that can automatically manage/load an AssetBundle and its dependencies from local or remote location.Asset Dependency Management including BundleManifest that keep track of every AssetBundle and all of their dependencies. An AssetBundle Simulation Mode which allows for iterative testing of AssetBundles in a the Unity editor without ever building an AssetBundle.The asset redundancy analyzer can help you find the redundant assets included in the AssetsBundles.Create a fingerprint for the asset by collecting the characteristic data of the asset. Find out the redundant assets in all AssetBundles by fingerprint comparison.it only supports the AssetBundle of Unity 5.6 or higher.Loxodon Framework OSAThis plugin is designed to optimize Optimized ScrollView Adapter, specifically adding data binding capabilities to ListView and GridView.Loxodon Framework TextFormattingThis is a text formatting plugin modified based on the official C# library. By extending the AppendFormat function of StringBuilder, it aims to avoid garbage collection (GC) when concatenating strings or converting numbers to strings. This optimization is particularly beneficial in scenarios with high-performance requirements.Furthermore, the plugin extends Unity's Unity GUI (UGUI) by introducing two new text controls: TemplateText and FormattableText. These controls support the data binding features of MVVM, allowing the binding of ViewModel or value-type objects to the controls. This approach eliminates the need for boxing and unboxing of value-type objects, thus maximizing the optimization of garbage collection (GC).It's worth noting that using the controls TemplateTextMeshPro or FormattableTextMeshProUGUI from Loxodon.Framework.TextMeshPro can further reduce garbage collection (GC), achieving a completely GC-free update of the game view.Loxodon Framework TextMeshProThis plugin primarily serves to enhance AlertDialog and Toast views by providing TextMeshPro support, replacing UnityEngine.UI.Text with TextMeshProUGUI for optimized UI views.Additionally, the plugin depends on the Loxodon.Framework.TextFormatting plugin, further optimizing garbage collection. By utilizing FormattableTextMeshProUGUI and TemplateTextMeshProUGUI controls, updating UI views results in absolutely no garbage collection (GC), achieving a fully GC-free view update.Loxodon Framework DataThis plugin supports exporting data from Excel files to Json files, Lua files, or LiteDB databases. Additionally, it enables converting data to C# objects using Json.Net. It is recommended to use LiteDB for storing configuration data, as it is a lightweight NoSQL embedded database that supports ORM functionality, BSON format, and data indexing, making it highly convenient to use. Loxodon.Framework.Data.LiteDB Loxodon.Framework.Data.NewtonsoftLoxodon Framework FodyThis is a plugin for static code weaving, comprising multiple sub-plugins. It supports static weaving for objects, including the addition of the ToString function, integration of the PropertyChanged event, incorporation of the BindingProxy class, and more. This not only optimizes performance but also enhances development efficiency. Loxodon.Framework.Fody.PropertyChanged Loxodon.Framework.Fody.ToString Loxodon.Framework.Fody.BindingProxyLoxodon Framework UIToolkitThis plugin integrates UIToolkit into the Loxodon.Framework, introducing the UIToolkitWindow class. It supports data binding and allows for a mix of UIToolkit and UGUI.Loxodon Framework ILRuntimeLoxodon Framework XLuaIt supports making games with lua scripts.Loxodon Framework Localization For CSVIt supports localization files in csv format, requires Unity2018.4 or higher.Loxodon Framework FairyGUILoxodon Framework UIToolkitLoxodon Framework NLogThis plug-in integrates NLog into Loxodon.Framework. It is recommended to use this plug-in instead of the Log4Net plug-in. It allocates less heap memory during the log printing process.Loxodon Framework Log4NetThis is a log plugin.It helps you to use Log4Net in the Unity3d.Loxodon Framework ObfuscationThe plugin is a data type memory obfuscation tool that supports ObfuscatedByte, ObfuscatedShort, ObfuscatedInt, ObfuscatedLong, ObfuscatedFloat, and ObfuscatedDouble types. Its purpose is to prevent memory modification of game values by memory editors. The plugin supports all arithmetic operators for numerical types and can automatically convert between them and their standard counterparts (byte, short, int, long, float, double).During the obfuscation of Float and Double types, the plugin converts them to int and long types for bitwise AND and OR operations to ensure that precision is not lost. Unsafe code is used for type conversion to balance conversion performance. The plugin aims to provide a comprehensive solution for protecting game values against memory modification, allowing for seamless integration with different numerical types and maintaining performance through careful type conversion.Loxodon Framework AddressableDoNetty for UnityDotNetty is a port of [Netty](https://github.com/netty/netty), asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.This version is modified based on [DotNetty](https://github.com/Azure/DotNetty)'s 0.7.5 version and is a customized version for the Unity development platform. It includes the removal of certain dependency libraries, bug fixes, performance optimizations, and enhancements to cater to game development on the Unity platform. Additionally, it has undergone testing under IL2CPP for compatibility and reliability.Loxodon Framework ConnectionThis is a network connection component, implemented using TcpClient, supports IPV6 and IPV4, automatically recognizes the current network when connecting with a domain name, and preferentially connects to the IPV4 network.Forum ThreadFor More Information Contact Us at: yangpc.china@gmail.com