Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “当”时如何调用函数;“用户操作”;末端?_C#_Unity3d - Fatal编程技术网

C# “当”时如何调用函数;“用户操作”;末端?

C# “当”时如何调用函数;“用户操作”;末端?,c#,unity3d,C#,Unity3d,我正在用C#和Unity开发一个多媒体应用程序 在这个应用程序中,用户可以使用鼠标滚轮移动对象;所以我写了 private void MoveObjectUpDown(float value) { MyObject.transform.position = MyObject.transform.position + new Vector3(0, value, 0); StartCoroutine(UpdateObjectPositionToServer(MyObject.t

我正在用C#和Unity开发一个多媒体应用程序

在这个应用程序中,用户可以使用鼠标滚轮移动对象;所以我写了

private void MoveObjectUpDown(float value)
{
     MyObject.transform.position = MyObject.transform.position + new Vector3(0, value, 0); 
     StartCoroutine(UpdateObjectPositionToServer(MyObject.transform.position, MyObject.MyObjectID);            

}
从更新检查调用MyObjectUpDown

GetAxis(“鼠标滚轮”)

UpdateObjectPositionToServer是对web服务的调用;在这个web服务中,我通过查询更新了一个MySql表

可以想象,如果用户移动鼠标移动我的对象,就会有很多对UpdateObjectPositionToServer的调用;我的问题是:


在每次用户移动之后,我可以使用哪种方法不调用UpdateObjectPositionToServer,而是在用户移动结束时调用一次(可能,用户不移动该对象的时间为1秒或2秒)一种方法是创建一个包装器协程,在启动
UpdateObjectPositionToServer
协程之前等待一段时间,并停止以前已经存在的包装器协程实例

private IEnumerator currentWaitCoroutine = null;

private void MoveObjectUpDown(float value)
{
     MyObject.transform.position = MyObject.transform.position + new Vector3(0, value, 0); 

     if (currentWaitCoroutine != null)
     {
         StopCoroutine(currentWaitCoroutine);
     }

     currentWaitCoroutine = WaitAndCall(1.5f);
     StartCoroutine(currentWaitCoroutine);
}

private IEnumerator WaitAndCall(float seconds) {
    yield return new WaitForSeconds(seconds);

    StartCoroutine(UpdateObjectPositionToServer(MyObject.transform.position, MyObject.MyObjectID);   
}