所以我的代码不完整...但它也非常简单..我想如果你能回答,你也知道足够能够使用Visual Studios Intellisense并自动填充几件事......对不起,一个漫长的夜晚。
我有三个主要脚本......这是链中的主要链接,它传递通过它接收的数据。然而,当它过滤它用于AddToStack()的方法时;然而输出是......
发送... 1(x91) 接收...... 1(x9)
现在我已经调整了它并让它以90到10流动但仍然......我不知道为什么90%的数据都在下降..我是否搞砸了Unity Engine的流量? XD我对Unity有点不高兴。
脚本如下:
1。)Primary - 如果dataStrength小于阈值则发送延迟数据,如果大于或等于阈值则没有延迟。 2.)使用update方法检查公共输入是否大于0,如果是,则启动将输入保存到列表的方法,然后将输入重置为0以进行下一次输入。然后当" A"按下它会遍历列表并吐出总和。
脚本一(有条件的数据)
private float totalStrength = 0;
public float activationThreshold;
public float signalStrength;
public bool showPackets = true;
public bool showFullDebug = true;
public Stack<float> signals = new Stack<float>();
void Start ()
{
nodeGrowthThreshold = 60; //Just temporary arbitrary numeric values...
activationThreshold = 20; //The default values if not set.
path = GetComponent<Path>();
}
private void Update()
{
if (signalStrength > 0)
{
if (numRequests.Equals(nodeGrowthThreshold)) { StartCoroutine(NodeGrow()); StopCoroutine(NodeGrow()); }
if (totalStrength >= activationThreshold)
{
StartCoroutine(AddToStack());
StopCoroutine(AddToStack());
signalStrength = 0;
if (showPackets || showFullDebug) { StartCoroutine(ReadStack()); StopCoroutine(ReadStack()); }
StartCoroutine(WriteStack());
StopCoroutine(WriteStack());
totalStrength -= activationThreshold;
signalStrength = 0;
signals.Clear();
}
else if (totalStrength < activationThreshold)
{
StartCoroutine(AddToStack());
StopCoroutine(AddToStack());
signalStrength = 0;
}
}
if (showFullDebug) { print("Node receieved: " + numRequests + " requests."); }
}
private IEnumerator AddToStack()
{
if (!showFullDebug) { print("Node added signal: " + signalStrength + " to storage stack"); }
signals.Push(signalStrength);
numRequests++;
totalStrength += signalStrength;
yield return null;
}
private IEnumerator WriteStack()
{
if (showFullDebug) { print("Node is passing stack of stack size..." + signals.Count); }
if (signals.Count > 0)
{
foreach (float signal in signals.ToArray()) { path.input = signal; if (showFullDebug) { print(signal); } print("Sending... " + signal); /**NOT CAPTURING DATA FAST ENOUGH. DATA IS SENDING FAST ENOUGH THOUGH.**/} }
yield return null;
}
SCRIPT TWO(RECIEVER)
public class Out : MonoBehaviour
{
public float input = 0;
private float savedOutput = 0;
public bool showFullDebug = true;
public List<float> savedInput = new List<float>();
public Queue<float> output = new Queue<float>();
private void Update()
{
if (input > 0) {
//StartCoroutine(Save());
//StopCoroutine(Save());\
Save();
input = 0;
}
if (Input.GetKeyDown(KeyCode.A)) { print(savedOutput); }
}
private void Save()
{
savedInput.Add(input);
output.Enqueue(input);
foreach (float num in savedInput.ToArray()) { savedOutput += num; }
//yield return null;
}
}
感谢任何能提供帮助的人。
注意: - 我使用的数据显然只是一个1,用于通过100次模拟的浮点数。 - 正如你所看到的,我通常尝试IEnumerators和方法......但不确定为什么数据会被丢弃..
答案 0 :(得分:0)
我的答案的最佳解决方案是在我的接收类中使用Setter并设置它,这样它可以在任何时候更改所有必要的操作,而不仅仅是检查它是否经常发生变化。 / p>