【发布时间】:2019-02-21 22:11:12
【问题描述】:
大家好,正在开发通用动画控制器,
Public Animator anim
Public void GenAnim <t>(string "name", t val)
{
If (t is float)
{
anim.setfloat ("name", val)
}
If (t is bool)
{
anim.settrigger("name", val)
}
If (t is int)
{
anim.setint ("name", val)
}
}
问题是,您不能将 t 传递给 anim.set 函数,而且我不知道如何投射或绕过它,我觉得有一个简单的修复方法,我错过了 如果您有任何想法,请告诉我
干杯
【问题讨论】:
-
你可以通过应用你刚刚测试过的演员来解决这个问题,即在
t is float的情况下你可以写anim.setfloat ("name", (float) val);。但这感觉不是很 OOP:代码不应该知道它可以支持和测试的有限 T 集。你想达到什么目的?一定会有更好的办法。你可以使用重载函数吗? -
感谢您的回复,不幸的是,演员阵容不起作用,我得到“无法将 t 转换为浮点数,我需要在我申请的工作中显示泛型的使用,这就是我想出反对同一个 gen list class 再次感谢
-
糟糕,抱歉:
Convert.ToSingle(val)应该可以工作(其中 'single' 是 'float' 的另一个名称),因为它有一个接受对象的重载。但是,如果您希望将其作为投资组合,我认为这不是使用泛型的好例子。也许掌握一些 Unity 示例项目,看看他们在哪里以一种有趣的方式使用泛型,或者尝试在其中一个(或你自己的另一个示例?)中找到一个你可以用泛型解决的问题. -
感谢一百万的建议和建议 Rup,我一定会看看一些示例项目欢呼