English | Русский
ByNameModding - это библиотека для моддинга Unity-игр по именам классов, методов, полей. Данная редакция ориентирована на работу на Android с il2cpp. Библиотека включает в себя все, что вам нужно для моддинга игр на Unity.
Требуется минимум C++20.
- Искать всё по именам (классы, методы, поля и т. д.).
- Искать Generic классы и методы.
- Добавлять в игру ваши собственные классы, которые работают даже с AssetBundles!
- Изменять классы игры, добавляя в них поля и методы.
- Использовать обычные структуры С#, например, строки (Mono::String) или словари (Mono::Dictionary), которые полностью работают.
BNM может добавить ваши собственные классы в игру.
Если вы наследуете свой класс от MonoBehaviour (или другой любой класс с событиями), будут работать такие методы, как Update
.
И это полностью совместимо с AssetBundles!
Для пакетов данных нужно добавить свой класс в библиотеки dll, перечисленные в ScriptingAssemblies.json.
По умолчанию BNM добавляет классы к Assembly-CSharp.dll
, который всегда есть в этом списке.
Если вы хотите использовать свой dll с пакетами данных, добавьте dll в этот файл. Но это будет работать только в том случае, если вы используете BNM внутренне.
- сначала клонируйте репозиторий и добавьте его в свой проект;
- установите версию C++ на 20 или выше;
- добавьте код ниже в зависимости от того, что вы используете:
Android.mkCMakeLists.txtBNM_PATH := $(LOCAL_PATH)/путь/до/ByNameModding LOCAL_C_INCLUDES += $(BNM_PATH)/include $(BNM_PATH)/external/include LOCAL_STATIC_LIBRARIES += BNM # ... include $(BUILD_SHARED_LIBRARY) # ... include $(CLEAR_VARS) include $(BNM_PATH)/Android.mk
add_subdirectory(путь/до/ByNameModding EXCLUDE_FROM_ALL) get_property(BNM_INCLUDE_DIRECTORIES TARGET BNM PROPERTY BNM_INCLUDE_DIRECTORIES) # ... target_include_directories( # Имя вашей библиотеки PUBLIC ${BNM_INCLUDE_DIRECTORIES} # ... ) target_link_libraries( # Имя вашей библиотеки PUBLIC BNM # ... )
- измените
UNITY_VER
, добавьте свой шифровщик строк и ПО для подмены методов, раскомментируйтеBNM_DOTNET35
, если игра использует .NET 3.5 в GlobalSettings.hpp; - смотрите примеры или добавьте их в свой проект, чтобы понять, как работать с BNM.
UTF8-CPP используется в il2cpp и в BNM тоже.
Open-hierarchy custom RTTI используется для оптимизации использования памяти
Dobby
ShadowHook
Substrate с And64InlineHook - не поддерживают отмену подмены