主题
GameGraph.UrhoInterop
EngineObject 双端
命名空间 GameGraph.UrhoInterop
csharp
public abstract class EngineObject : DisposableObject引擎对象基类,封装本机指针并管理其生命周期。
属性
IsValid 双端
csharp
public override bool IsValid { get; }NativePtr 双端
csharp
public NativePtr NativePtr { get; set; }本机指针。
方法
GetObject 双端
csharp
public static T? GetObject<T>(NativePtr nativePtr, bool createIfNotExist = true) where T : EngineObject获取或创建指定类型的引擎对象。
nativePtr— 本机指针createIfNotExist— 缓存未命中时是否创建新对象
返回: 引擎对象实例,或 null
GetObject 双端
csharp
public static T? GetObject<T>(NativePtr nativePtr, Func<NativePtr, T> factory) where T : EngineObject使用工厂方法获取或创建引擎对象。
RegisterObject 双端
csharp
public static void RegisterObject(EngineObject obj)注册一个引擎对象到缓存。
UnregisterObject 双端
csharp
public static void UnregisterObject(EngineObject obj)从缓存中移除对象。应在对象销毁时调用。
Setup 双端
csharp
public virtual void Setup()对象初始化后的设置回调,子类可重写。
DisposeManaged 双端
csharp
protected override void DisposeManaged()释放托管资源。
备注
不在这里清零 NativePtr —— 必须留给 Boolean) 用来调 ObjectReleaseRef。子类如果重写本方法,应在使用 NativePtr 的逻辑之后, 在末尾调用 base.DisposeManaged()(base 实现已空,仅为占位约定)。
DisposeUnmanaged 双端
csharp
protected override void DisposeUnmanaged(bool finalizing)释放非托管资源(本机指针引用)。
备注
调 ObjectReleaseRef 前先清零 NativePtr 并从缓存摘除;原生 WASM trap 不会执行托管 finally,不能把包装对象清理留到调用后。释放错误仍向上传递。 子类重写时应在自己用完 NativePtr 后再调 base.DisposeUnmanaged(finalizing)。
HasSubscribedToEvent 双端
csharp
public bool HasSubscribedToEvent(UTF8String eventName)判断对象是否有脚本或引擎订阅者监听指定事件。
HasSubscribedToSenderEvent 双端
csharp
public bool HasSubscribedToSenderEvent(EngineObject sender, UTF8String eventName)判断对象是否有订阅者监听指定发送者发出的事件。
IntVector2 双端
命名空间 GameGraph.UrhoInterop
csharp
public readonly struct IntVector2 : IEquatable<IntVector2>构造函数
IntVector2 双端
csharp
public IntVector2(int x, int y)属性
X 双端
csharp
public int X { get; }Y 双端
csharp
public int Y { get; }方法
Equals 双端
csharp
public bool Equals(IntVector2 other)Equals 双端
csharp
public override bool Equals(object? obj)GetHashCode 双端
csharp
public override int GetHashCode()ToString 双端
csharp
public override string ToString()IntVector3 双端
命名空间 GameGraph.UrhoInterop
csharp
public readonly struct IntVector3 : IEquatable<IntVector3>构造函数
IntVector3 双端
csharp
public IntVector3(int x, int y, int z)属性
X 双端
csharp
public int X { get; }Y 双端
csharp
public int Y { get; }Z 双端
csharp
public int Z { get; }方法
Equals 双端
csharp
public bool Equals(IntVector3 other)Equals 双端
csharp
public override bool Equals(object? obj)GetHashCode 双端
csharp
public override int GetHashCode()ToString 双端
csharp
public override string ToString()UrhoCore 双端
命名空间 GameGraph.UrhoInterop
csharp
public static class UrhoCoreSafe, resource-free portions of Urho's Core API that are available to both GameGraph ends. Resource handles and process-mutating operations intentionally remain in their dedicated client/resource layers.
方法
GetObjectInfo 双端
csharp
public static UrhoObjectInfo? GetObjectInfo(EngineObject? value)Returns metadata and event-blocking state for an Urho-backed object.
UrhoObjectInfo 双端
命名空间 GameGraph.UrhoInterop
csharp
public readonly struct UrhoObjectInfo : IEquatable<UrhoObjectInfo>构造函数
UrhoObjectInfo 双端
csharp
public UrhoObjectInfo(uint TypeHash, string TypeName, string Category, bool BlockEvents)属性
TypeHash 双端
csharp
public uint TypeHash { get; init; }TypeName 双端
csharp
public string TypeName { get; init; }Category 双端
csharp
public string Category { get; init; }BlockEvents 双端
csharp
public bool BlockEvents { get; init; }方法
ToString 双端
csharp
public override string ToString()operator != 双端
csharp
public static bool operator !=(UrhoObjectInfo left, UrhoObjectInfo right)operator == 双端
csharp
public static bool operator ==(UrhoObjectInfo left, UrhoObjectInfo right)GetHashCode 双端
csharp
public override int GetHashCode()Equals 双端
csharp
public override bool Equals(object obj)Equals 双端
csharp
public bool Equals(UrhoObjectInfo other)Deconstruct 双端
csharp
public void Deconstruct(out uint TypeHash, out string TypeName, out string Category, out bool BlockEvents)