所以我有以下几点List
:
List<AttackStyle> AttackStyles = new List<AttackStyle>();
使用以下类型的对象:
AttackStyle lStyle = new AttackStyle();
lStyle.Name = "Attack Achilles";
lStyle.ParameterID = 0;
lStyle.Forward = Vector3.forward;
lStyle.HorizontalFOA = 70f;
lStyle.VerticalFOA = 40f;
lStyle.DamageModifier = 1f;
lStyle.ActionStyleAlias = "Jump";
lStyle.IsInterruptible = true;
AttackStyles.Add(lStyle);
现在,我希望能够找到外地ParameterID
,其中ActionStyleAlias
等于一个值(例如"Jump"
)
这是针对 Unity 应用程序的,因此搜索/查找需要尽可能快。
直接的解决方案是:
var pId = AttackStyles.FirstOrDefault(x=> x.ActionStyleAlias == "Jump")?.ParameterID
但是如果你想获得更好的性能,最好是索引你想要的最有用的属性。因此,在最有用的字段上构建字典以及时获得更好的性能。例如:
var styles = new Dictionary<string, AttackStyle>();
styles.Add("Jump", new AttackStyle()
{
Name = "Attack Achilles",
ParameterID = 0,
Forward = Vector3.forward,
HorizontalFOA = 70f,
VerticalFOA = 40f,
DamageModifier = 1f,
ActionStyleAlias = "Jump",
IsInterruptible = true
});
然后,通过这个找到对象:
var pId = styles["Jump"].ParamterId;
或者如果它可能为空:
if(styles.Keys.Contains("Jump"))
var pId = styles["Jump"].ParamterId;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句