我有一个示例程序从Unity的留档页面,其中包含一个IENumator开始()
,如下所示,但我想知道如何也可以有一个正常的无效的开始()
在同一个脚本?
我还尝试添加了void Start()
,但它抛出了一个错误。然后,我尝试在IEnumerator
函数中包含我的代码(只是为了控制应用程序的数据路径而编写),尽管我使用0f
作为延迟参数立即执行它,但它不会打印出任何内容。。。
我错过了什么?对于这种情况,通常的解决方案是什么?您必须有一个IEnumerator Start()
,但还需要执行起始代码?
/// Saves screenshots as PNG files.
public class PNGers : MonoBehaviour
{
// Take a shot immediately.
IEnumerator Start()
{
yield return UploadPNG();
yield return ConsoleMSG();
}
IEnumerator UploadPNG()
{
// We should only read the screen buffer after frame rendering is complete.
yield return new WaitForEndOfFrame();
// Create a texture the size of the screen, with RGB24 format.
int width = Screen.width;
int height = Screen.height;
Texture2D tex = new Texture2D(width, height, TextureFormat.RGB24, false);
// Read the screen contents into the texture.
tex.ReadPixels( new Rect(0, 0, width, height), 0, 0 );
tex.Apply();
// Encode the texture into PNG format.
byte[] bytes = tex.EncodeToPNG();
Object.Destroy(tex);
// For testing purposes, also write to a file in the project folder:
File.WriteAllBytes(Application.dataPath + "/../SavedScreen.png", bytes);
}
IEnumerator ConsoleMSG()
{
yield return new WaitForSeconds(0f);
Debug.Log(Application.dataPath);
}
}
我有一个来自Unity文档页面的示例程序,其中包含一个IEnumerator Start(),如下所示,但我想知道如何在同一个脚本中也包含一个普通的void Start()?
你不能。
这是因为不能有两个同名函数。例外情况是,函数具有不同的参数类型。我知道一个Start
函数是void
返回类型,而另一个是IEnumerator
返回类型。这在C#中无关紧要。重要的是这两个函数的参数。
在这种情况下,他们都不接受任何争论,所以你不能让他们超载。你可以在这里读到更多。
即使您使无效的开始
函数接受一个参数,而IENumator开始
函数不接受一个参数,它也不会工作。例如,
void Start(int i)
{
Debug.Log("Hello Log 1");
}
和
IEnumerator Start()
{
yield return null;
Debug.Log("Hello Log 2");
}
Unity将引发编译(编辑器)和运行时异常:
脚本错误(
如果您切换它,并使
无效的开始
没有任何参数,但有一个参数的IENumator
,它将编译,你不会得到任何错误,但在运行/玩你的游戏。
void Start()
{
Debug.Log("Hello Log 1");
}
和
IEnumerator Start(int i)
{
yield return null;
Debug.Log("Hello Log 2");
}
对于这样的情况,通常的解决方案是什么,您必须有一个IENumator Start(),但您也需要执行启动代码?
在任何其他代码之前,在
IENumator Start
函数中运行您的起始代码。
IEnumerator Start()
{
//Run your Starting code
startingCode();
//Run Other coroutine functions
yield return UploadPNG();
yield return ConsoleMSG();
}
IEnumerator UploadPNG()
{
}
IEnumerator ConsoleMSG()
{
yield return new WaitForSeconds(0f);
}
void startingCode()
{
//Yourstarting code
}
您还可以在
void away()
或void Enable()
函数中执行启动代码。
有哪些更改? Photoshop 中的脚本生成 UI 经过增强后现在可以支持 HiDPI/Retina 显示器,并且在外观上与整体应用程序的 UI 保持一致。此外,脚本生成 UI 当前基于新框架而不是 Flex。 受影响的对话框列表 以下是应用程序中受到此更改影响的对话框列表: 对话框 菜单 联系表 II 文件 > 自动 > 联系表 II 条件模式更改 文件 > 自动 > 条件模式更改 限制图像
我不明白他们怎么会不同。
问题内容: 问题已修订(见下文) 我有一个cpp文件,它定义了一个静态全局变量,例如 该cpp文件被编译为可执行文件和共享库。可执行文件可以在运行时加载共享库。 如果我在Linux上,则此变量似乎有两个副本。我假设一种来自可执行文件,另一种来自共享库。其他平台(HP,Windows)似乎只有一个副本。 什么可以控制Linux上的这种行为,我可以更改它吗?例如,是否有一个编译器或链接器标志会强制共享
我正在编写一个时髦的脚本,以在一个步骤中测试我的所有服务。 我导入了WSDL,然后自动生成所有SOAP请求。 我希望减少逐个测试所有SOAP服务的手动工作。 所以,如果可能的话,我想通过groovy实现。 从addressScript中的这里——我想在以后的所有测试用例中访问所有的SOAP请求。那么有没有可能通过上下文中的一些循环来实现它呢..?下面是我正在尝试的示例代码。 我的主要座右铭是减少逐
问题内容: 如何运行多个python脚本?此刻我像这样跑一个。 我已经尝试过了,但是不起作用:仅运行第一个脚本。另外,我尝试使用这样的单个文件; 但是,这也不起作用。 问题答案: 使用Bash: 这就是整个脚本。它将同时运行两个Python脚本。 Python本身可以做同样的事情,但要花更多的时间输入,对于眼前的问题来说是一个不好的选择。 我认为尽管您采取错误的方法来解决问题很可能,但我想听听您的
我试图在浏览器中缓存一个(javascript)资源,并在响应头中正确设置了所有的cache-control:max-age、Expires和Etag(如屏幕截图所示)。 浏览器使用“if-none-match”和“if-modified-since”进行请求,在这两种情况下都满足条件: if-modified-since=last-modified(文件从未更改过) 如果-none-match=