我正在构建一个用于编辑所选3D对象的UI系统。我在屏幕上有球体,我希望能够编辑它们的属性(例如半径)。为了做到这一点,我希望用户能够点击一个球体,然后它会在对象旁边显示一个面板。当用户更改滑块值时,单击的球体半径会发生变化。使用新的统一事件系统,我认为它很容易实现,但我是团结的新手,即使我知道基本的我不知道如何正确组织这个。
最后我的目标是选择多个球体,右键单击并将半径编辑到所有选定的球体。 关于如何做到这一点的任何提示?抱歉我的英语不好。感谢
答案 0 :(得分:0)
以下是如何做到的:
bool
进行跟踪,例如bool _isSelected
OnMouseUpAsButton()
函数中切换此布尔值。单击对象并释放单击同一对象时,将调用此函数。 Unity的OnMouseXXX()
接口非常适合处理鼠标事件。您只需要在球体对象中定义此功能即可。脚本。Slider
并从编辑器中排列其值间隔。定义一个函数,该函数将编辑球体的比例值并将该功能与该滑块相关联。 下面你可以看到我在我的游戏中如何做到这一点的例子。
如果你提供public void _f(float val)
,Unity只会捕获滑块的值。它将显示在列表的顶部作为"动态浮动"。因此,在您的情况下,您的滑块更新功能应如下所示:
public void SphereScaleSliderUpdate(float val)
{
foreach (GameObject sphere in GameObject.FindGameObjectsWithTag("your tag here"))
{
if (sphere.IsSelected) // don't forget to provide a public getter for _isSphere variable
{
sphere.transform.localScale = new Vector3(val, val, val);
}
}
}
Canvas
分配给该脚本中的变量,然后在UIManager的Update()
函数中扫描RClick。
void Update()
{
if (Input.GetMouseButtonDown(1) // RClick event
{
// makes the slider appear through enabling canvas
_canvasHandle.enabled = true;
}
}