Skip to content

undefPtr/UnityResolve.hpp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Note

有新的功能建议或者Bug可以提交Issues
New feature suggestions or bugs can be submitted as issues.

如果在调用Unity函数时发生崩溃情况可以使用以下方法解决
If a crash occurs when calling Unity functions, you can use the following methods to resolve it.

__try {
  // your code

  // if error C2712
  [&]() {
    // your code
  }();
} __except (EXCEPTION_EXECUTE_HANDLER) {
   return;
}

UnityResolve.hpp

类型 (Type)

  • Camera
  • Transform
  • Component
  • Object (Unity)
  • LayerMask
  • Rigidbody
  • Physics
  • GameObject
  • Collider
  • Vector4
  • Vector3
  • Vector2
  • Quaternion
  • Bounds
  • Plane
  • Ray
  • Rect
  • Color
  • Matrix4x4
  • Array
  • String
  • Object (C#)
  • List
  • Dictionary
  • More...

功能 (Function)

  • DumpToFile
  • 修改静态变量值 (Modifying the value of a static variable)
  • 获取实例 (Obtaining an instance)
  • More...

初始化 (Initialization)

UnityResolve::Init(GetModuleHandle(L"GameAssembly.dll | mono.dll"), UnityResolve::Mode::Auto);

参数1: dll句柄
Parameter 1: DLL handle
参数2: 使用模式
Parameter 2: Usage mode

  • Mode::Il2cpp
  • Mode::Mono
  • Mode::Auto

附加线程 (Thread Attach / Detach)

// C# GC Attach
UnityResolve::ThreadAttach();

// C# GC Detach
UnityResolve::ThreadDetach();

获取函数地址及调用 (Obtaining Function Addresses and Invoking)

const auto classes = UnityResolve::assembly["assembly name.dll | 程序集名称.dll"]->classes;

auto klass = classes["class name | 类名称"];

const auto field = klass->Get<UnityResolve::Field>("Field | 变量名");
const auto method = klass->Get<UnityResolve::Method>("Method | 函数名");

const auto functionPtr = method->function;

const auto method1 = klass->methods["method name1 | 函数名称1"];
const auto method2 = klass->methods["method name2 | 函数名称2"];

method1->Invoke<int>(114, 514, "114514");

const auto ptr = method2->Cast<void, int, bool>();
ptr(114514, true);

转存储到文件 (DumpToFile)

UnityResolve::DumpToFile("./Dump.cs");

创建C#字符串 (Create C# String)

auto str = UnityResolve::UnityType::String::New("string | 字符串");
std::string cppStr = str.ToString();

创建C#数组 (Create C# Array)

const auto classes = UnityResolve::assembly["assembly name.dll | 程序集名称.dll"]->classes;
auto klass = classes["class name | 类名称"];
auto array = UnityResolve::UnityType::Array::New(klass, size);
std::vector<T> cppVector = array.ToVector();

获取实例 (Obtaining an instance)

const auto ass = UnityResolve::assembly["Assembly-CSharp.dll"];
const auto klass = ass->classes["Player"];
std::vector<Player*> playerVector = klass->FindObjectsByType<Player*>();
playerVector.size();

世界坐标转屏幕坐标 (WorldToScreenPoint)

Camera* pCamera = UnityResolve::UnityType::Camera::GetMain();
Vector3 point = pCamera->WorldToScreenPoint(Vector3, Eye::Left);

About

Unity引擎C++接口 | Unity Engine C++ API | Mono/il2cpp

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 100.0%