小编Gre*_*reg的帖子

为什么我无法从我的 UnityEvent 中获得非持久侦听器计数?

我需要知道有多少非持久侦听器被添加到 UnityEvent。

似乎没有方法在 UnityEvent 类中给我这个数字。我只能获得持久侦听器计数(从编辑器或使用 UnityEvent.AddPersistentListener() 添加的那些)。我想出的唯一解决方案是创建一个子类并使用注册计数覆盖该函数。

这是一个显示问题的简短代码:

    private UnityEvent myEvent;

    private void MyFunctionToHook()
    {
        // func logic
    }

    private void MyInitialisation()
    {
        myEvent.AddListener(MyFunctionToHook);
        myEvent.AddListener(MyFunctionToHook);
        myEvent.AddListener(MyFunctionToHook);

        // here, I need to know how much hooks were added.
        // ??
    }
Run Code Online (Sandbox Code Playgroud)

1)您对我如何设法在本地跟踪此信息有任何想法吗?

2)我这样做对吗?想知道这些信息有错吗?

无法访问此信息似乎很奇怪,因为它可能在单元测试/警告中很有用...等

谢谢你的时间。

这是 unityEvent 文档:https ://docs.unity3d.com/ScriptReference/Events.UnityEvent.html

[编辑] 到目前为止我发现的唯一解决方案如下:

    public class TrackingUnityEvent<T0> : UnityEvent<T0>
{
    private int nonPersistentListenersCount;

    public int GetNonPersistentEventCount()
    {
        return nonPersistentListenersCount;
    }

    public void AddNonPersistantListener(UnityAction<T0> call)
    {
        AddListener(call);
        nonPersistentListenersCount++;
    }

    public void RemoveNonPersistantListener(UnityAction<T0> call)
    { …
Run Code Online (Sandbox Code Playgroud)

c# hook listener unity-game-engine

5
推荐指数
1
解决办法
1771
查看次数

Xcode - 为什么“常规”下没有“嵌入式二进制文件”?

我目前正在探索 Xcode/Swift/Objective-C;这个问题对于有经验的用户来说可能是无稽之谈,如果不相关,将被删除。

操作系统版本: MacOS Sierra 10.13.5

Xcode 版本: 9.4.1

我创建了一个 Bundle(它只包含一个 .h 和 .mm),针对 iOS 平台。我想使用“嵌入式二进制文件”列表在其中添加一个框架,但目前只有“链接框架和库”

我所做的 ->在我的项目中创建了一个“Framework”文件夹并在其中添加了“.framework”。然后.framework已添加到“链接的框架和库”中

为什么 Xcode 不显示“嵌入式二进制文件”选项?

是否应该使用另一种方法来添加“.framework”

xcode bundle ios

5
推荐指数
1
解决办法
4150
查看次数

Unity iOS - 无法从.Bundle导入函数

目前正在尝试在Unity上为iOS框架创建一个包装器.

我制作了一个.bundle,包含基本的Objective-c代码:

sample.h:

#import <Foundation/Foundation.h>

extern "C"
{
    void SampleFunction(); // this is going to call already bridged swift or objc code
}
Run Code Online (Sandbox Code Playgroud)

sample.mm:

#import "Sample.h"
#import <SDK/SDKFunctions.h>

void SampleFunction()
{

    // my sweet functions calls

}
Run Code Online (Sandbox Code Playgroud)

SDK作为.framework包含在包中(在"链接的框架和库"中引用).捆绑目标是iOS.

捆绑包成功构建.

捆绑包位于Unity中的"Assets/Plugins/iOS"下,标记为"iOS"和"添加到嵌入式二进制文件"

然后,在Unity中,有一个简单的C#脚本调用SDK函数:

sample.cs

public class BundleImportSample : MonoBehaviour {


    #if UNITY_IOS
        [DllImport("__Internal")]
        private static extern void SampleFunction();
    #endif
        void Start()
        {
    #if UNITY_IOS
            SampleFunction();
    #endif
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我在编辑器中测试此代码时,我收到以下错误:

EntryPointNotFoundException:SampleFunction

如果我在iOS上构建生成的项目,我会遇到类似的问题:

ld:找不到架构arm64的符号

注意:我使用以下教程作为指导:http://blog.mousta.ch/post/140780061168

为什么在__Internal中找不到SampleFunction()?

c# xcode wrapper unity-game-engine ios

5
推荐指数
1
解决办法
388
查看次数

如何确保继承类实现友元函数(ostream)?

我宁愿实现一个非友元函数并直接将该函数标记为虚拟。

但我现在的情况是,我想确保一组特定的类实现重载

friend std::ostream& operator << (std::ostream& os, MyClass& myClass);
Run Code Online (Sandbox Code Playgroud)

我发现没有其他方法可以将其直接链接到我的班级。(实施运算符的其他可能性是将其移到我的班级之外,没有朋友)

各位语法大佬,我有什么方法可以正确执行这个规则吗?(让孩子重写 << ostream 运算符)

编辑 - 以下线程的相关主题:

子类中重载的流插入运算符(<<)

基类和派生类的虚拟插入运算符重载

c++ inheritance overriding std

3
推荐指数
1
解决办法
58
查看次数

标签 统计

c# ×2

ios ×2

unity-game-engine ×2

xcode ×2

bundle ×1

c++ ×1

hook ×1

inheritance ×1

listener ×1

overriding ×1

std ×1

wrapper ×1