我在Unity & C#方面完全是个菜鸟,现在我有一个任务,我觉得有点势不可挡,所以任何输入都将非常感谢...
我得到了一个类,看起来像这样:
//using directives
public class PipelineExample : MonoBehaviour
{
private CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
private bool res = false;
// Start is called before the first frame update
void Start()
{
StartPipeline();
while (!res) ;
}
async void StartPipeline()
{
// create models, pipeline, pipeline step
IModel fbxModel = new FbxModel();
Pipeline<IModel> pipeline = new Pipeline<IModel>();
IAction<IModel> pipelineStep = new GenericPipelineStep<IModel>();
// add steps to pipeline
pipeline.AddPipeLineStep(pipelineStep);
try
{
res = await pipeline.Execute(fbxModel, cancellationTokenSource.Token);
Console.Write("Result of pipeline: " + res);
}
catch (OperationCanceledException)
{
Console.WriteLine("Canceled successfully!");
}
}
// Update is called once per frame
void Update()
{
}
}
现在,我想在单击“开始”按钮时,以某种方式从另一个类调用此startmethod(?):
private void OnStartButtonClicked(MouseUpEvent evt)
{
//What goes in here?
}
我不能只是流水线示例.开始很明显,
公共管道示例;启动也不起作用。
基本上我的问题是,如何从另一个类启动这个PipeLineExample类?
2条答案
按热度按时间ctzwtxfj1#
如果您对PipelineExample类进行了一些修改,您应该能够调用您正在寻找的方法。
下面是一个例子,你可以通过很多方法来实现这一点:
因为它是一个MonoBehaviour,Unity将处理创建该类的示例。如果你不想将该类作为组件附加到场景中的GameObject,你也可以将其实现为ScriptableObject(可能是我的首选)。但是你可能希望场景特定的值在应用程序中驱动这个组件。
然后,您可以如下调用设置:
请注意,这将在单击按钮时设置您的管道。如果加载时间很长,您可能会受益于某种用户通知,让用户知道存在潜在的延迟。
lf3rwulv2#
所以我找到了一个简单可行的解决方案。
我只是将PipelineExample中的方法设置为静态,并在按钮中调用start:管道示例.Start();