澄清:目标是拥有我的UIPList 1.能够观看任何ObservableList,其中T是iUIP或其中一个继承者,2。能够绘制连接到该iUIP的UIPrefab按钮列表,和3.能够随时更改它正在观看的列表(并且只能看一个列表)。
我可以绘制gui按钮并使第一个手表工作(使用下面的hacky代码),但是没有办法将引用存储在UIPList中,所以当我想要观看其他内容时我可以取消订阅该列表。我不能把它变成“UIPList”(可以存储引用)而不会失去上面提到的第三种能力。
我现在正在尝试使用菜单(谁知道UIPLists和ObservableLists参与其中)在内容更改时负责取消订阅,但理想情况下我可以将ObservableList传递给UIPList并且它将知道如何观看它,绘制gui,并在获得新列表时取消订阅。
原帖:
我有UIPList
应该观看ObservableList<T> where T:iUIP
。 (iUIP
表示具有可以在UIPList
中绘制的按钮的类。
问题是我无法存储对列表的本地引用,因为它可能是ObservableList<iUIP>
或者可能是ObservableList<Character>
或ObservableList<Organization>
等等(其他类继承{ {1}})。
我无法在iUIP
上使用ObservableList<iUIP>
作为参考,因为我可能想看一个无法转换为UIPList
的列表,尽管从iUIP继承了字符,所以有无法存储列表ObservableList<iUIP>
的本地引用应该观看。
我在UIPList
上使用SetWatchList<T>(ObservableList<T> list)
方法来查看列表,但由于没有对原始列表的引用,当我想要更改UIPList
正在观看的内容时没有我需要取消订阅之前的列表的参考。
UIPList
答案 0 :(得分:2)
使整个班级成为通用
public class UIPList<T> : MonoBehaviour where T : iUIP
然后你可以存储对列表的引用。这更好地封装了列表的实际内容。
不要忘记从方法中删除通用约束
public void WatchList(ObservableList<T> list)