万博输10万怎么办Intoli插件API

KeyIdentifiedObject

公共抽象类keyidentivedObject

描述

介绍

所有的基类事件年代,TrackedVariables,和AdjustableVariables在SDK中;基本上,Intoli收集的任何东西都由一个唯一的万博输10万怎么办键表示,并由一个参数构造函数初始化,该构造函数接受这个键。这一页很长,但我们读不懂高度推荐阅读它,因为它解释了一些非常基本的,同样重要的,在整个库中使用的概念。

单身态度的行为

我们将在一分钟内得到关于键本身的信息,但是首先我们应该强调一个非常重要的一点:新初始化的后代KeyIdentifiedObject并不是完全独立于以前初始化的共享相同键的后代。

考虑您建立TrackedVariable并指定它所表示的信息。现在,如果你初始化一个新的会发生什么TrackedVariable用同一个键?更糟糕的是,如果你设置了它所代表的相互冲突的信息,会发生什么?这些都是一些微妙的问题,我们已经尽了最大努力来找到我们认为明智的答案。

首先,键在特定类型中必须是唯一的。如果有更细粒度的方法来区分库中的东西,那么只是扮演钥匙的角色,我们会有同样的问题。因此,根本没有办法有两个相同类型和相同的密钥的对象完全独立。在我们上一个示例中,在第二个对象上设置不同的信息必须必须修改第一个的信息,以便与密钥唯一性一致。这一事实强烈建议应用a单例模式在一个每个键的基础上。

让我们看看上面示例后面的代码。

使用命名空间万博输10万怎么办Intolisdk.;大主教{分数;静态无效主要(){//创建跟踪变量并告诉SDK它对应于分数TrackedVariabletrackedScore=TrackedVariable(“球员得分”)代表(GameConcepts分数);//将我们的私有得分变量注册为被跟踪为TrackedScore万博输10万怎么办注册(,“分数”)。作为(trackedScore);//使用相同键创建另一个跟踪变量TrackedVariableanotherTrackedScore=TrackedVariable(“球员得分”);如果(trackedScore==anotherTrackedScore){//这将永远不会执行,因为它们不是真正的单例。//然而,另一个trackedscore *将被标记为代表一个分数!}}}

这是第一件事所指出的那样trackedScore不完全相等anotherTrackedScore因为它们实际上并不指向相同的底层对象。也就是说,如果你能通过anotherTrackedScore对于Into万博输10万怎么办li函数,它已经知道它表示一个分数,因为你之前设置了这个分数trackedScore。类似地,如果您添加额外的额外信息anotherTrackedScore然后它也会连着trackedScore

Intoli库的编码风格和语义拥抱了这个事实,而不是回避它:万博输10万怎么办KeyIdentifiedObjectS通常在每个函数调用中初始化,而不是存储在某些全局位置。您可以考虑使用预先存在的键初始化新对象,以类似于从某些全局注册表中检索它。我们发现这非常方便,一旦了解这一点,就可以获得高可读的代码。

那么他们怎么不喜欢单身人士?您希望在特定函数调用中附加信息的情况下有许多情况,但不希望此信息在下次使用它时保留。一个例子是在你使用的时候报告记录一个进展配合完成的阶段赋予IsComplete。如果玩家返回并开始相同的进展阶段再次您不会再将其作为舞台结束。所以而不是必须手动取消标记进展在一个阶段的末尾,当您使用键初始化一个新对象时,它将自动不标记。

在初始化之间持久化特定的信息片段不是我们想要的行为的情况下,我们允许这些信息片段只附加到特定的实例上。如果是这样的话,文档中会非常强调这一点(参见WithProgress,with,WithMessage,赋予IsComplete)。您应该假定信息是持久的,除非另有明确说明。

键不区分大小写,空格被视为下划线,所以“Physics:Bird:Initial Velocity”等同于“Physics:Bird: initial_velocity”。这样做是为了避免创建极其相似的键,但是您仍然应该尝试与您喜欢的样式保持一致。冒号在键中有特殊的含义:它们表示层次结构,可用于对概念上相似的变量进行分组。指定合理的层次结构不仅可以帮助我们在分析仪表板上组织东西,还可以帮助我们加快后台优化的速度。由于这些原因,强烈建议您这样做!

请注意,键必须是唯一的具体类型,但它们可以是相同的不同的类型没有问题。无论如何,你可能想要保持它们,但它们可以被认为是生活在不同的名称空间中。

作为生成层次结构的示例,请考虑一组事件如何生成

使用命名空间万博输10万怎么办Intolisdk.;使用命名空间万博输10万怎么办Intolisdk.事件;大主教{静态无效主要(){万博输10万怎么办报告(事件("自定义事件类别1:子类别1:名称1"));万博输10万怎么办报告(事件("自定义事件类别1:子类别2:名称2"));万博输10万怎么办报告(事件("自定义事件类别1:名称3"));万博输10万怎么办报告(事件("自定义事件类别2:名称4"));万博输10万怎么办报告(事件(“自定义事件类别3:子类别1:名称5”));万博输10万怎么办报告(事件("自定义事件类别3:子类别2:名称6"));}}

会像这样分组成树形结构吗

事件├──定制事件类别1│├──名字3│├──子类别1││└──名字1│└──子类别2│└──名字2├──定制事件类别2│└──名字4└──定制事件三级└──子类别1└──名字5└──子类别2└──名字6

可以在将直接交互的每个类的页面上找到更现实的示例。

需要注意的是,如果可能的话,键应该作为字符串文字传递。当SDK在testingMode,反射用于识别与Intoli相关的操作,这允许我们在不太常见的函数万博输10万怎么办调用实际执行之前了解它们。例如,如果您使用字符串文本进行报告成就然后我们就可以构建一个包含所有可能成就的仪表板,而不仅仅是那些至少一个人已经解锁的成就。这不是必需的,但它确实有助于更顺畅的集成。

方法

等于

检查二KeyIdentifiedObject键和类型相等的实例。

GetHashCode方法

获取由键和类型确定的散列代码。

属性

关键

识别密钥的只读值。