Unity Puerts 过滤器

可以看看这个链接 官方提供的黑名单
https://github.com/chexiongsheng/puerts_unity_demo/blob/master/projects/1_Start_Template/Assets/Samples/Editor/01_WrapperGenerate/PuertsFilter.cs

[Filter]
static bool FilterMethods(System.Reflection.MemberInfo mb)
{    
	if (mb.DeclaringType == typeof(GameUtils))
	{
	    return true;
	}
	return false;
}

如果返回true 就不会生成Wrapper里的代码了

[Filter]
static Puerts.Editor.Generator.BindingMode FilterMethods2(System.Reflection.MemberInfo memberInfo)
{
	return Puerts.Editor.Generator.BindingMode.DontBinding; // 不生成StaticWrapper,且JS调用时获取对应字段会得到undefined。     
    return Puerts.Editor.Generator.BindingMode.FastBinding; // 等同于前面return false的情况
}
internal static BindingMode getBindingMode(MemberInfo mbi) 
{
    BindingMode strictestMode = BindingMode.FastBinding;
    if (filters != null && filters.Count > 0)
    {
        foreach (var filter in filters)
        {
            BindingMode mode = BindingMode.FastBinding;
            if (filter.ReturnType == typeof(bool))
            {
                if ((bool)filter.Invoke(null, new object[] { mbi })) 
                {
                    mode = BindingMode.LazyBinding;
                }
            }
            else if (filter.ReturnType == typeof(BindingMode))
            {
                mode = (BindingMode)filter.Invoke(null, new object[] { mbi });
            }
            strictestMode = strictestMode < mode ? mode : strictestMode;
        }
    }
    return strictestMode;
}

看源码就会发现
默认是 BindingMode.FastBinding 也就是说返回 false 就是 FastBinding
如果返回值是 bool 值 并且 返回 true 那么就会变成 BindingMode.LazyBinding
设计俩接口 是为了区分功能
不过你可以看到 他是for循环调用的
后面的 Filter 会覆盖前面的结果 要注意这一点

有的项目,库特别大,一进游戏初始化一些内容的时候特别慢,查出来可能是这个导致的。
可以试试改成LazyBinding 模式。

Unity3D Puerts是一种将C#和JavaScript与Unity3D引擎相结合的工具,可以用于编写通用代码。通用代码是可以被多个场景或者其他脚本引用和复用的代码片段。 在Unity3D Puerts中,通用代码可以用来处理一些常见的逻辑或者功能,比如物体的移动、交互、碰撞检测等。通过编写通用代码,我们可以避免重复编写相同的代码,提高工作效率和代码质量。 在使用Puerts编写通用代码时,我们可以使用C#或者JavaScript来编写。C#Unity3D主要的编程语言,而JavaScript是Unity3D引擎中也可以使用的一种脚本语言。Puerts可以让我们在不同语言之间进行无缝的交互和调用。 通用代码在Unity3D Puerts中可以以脚本的形式存在,通过挂载到物体或者场景中,可以让其他脚本进行调用和复用。 编写通用代码的一些好处包括: 1. 提高代码的复用性:编写通用代码可以避免重复编写相同的功能,提高代码的复用性。 2. 提高团队的工作效率:通用代码可以被多个团队成员引用,减少了编写相同功能的工作量,提高了团队的工作效率。 3. 便于维护和更新:通用代码被多个地方引用,如果需要修改和更新,只需要在通用代码处进行修改,其他引用的地方也会自动更新。 4. 代码的规范性和一致性:编写通用代码可以使得代码的规范和风格保持一致,增加代码的可读性和可维护性。 总之,Unity3D Puerts提供了一种方便的方式来编写和使用通用代码,可以提高团队的工作效率和代码质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值