这是使用Unity3D。我有三个协程:GetJSONFromSelectedSubreddit()
,LoadMoreMemes()
,以及一个单独脚本中的函数,它需要能够通过GetNewMemes()
函数访问模因数组(必须返回类型Meme [] )。 LoadNewMemes()
产生。问题是,LoadMoreMemes()
要求json工作,所以他们必须以上述顺序运行。如果您需要这些功能,可以在这里:
public void GetNewMemes(string subReddit, int count)
{
SetSelectedSubreddit(subReddit);
memesAtATime = count;
subJSON = null;
StartCoroutine(GetJSONFromSelectedSubreddit());
StartCoroutine(LoadMoreMemes());
}
IEnumerator GetJSONFromSelectedSubreddit()
{
gettingJSON = true;
WWW requester = new WWW("https://www.reddit.com/r/" + selectedSub + "/new.json?sort=new&count=25&after=" + postIndex);
yield return requester;
subJSON = requester.text;
json = new JSONObject(subJSON);
gettingJSON = false;
}
IEnumerator LoadMoreMemes()
{
while (gettingJSON)
yield return new WaitForSeconds(0.1f);
for (int i = 0; i < memesAtATime; i++)
{
yield return StartCoroutine(GetUserPostKarma(json["data"]["children"][i]["data"]["author"].str));
string sourceURL = json["data"]["children"][i]["data"]["preview"]["images"][0]["source"]["url"].str;
sourceURL = sourceURL.Replace("&", "&");
yield return StartCoroutine(GrabImage(sourceURL));
Meme currentMeme = new Meme(
json["data"]["children"][i]["data"]["preview"]["images"][0]["source"]["url"].str,
authorPostKarma,
(int) json["data"]["children"][i]["data"]["score"].i,
json["data"]["children"][i]["data"]["permalink"].str,
json["data"]["children"][i]["data"]["title"].str,
currentBitmap
);
Debug.Log(currentMeme.cost);
memes[i] = currentMeme;
}
}
这是另一个脚本:
void Start ()
{
RedditCommunicator redditCommunicator = GetComponent<RedditCommunicator>();
redditCommunicator.GetNewMemes("me_irl", 1);
Meme[] memes = redditCommunicator.GetCurrentMemes();
Debug.Log(memes[0].currentScore);
redditCommunicator.SpawnOneMeme(memes[0]);
}
每个函数都可以自行运行,但是它们需要等待彼此完成,并且以正确的顺序运行才能工作。我希望这些功能保持独立,以便将来可以单独调用它们。 memes
是一个私有变量,我希望传递给另一个调用这些函数的脚本。如果你不认为我已经尝试过我的选择谷歌搜索并自己解决这个问题,请相信我,我已经尽了最大努力。感谢您的帮助。如果您需要更多信息,请问我。这段代码的当前状态是它在协程可以完成之前将memes返回到早期,导致空模因。
答案 0 :(得分:1)
你可以在IEnumerator中产生一个Coroutine,它将停止Coroutine的进程,直到完成Coroutine。像这样:
'<input type="submit" alt="display" value="save" name="save">'; `
<?php
if(isset($_POST['save']));
{
// from data
// insert query
}
if(isset($_POST['display']));
{
// post form data and disply
}
?>
答案 1 :(得分:-1)
问题是*
和GetJSONFromSelectedSubreddit
方法在LoadNewMemes
方法中被称为两个“并行”协程。
如果您不需要“异步”运行协程,您可以通过它进行枚举:
GetNewMemes