【发布时间】:2015-06-05 21:47:31
【问题描述】:
您好,我想从函数中调用子例程,但似乎不可能:
private static void onEnergyTimer(object source, ElapsedEventArgs e)
{
if (energy < pastEnergy - 20) {
StartCoroutine(SendData());}
}
作为一种解决方法,我尝试了这个,但是当我尝试下面的代码时,我收到错误“类、结构或接口成员声明中的意外符号无效”
using System;
using System.Collections;
using System.Collections.Generic;
using System.Timers;
using UnityEngine;
public class StickTimerBetaCoroutine2 : MonoBehaviour
{
public static float energy = 50.0f;
private static float pastEnergy = energy;
public void Update ()
{
System.Timers.Timer energyTimer = new System.Timers.Timer ();
energyTimer.Elapsed += new ElapsedEventHandler (onEnergyTimer);
energyTimer.Interval = 3000;
energyTimer.Enabled = true;
{
if (JoeysInputStick.flex <= 0) {
energy -= 8 * (Time.deltaTime);
} else if (JoeysInputStick.flex >= 1) {
energy += 2;
} else if (JoeysInputStick.flex >= 2) {
energy += 5;
} else if (JoeysInputStick.flex >= 3) {
energy += 7;
} else if (JoeysInputStick.flex >= 4) {
energy += 9;
} else if (JoeysInputStick.flex >= 5) {
energy += 11;
} else if (JoeysInputStick.flex >= 6) {
energy += 13;
}
}
energy = Mathf.Clamp (energy, 0.0F, 600.0F);
RectTransform rTrans = (RectTransform)transform.GetComponent<RectTransform> ();
rTrans.sizeDelta = new Vector2 (200, energy);
}
private async void onEnergyTimer (object source, ElapsedEventArgs e)
{
if (energy < pastEnergy - 20) {
JoeysInputStick.SendTensOn ();
await Task.Delay (800);
JoeysInputStick.SendTensOff ();
}
pastEnergy = energy;
}
}
【问题讨论】:
-
energy和pastEnergy是什么?还是StartCoroutine()和SendData()? -
@FrédéricHamidi:我认为这些问题与他遇到的错误无关。
-
@StriplingWarrior,您的回答很可能是正确的(仍然需要提问者的确认),但它只解决了问题的第二部分。我的(补充)评论是关于问题的第一部分,因为我在这里闻到了 XY 问题:)
标签: c# asynchronous void