Mic*_*r3D 2 c# extension-methods
所以我想为api创建一个扩展方法,api已经密封了.
如果您了解扩展方法,以下应该看起来很熟悉.
private static List<Member> memberList = new List<Member>();
public static List<Member> GetMemberList(this GameObject go)
{
return memberList;
}
Run Code Online (Sandbox Code Playgroud)
请注意,要声明扩展方法,它需要是静态的,并且因为它需要是静态的,所以我通过GameObject类型访问的List必须是静态的.我希望每个GameObject都有自己的成员列表.但是我很确定,因为这是一个静态字段,每个实例GameObject都会指向相同的静态memberList.
我的假设是真的吗?如果是这样,可能会有什么替代方案?我想避免将GameObject放在也包含memberList的包装类中,因为api只允许在运行时检测和操作GameObjects.有一些方法可以通过gameObject反向引用包装类,但这会增加我希望避免的代码的复杂性.
是的,如果你想在游戏对象之外保留一些东西并通过扩展方法访问它,它必须是静态的.
您可以使用字典将一个成员列表映射到每个游戏对象:
private static Dictionary<GameObject, List<Member>> memberLists = new Dictionary<GameObject, List<Member>>();
public static List<Member> GetMemberList(this GameObject go) {
return memberLists[go];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
668 次 |
| 最近记录: |