[{"data":1,"prerenderedAt":4164},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Fdocumentation\u002Ftutorials\u002Fdialogue-system-for-unity":94},[4],{"title":5,"path":6,"stem":7,"children":8},"LoreHub Dialogue System","\u002Fdocumentation","1.documentation\u002F0.index",[9,10,28,37],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13,"children":14},"","\u002Fdocumentation\u002Fintroduction","1.documentation\u002F1.introduction\u002F0.index",[15,16,20,24],{"title":11,"path":12,"stem":13},{"title":17,"path":18,"stem":19},"Dialogue Schema","\u002Fdocumentation\u002Fintroduction\u002Fdialogue-system","1.documentation\u002F1.introduction\u002F1.dialogue-system",{"title":21,"path":22,"stem":23},"Concept","\u002Fdocumentation\u002Fintroduction\u002Fconcept","1.documentation\u002F1.introduction\u002F2.concept",{"title":25,"path":26,"stem":27},"Examples","\u002Fdocumentation\u002Fintroduction\u002Fexamples","1.documentation\u002F1.introduction\u002F3.examples",{"title":11,"path":29,"stem":30,"children":31},"\u002Fdocumentation\u002Ftutorials","1.documentation\u002F2.Tutorials\u002F0.index",[32,33],{"title":11,"path":29,"stem":30},{"title":34,"path":35,"stem":36},"Dialogue System for Unity","\u002Fdocumentation\u002Ftutorials\u002Fdialogue-system-for-unity","1.documentation\u002F2.Tutorials\u002F1.dialogue-system-for-Unity",{"title":11,"path":38,"stem":39,"children":40},"\u002Fdocumentation\u002Fdialogue-schema-api","1.documentation\u002F3.Dialogue-Schema-API\u002F0.index",[41,42,46,50,54,58,62,66,70,74,78,82,86,90],{"title":11,"path":38,"stem":39},{"title":43,"path":44,"stem":45},"Export Schema v.1","\u002Fdocumentation\u002Fdialogue-schema-api\u002Fexport-schema-v1","1.documentation\u002F3.Dialogue-Schema-API\u002F1.export-schema-v1",{"title":47,"path":48,"stem":49},"Export Schema v.2","\u002Fdocumentation\u002Fdialogue-schema-api\u002Fexport-schema-v2","1.documentation\u002F3.Dialogue-Schema-API\u002F1.export-schema-v2",{"title":51,"path":52,"stem":53},"Document v.1","\u002Fdocumentation\u002Fdialogue-schema-api\u002Fdocument-v1","1.documentation\u002F3.Dialogue-Schema-API\u002F2.document-v1",{"title":55,"path":56,"stem":57},"Dialogue v.1","\u002Fdocumentation\u002Fdialogue-schema-api\u002Fdialogue-v1","1.documentation\u002F3.Dialogue-Schema-API\u002F3.dialogue-v1",{"title":59,"path":60,"stem":61},"Dialogue v.2","\u002Fdocumentation\u002Fdialogue-schema-api\u002Fdialogue-v2","1.documentation\u002F3.Dialogue-Schema-API\u002F3.dialogue-v2",{"title":63,"path":64,"stem":65},"Dialogue Node v.1","\u002Fdocumentation\u002Fdialogue-schema-api\u002Fdialogue-node-v1","1.documentation\u002F3.Dialogue-Schema-API\u002F4.dialogue-node-v1",{"title":67,"path":68,"stem":69},"Dialogue Node v.2","\u002Fdocumentation\u002Fdialogue-schema-api\u002Fdialogue-node-v2","1.documentation\u002F3.Dialogue-Schema-API\u002F4.dialogue-node-v2",{"title":71,"path":72,"stem":73},"Dialogue Node Option v.1","\u002Fdocumentation\u002Fdialogue-schema-api\u002Fdialogue-node-option-v1","1.documentation\u002F3.Dialogue-Schema-API\u002F5.dialogue-node-option-v1",{"title":75,"path":76,"stem":77},"Dialogue Node Option v.2","\u002Fdocumentation\u002Fdialogue-schema-api\u002Fdialogue-node-option-v2","1.documentation\u002F3.Dialogue-Schema-API\u002F5.dialogue-node-option-v2",{"title":79,"path":80,"stem":81},"Variable v.1","\u002Fdocumentation\u002Fdialogue-schema-api\u002Fvariable-v1","1.documentation\u002F3.Dialogue-Schema-API\u002F6.variable-v1",{"title":83,"path":84,"stem":85},"Meta Schema v.1","\u002Fdocumentation\u002Fdialogue-schema-api\u002Fmeta-schema-v1","1.documentation\u002F3.Dialogue-Schema-API\u002F7.meta-schema-v1",{"title":87,"path":88,"stem":89},"Content Block v.1","\u002Fdocumentation\u002Fdialogue-schema-api\u002Fcontent-block-v1","1.documentation\u002F3.Dialogue-Schema-API\u002F8.content-block-v1",{"title":91,"path":92,"stem":93},"Link v.1","\u002Fdocumentation\u002Fdialogue-schema-api\u002Flink-v1","1.documentation\u002F3.Dialogue-Schema-API\u002F9.link-v1",{"id":95,"title":34,"body":96,"description":4159,"extension":4160,"meta":4161,"navigation":394,"path":35,"seo":4162,"stem":36,"__hash__":4163},"docs\u002F1.documentation\u002F2.Tutorials\u002F1.dialogue-system-for-Unity.md",{"type":97,"value":98,"toc":4147},"minimark",[99,103,115,118,123,129,138,141,145,149,153,169,194,197,202,205,210,213,218,221,230,246,259,270,283,288,856,859,1265,1268,1858,1861,1868,3297,3301,3306,4143],[100,101,34],"h1",{"id":102},"dialogue-system-for-unity",[104,105,106,107,114],"p",{},"LoreHub's Dialogue System is a headless system, so you can use it with any game engine. In this tutorial you will learn how you can implement Dialogue Player in Unity. You can find the source code on ",[108,109,113],"a",{"href":110,"rel":111},"https:\u002F\u002Fgithub.com\u002Flore-hub-app\u002Funity-example",[112],"nofollow","GitHub",". You are welcome to improve this code.",[104,116,117],{},"This is just an example implementation it could be done differently but it will help you to understand the core concept of the schema.",[119,120,122],"h2",{"id":121},"workflow","Workflow",[124,125],"img",{"src":126,"alt":127,"width":128},"\u002Fimages\u002Fdocs\u002Florehub-json-workflow.png","Dialogue System Workflow",1000,[104,130,131,132,137],{},"First, you need to build dialogue using ",[108,133,136],{"href":134,"target":135},"https:\u002F\u002Fapp.lorehub.app\u002F","_blank","LoreHub",". As soon as you build a branching dialogue, you can export it into JSON schema. The LoreHub's Dialogue System JSON schema is strongly typed and versioned and you can read API documentation on this page.",[104,139,140],{},"Before you can import schema to Unity you need to implement Dialogue Player that is compatible with JSON Schema. This tutorial will help you to do it.",[124,142],{"src":143,"alt":144,"width":128},"\u002Fimages\u002Fdocs\u002Florehub-export.png","LoreHub Export Json",[119,146,148],{"id":147},"implement-player-for-branching-dialogue","Implement Player for Branching Dialogue",[124,150],{"src":151,"alt":152,"width":128},"\u002Fimages\u002Fdocs\u002Fbranching-schema.png","Branching Dialogue Schema",[104,154,155,156,160,161,164,165,168],{},"This is a simple visualization of the branching dialogue schema. Every dialogue consists of ",[157,158,159],"code",{},"Dialogue Node",", ",[157,162,163],{},"Dialogue Option"," and ",[157,166,167],{},"DialogueLink"," that connects:",[170,171,172,180,186],"ul",{},[173,174,175,177,178],"li",{},[157,176,159],{}," to ",[157,179,159],{},[173,181,182,177,184],{},[157,183,163],{},[157,185,159],{},[173,187,188,177,191,193],{},[157,189,190],{},"Dialogue",[157,192,159],{}," - this is start of the Dialogue.",[104,195,196],{},"This is the folder structure of our project:",[124,198],{"src":199,"alt":200,"width":201},"\u002Fimages\u002Fdocs\u002Funity-folder-structure.png","Unity Folder Structure",300,[104,203,204],{},"It contains a LoreHub folder for all code that is related to the Dialogue System, a UI folder for UI-related scripts, a Scenes folder for Unity Scenes, and TextMesh Pro for working with text.",[206,207,209],"h3",{"id":208},"create-basic-dialogues-entities","Create Basic Dialogue's Entities",[104,211,212],{},"First, we need to create each entity to represent different parts of the dialogue. They should be created using the default way in Unity: Right Mouse Button - Create - C# Script.",[124,214],{"src":215,"alt":216,"width":217},"\u002Fimages\u002Fdocs\u002Funity-basic-entities.png","Unity Folder Structure Dialogue System",600,[104,219,220],{},"What is the purpose of each one?",[104,222,223,229],{},[108,224,226],{"href":225},"#dialogue",[227,228,190],"strong",{}," - This is the main script that will handle dialogue import and it will contain collections of each entity.",[104,231,232,238,239,164,242,245],{},[108,233,235],{"href":234},"#dialogue-player",[227,236,237],{},"DialoguePlayer"," - Will handle playing the generated dialogue. It will render ",[157,240,241],{},"DialogueNode",[157,243,244],{},"DialogueOption",".",[104,247,248,253,254,164,256,258],{},[108,249,251],{"href":250},"#dialogue-node",[227,252,241],{}," - Object that will contain all related to Dialogue Node information.  Like content of the node, node ",[157,255,244],{},[157,257,167],{}," coming from it.",[104,260,261,266,267,269],{},[108,262,264],{"href":263},"#dialogue-option",[227,265,244],{}," - Options contain the text on the option and ",[157,268,167],{}," that are coming from it.",[104,271,272,277,278,164,280,282],{},[108,273,275],{"href":274},"#dialogue-link",[227,276,167],{}," - Links have references to ",[157,279,241],{},[157,281,244],{}," that are connected.",[284,285,287],"h4",{"id":286},"dialogue-link","Dialogue Link",[289,290,294],"pre",{"className":291,"code":292,"language":293,"meta":11,"style":11},"language-csharp shiki shiki-themes dracula-soft","using UnityEngine;\nusing System.Collections;\nusing UnityEditor;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing System.Collections.Generic;\n\npublic class DialogueLink : MonoBehaviour\n{\n  \u002F\u002F Id of the Dialogue Link.\n  public string Id;\n  \u002F\u002F From what object this Link is.\n  public string FromId;\n  \u002F\u002F Where this link leads to.\n  public string ToId;\n\n  \u002F\u002F Factory method to create this Link from JSON object.\n  public static DialogueLink Create(JObject link, GameObject container)\n  {\n    \u002F\u002F Create Game Object and Assign this Script to it.\n    GameObject goLink = new GameObject();\n    goLink.transform.SetParent(container.transform);\n    goLink.AddComponent\u003CDialogueLink>();\n\n    \u002F\u002F Set all values from JSON. \n    DialogueLink dialogueLinkScript = goLink.GetComponent(typeof(DialogueLink)) as DialogueLink;\n    dialogueLinkScript.Id = (string)link[\"id\"];\n    dialogueLinkScript.FromId = (string)link[\"from\"];\n    dialogueLinkScript.ToId = (string)link[\"to\"];\n\n    \u002F\u002F Set GameObject's name to human readable.\n    goLink.name = dialogueLinkScript.GetName();\n\n    return dialogueLinkScript;\n  }\n\n  \u002F\u002F Generate human readable name.\n  public string GetName()\n  {\n    string[] split = this.Id.Split(\"\u002F\");\n    return \"link\u002F\" + split[split.Length - 1];\n  }\n\n}\n","csharp",[157,295,296,313,328,338,353,371,389,396,415,421,428,440,446,456,462,472,477,483,518,524,530,551,563,580,585,591,627,657,680,703,708,714,730,735,744,750,755,761,774,779,812,840,845,850],{"__ignoreMap":11},[297,298,301,305,309],"span",{"class":299,"line":300},"line",1,[297,302,304],{"class":303},"suBnA","using",[297,306,308],{"class":307},"sZqyT"," UnityEngine",[297,310,312],{"class":311},"sptrb",";\n",[297,314,316,318,321,323,326],{"class":299,"line":315},2,[297,317,304],{"class":303},[297,319,320],{"class":307}," System",[297,322,245],{"class":311},[297,324,325],{"class":307},"Collections",[297,327,312],{"class":311},[297,329,331,333,336],{"class":299,"line":330},3,[297,332,304],{"class":303},[297,334,335],{"class":307}," UnityEditor",[297,337,312],{"class":311},[297,339,341,343,346,348,351],{"class":299,"line":340},4,[297,342,304],{"class":303},[297,344,345],{"class":307}," Newtonsoft",[297,347,245],{"class":311},[297,349,350],{"class":307},"Json",[297,352,312],{"class":311},[297,354,356,358,360,362,364,366,369],{"class":299,"line":355},5,[297,357,304],{"class":303},[297,359,345],{"class":307},[297,361,245],{"class":311},[297,363,350],{"class":307},[297,365,245],{"class":311},[297,367,368],{"class":307},"Linq",[297,370,312],{"class":311},[297,372,374,376,378,380,382,384,387],{"class":299,"line":373},6,[297,375,304],{"class":303},[297,377,320],{"class":307},[297,379,245],{"class":311},[297,381,325],{"class":307},[297,383,245],{"class":311},[297,385,386],{"class":307},"Generic",[297,388,312],{"class":311},[297,390,392],{"class":299,"line":391},7,[297,393,395],{"emptyLinePlaceholder":394},true,"\n",[297,397,399,402,405,409,412],{"class":299,"line":398},8,[297,400,401],{"class":303},"public",[297,403,404],{"class":303}," class",[297,406,408],{"class":407},"si9D1"," DialogueLink",[297,410,411],{"class":311}," : ",[297,413,414],{"class":307},"MonoBehaviour\n",[297,416,418],{"class":299,"line":417},9,[297,419,420],{"class":311},"{\n",[297,422,424],{"class":299,"line":423},10,[297,425,427],{"class":426},"szyY_","  \u002F\u002F Id of the Dialogue Link.\n",[297,429,431,434,437],{"class":299,"line":430},11,[297,432,433],{"class":303},"  public",[297,435,436],{"class":303}," string",[297,438,439],{"class":311}," Id;\n",[297,441,443],{"class":299,"line":442},12,[297,444,445],{"class":426},"  \u002F\u002F From what object this Link is.\n",[297,447,449,451,453],{"class":299,"line":448},13,[297,450,433],{"class":303},[297,452,436],{"class":303},[297,454,455],{"class":311}," FromId;\n",[297,457,459],{"class":299,"line":458},14,[297,460,461],{"class":426},"  \u002F\u002F Where this link leads to.\n",[297,463,465,467,469],{"class":299,"line":464},15,[297,466,433],{"class":303},[297,468,436],{"class":303},[297,470,471],{"class":311}," ToId;\n",[297,473,475],{"class":299,"line":474},16,[297,476,395],{"emptyLinePlaceholder":394},[297,478,480],{"class":299,"line":479},17,[297,481,482],{"class":426},"  \u002F\u002F Factory method to create this Link from JSON object.\n",[297,484,486,488,491,493,497,500,503,507,509,512,515],{"class":299,"line":485},18,[297,487,433],{"class":303},[297,489,490],{"class":303}," static",[297,492,408],{"class":307},[297,494,496],{"class":495},"sIY5v"," Create",[297,498,499],{"class":311},"(",[297,501,502],{"class":307},"JObject",[297,504,506],{"class":505},"sGEwX"," link",[297,508,160],{"class":311},[297,510,511],{"class":307},"GameObject",[297,513,514],{"class":505}," container",[297,516,517],{"class":311},")\n",[297,519,521],{"class":299,"line":520},19,[297,522,523],{"class":311},"  {\n",[297,525,527],{"class":299,"line":526},20,[297,528,529],{"class":426},"    \u002F\u002F Create Game Object and Assign this Script to it.\n",[297,531,533,536,539,542,545,548],{"class":299,"line":532},21,[297,534,535],{"class":307},"    GameObject",[297,537,538],{"class":311}," goLink ",[297,540,541],{"class":303},"=",[297,543,544],{"class":303}," new",[297,546,547],{"class":307}," GameObject",[297,549,550],{"class":311},"();\n",[297,552,554,557,560],{"class":299,"line":553},22,[297,555,556],{"class":311},"    goLink.transform.",[297,558,559],{"class":495},"SetParent",[297,561,562],{"class":311},"(container.transform);\n",[297,564,566,569,572,575,577],{"class":299,"line":565},23,[297,567,568],{"class":311},"    goLink.",[297,570,571],{"class":495},"AddComponent",[297,573,574],{"class":311},"\u003C",[297,576,167],{"class":307},[297,578,579],{"class":311},">();\n",[297,581,583],{"class":299,"line":582},24,[297,584,395],{"emptyLinePlaceholder":394},[297,586,588],{"class":299,"line":587},25,[297,589,590],{"class":426},"    \u002F\u002F Set all values from JSON. \n",[297,592,594,597,600,602,605,608,610,613,615,617,620,623,625],{"class":299,"line":593},26,[297,595,596],{"class":307},"    DialogueLink",[297,598,599],{"class":311}," dialogueLinkScript ",[297,601,541],{"class":303},[297,603,604],{"class":311}," goLink.",[297,606,607],{"class":495},"GetComponent",[297,609,499],{"class":311},[297,611,612],{"class":303},"typeof",[297,614,499],{"class":311},[297,616,167],{"class":307},[297,618,619],{"class":311},")) ",[297,621,622],{"class":303},"as",[297,624,408],{"class":307},[297,626,312],{"class":311},[297,628,630,633,635,638,641,644,648,652,654],{"class":299,"line":629},27,[297,631,632],{"class":311},"    dialogueLinkScript.Id ",[297,634,541],{"class":303},[297,636,637],{"class":311}," (",[297,639,640],{"class":303},"string",[297,642,643],{"class":311},")link[",[297,645,647],{"class":646},"sWivA","\"",[297,649,651],{"class":650},"sBh-q","id",[297,653,647],{"class":646},[297,655,656],{"class":311},"];\n",[297,658,660,663,665,667,669,671,673,676,678],{"class":299,"line":659},28,[297,661,662],{"class":311},"    dialogueLinkScript.FromId ",[297,664,541],{"class":303},[297,666,637],{"class":311},[297,668,640],{"class":303},[297,670,643],{"class":311},[297,672,647],{"class":646},[297,674,675],{"class":650},"from",[297,677,647],{"class":646},[297,679,656],{"class":311},[297,681,683,686,688,690,692,694,696,699,701],{"class":299,"line":682},29,[297,684,685],{"class":311},"    dialogueLinkScript.ToId ",[297,687,541],{"class":303},[297,689,637],{"class":311},[297,691,640],{"class":303},[297,693,643],{"class":311},[297,695,647],{"class":646},[297,697,698],{"class":650},"to",[297,700,647],{"class":646},[297,702,656],{"class":311},[297,704,706],{"class":299,"line":705},30,[297,707,395],{"emptyLinePlaceholder":394},[297,709,711],{"class":299,"line":710},31,[297,712,713],{"class":426},"    \u002F\u002F Set GameObject's name to human readable.\n",[297,715,717,720,722,725,728],{"class":299,"line":716},32,[297,718,719],{"class":311},"    goLink.name ",[297,721,541],{"class":303},[297,723,724],{"class":311}," dialogueLinkScript.",[297,726,727],{"class":495},"GetName",[297,729,550],{"class":311},[297,731,733],{"class":299,"line":732},33,[297,734,395],{"emptyLinePlaceholder":394},[297,736,738,741],{"class":299,"line":737},34,[297,739,740],{"class":303},"    return",[297,742,743],{"class":311}," dialogueLinkScript;\n",[297,745,747],{"class":299,"line":746},35,[297,748,749],{"class":311},"  }\n",[297,751,753],{"class":299,"line":752},36,[297,754,395],{"emptyLinePlaceholder":394},[297,756,758],{"class":299,"line":757},37,[297,759,760],{"class":426},"  \u002F\u002F Generate human readable name.\n",[297,762,764,766,768,771],{"class":299,"line":763},38,[297,765,433],{"class":303},[297,767,436],{"class":303},[297,769,770],{"class":495}," GetName",[297,772,773],{"class":311},"()\n",[297,775,777],{"class":299,"line":776},39,[297,778,523],{"class":311},[297,780,782,785,788,790,794,797,800,802,804,807,809],{"class":299,"line":781},40,[297,783,784],{"class":303},"    string",[297,786,787],{"class":311},"[] split ",[297,789,541],{"class":303},[297,791,793],{"class":792},"szMl8"," this",[297,795,796],{"class":311},".Id.",[297,798,799],{"class":495},"Split",[297,801,499],{"class":311},[297,803,647],{"class":646},[297,805,806],{"class":650},"\u002F",[297,808,647],{"class":646},[297,810,811],{"class":311},");\n",[297,813,815,817,820,823,825,828,831,834,838],{"class":299,"line":814},41,[297,816,740],{"class":303},[297,818,819],{"class":646}," \"",[297,821,822],{"class":650},"link\u002F",[297,824,647],{"class":646},[297,826,827],{"class":303}," +",[297,829,830],{"class":311}," split[split.Length ",[297,832,833],{"class":303},"-",[297,835,837],{"class":836},"sZmUQ"," 1",[297,839,656],{"class":311},[297,841,843],{"class":299,"line":842},42,[297,844,749],{"class":311},[297,846,848],{"class":299,"line":847},43,[297,849,395],{"emptyLinePlaceholder":394},[297,851,853],{"class":299,"line":852},44,[297,854,855],{"class":311},"}\n",[284,857,163],{"id":858},"dialogue-option",[289,860,862],{"className":291,"code":861,"language":293,"meta":11,"style":11},"using UnityEngine;\nusing System.Collections;\nusing UnityEditor;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing System.Collections.Generic;\n\npublic class DialogueOption : MonoBehaviour\n{\n  \u002F\u002F Id of the Dialogue Option.\n  public string Id;\n  \u002F\u002F Text on the Dialogue Options.\n  public string Text;\n  \u002F\u002F Option's link from it.\n  public DialogueLink LinksFromMe = null;\n\n  \u002F\u002F Factory method to create this Dialogue Option from JSON object.\n  public static DialogueOption Create(JObject option)\n  {\n    \u002F\u002F Create Game Object and assign Dialogue Option to id.\n    GameObject goOption = new GameObject();\n    goOption.AddComponent\u003CDialogueOption>();\n\n    \u002F\u002F Set all values from JSON. \n    DialogueOption dialogueOptionScript = goOption.GetComponent(typeof(DialogueOption)) as DialogueOption;\n    dialogueOptionScript.Id = (string)option[\"id\"];\n    dialogueOptionScript.Text = (string)option[\"text\"];\n\n    \u002F\u002F Set GameObject's name to human readable.\n    goOption.name = dialogueOptionScript.GetName();\n\n    return dialogueOptionScript;\n  }\n\n  \u002F\u002F Generate human readable name.\n  public string GetName()\n  {\n    string[] split = this.Id.Split(\"\u002F\");\n    return \"option\u002F\" + split[split.Length - 1];\n  }\n}\n",[157,863,864,872,884,892,904,920,936,940,953,957,962,970,975,984,989,1005,1009,1014,1033,1037,1042,1057,1070,1074,1078,1109,1131,1153,1157,1161,1175,1179,1186,1190,1194,1198,1208,1212,1236,1257,1261],{"__ignoreMap":11},[297,865,866,868,870],{"class":299,"line":300},[297,867,304],{"class":303},[297,869,308],{"class":307},[297,871,312],{"class":311},[297,873,874,876,878,880,882],{"class":299,"line":315},[297,875,304],{"class":303},[297,877,320],{"class":307},[297,879,245],{"class":311},[297,881,325],{"class":307},[297,883,312],{"class":311},[297,885,886,888,890],{"class":299,"line":330},[297,887,304],{"class":303},[297,889,335],{"class":307},[297,891,312],{"class":311},[297,893,894,896,898,900,902],{"class":299,"line":340},[297,895,304],{"class":303},[297,897,345],{"class":307},[297,899,245],{"class":311},[297,901,350],{"class":307},[297,903,312],{"class":311},[297,905,906,908,910,912,914,916,918],{"class":299,"line":355},[297,907,304],{"class":303},[297,909,345],{"class":307},[297,911,245],{"class":311},[297,913,350],{"class":307},[297,915,245],{"class":311},[297,917,368],{"class":307},[297,919,312],{"class":311},[297,921,922,924,926,928,930,932,934],{"class":299,"line":373},[297,923,304],{"class":303},[297,925,320],{"class":307},[297,927,245],{"class":311},[297,929,325],{"class":307},[297,931,245],{"class":311},[297,933,386],{"class":307},[297,935,312],{"class":311},[297,937,938],{"class":299,"line":391},[297,939,395],{"emptyLinePlaceholder":394},[297,941,942,944,946,949,951],{"class":299,"line":398},[297,943,401],{"class":303},[297,945,404],{"class":303},[297,947,948],{"class":407}," DialogueOption",[297,950,411],{"class":311},[297,952,414],{"class":307},[297,954,955],{"class":299,"line":417},[297,956,420],{"class":311},[297,958,959],{"class":299,"line":423},[297,960,961],{"class":426},"  \u002F\u002F Id of the Dialogue Option.\n",[297,963,964,966,968],{"class":299,"line":430},[297,965,433],{"class":303},[297,967,436],{"class":303},[297,969,439],{"class":311},[297,971,972],{"class":299,"line":442},[297,973,974],{"class":426},"  \u002F\u002F Text on the Dialogue Options.\n",[297,976,977,979,981],{"class":299,"line":448},[297,978,433],{"class":303},[297,980,436],{"class":303},[297,982,983],{"class":311}," Text;\n",[297,985,986],{"class":299,"line":458},[297,987,988],{"class":426},"  \u002F\u002F Option's link from it.\n",[297,990,991,993,995,998,1000,1003],{"class":299,"line":464},[297,992,433],{"class":303},[297,994,408],{"class":307},[297,996,997],{"class":311}," LinksFromMe ",[297,999,541],{"class":303},[297,1001,1002],{"class":836}," null",[297,1004,312],{"class":311},[297,1006,1007],{"class":299,"line":474},[297,1008,395],{"emptyLinePlaceholder":394},[297,1010,1011],{"class":299,"line":479},[297,1012,1013],{"class":426},"  \u002F\u002F Factory method to create this Dialogue Option from JSON object.\n",[297,1015,1016,1018,1020,1022,1024,1026,1028,1031],{"class":299,"line":485},[297,1017,433],{"class":303},[297,1019,490],{"class":303},[297,1021,948],{"class":307},[297,1023,496],{"class":495},[297,1025,499],{"class":311},[297,1027,502],{"class":307},[297,1029,1030],{"class":505}," option",[297,1032,517],{"class":311},[297,1034,1035],{"class":299,"line":520},[297,1036,523],{"class":311},[297,1038,1039],{"class":299,"line":526},[297,1040,1041],{"class":426},"    \u002F\u002F Create Game Object and assign Dialogue Option to id.\n",[297,1043,1044,1046,1049,1051,1053,1055],{"class":299,"line":532},[297,1045,535],{"class":307},[297,1047,1048],{"class":311}," goOption ",[297,1050,541],{"class":303},[297,1052,544],{"class":303},[297,1054,547],{"class":307},[297,1056,550],{"class":311},[297,1058,1059,1062,1064,1066,1068],{"class":299,"line":553},[297,1060,1061],{"class":311},"    goOption.",[297,1063,571],{"class":495},[297,1065,574],{"class":311},[297,1067,244],{"class":307},[297,1069,579],{"class":311},[297,1071,1072],{"class":299,"line":565},[297,1073,395],{"emptyLinePlaceholder":394},[297,1075,1076],{"class":299,"line":582},[297,1077,590],{"class":426},[297,1079,1080,1083,1086,1088,1091,1093,1095,1097,1099,1101,1103,1105,1107],{"class":299,"line":587},[297,1081,1082],{"class":307},"    DialogueOption",[297,1084,1085],{"class":311}," dialogueOptionScript ",[297,1087,541],{"class":303},[297,1089,1090],{"class":311}," goOption.",[297,1092,607],{"class":495},[297,1094,499],{"class":311},[297,1096,612],{"class":303},[297,1098,499],{"class":311},[297,1100,244],{"class":307},[297,1102,619],{"class":311},[297,1104,622],{"class":303},[297,1106,948],{"class":307},[297,1108,312],{"class":311},[297,1110,1111,1114,1116,1118,1120,1123,1125,1127,1129],{"class":299,"line":593},[297,1112,1113],{"class":311},"    dialogueOptionScript.Id ",[297,1115,541],{"class":303},[297,1117,637],{"class":311},[297,1119,640],{"class":303},[297,1121,1122],{"class":311},")option[",[297,1124,647],{"class":646},[297,1126,651],{"class":650},[297,1128,647],{"class":646},[297,1130,656],{"class":311},[297,1132,1133,1136,1138,1140,1142,1144,1146,1149,1151],{"class":299,"line":629},[297,1134,1135],{"class":311},"    dialogueOptionScript.Text ",[297,1137,541],{"class":303},[297,1139,637],{"class":311},[297,1141,640],{"class":303},[297,1143,1122],{"class":311},[297,1145,647],{"class":646},[297,1147,1148],{"class":650},"text",[297,1150,647],{"class":646},[297,1152,656],{"class":311},[297,1154,1155],{"class":299,"line":659},[297,1156,395],{"emptyLinePlaceholder":394},[297,1158,1159],{"class":299,"line":682},[297,1160,713],{"class":426},[297,1162,1163,1166,1168,1171,1173],{"class":299,"line":705},[297,1164,1165],{"class":311},"    goOption.name ",[297,1167,541],{"class":303},[297,1169,1170],{"class":311}," dialogueOptionScript.",[297,1172,727],{"class":495},[297,1174,550],{"class":311},[297,1176,1177],{"class":299,"line":710},[297,1178,395],{"emptyLinePlaceholder":394},[297,1180,1181,1183],{"class":299,"line":716},[297,1182,740],{"class":303},[297,1184,1185],{"class":311}," dialogueOptionScript;\n",[297,1187,1188],{"class":299,"line":732},[297,1189,749],{"class":311},[297,1191,1192],{"class":299,"line":737},[297,1193,395],{"emptyLinePlaceholder":394},[297,1195,1196],{"class":299,"line":746},[297,1197,760],{"class":426},[297,1199,1200,1202,1204,1206],{"class":299,"line":752},[297,1201,433],{"class":303},[297,1203,436],{"class":303},[297,1205,770],{"class":495},[297,1207,773],{"class":311},[297,1209,1210],{"class":299,"line":757},[297,1211,523],{"class":311},[297,1213,1214,1216,1218,1220,1222,1224,1226,1228,1230,1232,1234],{"class":299,"line":763},[297,1215,784],{"class":303},[297,1217,787],{"class":311},[297,1219,541],{"class":303},[297,1221,793],{"class":792},[297,1223,796],{"class":311},[297,1225,799],{"class":495},[297,1227,499],{"class":311},[297,1229,647],{"class":646},[297,1231,806],{"class":650},[297,1233,647],{"class":646},[297,1235,811],{"class":311},[297,1237,1238,1240,1242,1245,1247,1249,1251,1253,1255],{"class":299,"line":776},[297,1239,740],{"class":303},[297,1241,819],{"class":646},[297,1243,1244],{"class":650},"option\u002F",[297,1246,647],{"class":646},[297,1248,827],{"class":303},[297,1250,830],{"class":311},[297,1252,833],{"class":303},[297,1254,837],{"class":836},[297,1256,656],{"class":311},[297,1258,1259],{"class":299,"line":781},[297,1260,749],{"class":311},[297,1262,1263],{"class":299,"line":814},[297,1264,855],{"class":311},[284,1266,159],{"id":1267},"dialogue-node",[289,1269,1271],{"className":291,"code":1270,"language":293,"meta":11,"style":11},"using UnityEngine;\nusing System.Collections;\nusing UnityEditor;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing System.Collections.Generic;\n\npublic class DialogueNode : MonoBehaviour\n{\n  \u002F\u002F Id of the Dialogue Node.\n  public string Id;\n  \u002F\u002F Option's link from it.\n  public DialogueLink LinksFromMe = null;\n  \u002F\u002F All options for this Dialogue Node.\n  public List\u003CDialogueOption> Options = new List\u003CDialogueOption>();\n  \u002F\u002F All options' Ids for this Dialogue Node.\n  public List\u003Cstring> OptionIds = new List\u003Cstring>();\n\n  \u002F\u002F Factory method to create this Dialogue Node from JSON object.\n  public static DialogueNode Create(JObject node, GameObject container)\n  {\n    \u002F\u002F Create GameObject and assign script.\n    GameObject goNode = new GameObject();\n    goNode.transform.SetParent(container.transform);\n    goNode.AddComponent\u003CDialogueNode>();\n\n    \u002F\u002F Create Node from JSON object.\n    DialogueNode dialogueNodeScript = goNode.GetComponent(typeof(DialogueNode)) as DialogueNode;\n    dialogueNodeScript.Id = (string)node[\"id\"];\n\n    \u002F\u002F Add Options' Ids to it.\n    JArray optionsIds = (JArray)node[\"optionsIds\"];\n    foreach (string id in optionsIds)\n    {\n      dialogueNodeScript.OptionIds.Add(id);\n    }\n\n    \u002F\u002F Set friendly name.\n    goNode.name = dialogueNodeScript.GetName();\n    return dialogueNodeScript;\n  }\n\n  \u002F\u002F Generate human readable name.\n  public string GetName()\n  {\n    string[] split = this.Id.Split(\"\u002F\");\n    return \"node\u002F\" + split[split.Length - 1];\n  }\n\n  \u002F\u002F Add option to Dialogue Node\n  public void AddOption(DialogueOption option)\n  {\n    option.gameObject.transform.SetParent(this.gameObject.transform);\n    this.Options.Add(option);\n  }\n}\n",[157,1272,1273,1281,1293,1301,1313,1329,1345,1349,1362,1366,1371,1379,1383,1397,1402,1428,1433,1458,1462,1467,1492,1496,1501,1516,1525,1538,1542,1547,1578,1600,1604,1609,1635,1653,1658,1669,1674,1678,1683,1697,1704,1708,1712,1716,1726,1731,1756,1778,1783,1788,1794,1813,1818,1834,1848,1853],{"__ignoreMap":11},[297,1274,1275,1277,1279],{"class":299,"line":300},[297,1276,304],{"class":303},[297,1278,308],{"class":307},[297,1280,312],{"class":311},[297,1282,1283,1285,1287,1289,1291],{"class":299,"line":315},[297,1284,304],{"class":303},[297,1286,320],{"class":307},[297,1288,245],{"class":311},[297,1290,325],{"class":307},[297,1292,312],{"class":311},[297,1294,1295,1297,1299],{"class":299,"line":330},[297,1296,304],{"class":303},[297,1298,335],{"class":307},[297,1300,312],{"class":311},[297,1302,1303,1305,1307,1309,1311],{"class":299,"line":340},[297,1304,304],{"class":303},[297,1306,345],{"class":307},[297,1308,245],{"class":311},[297,1310,350],{"class":307},[297,1312,312],{"class":311},[297,1314,1315,1317,1319,1321,1323,1325,1327],{"class":299,"line":355},[297,1316,304],{"class":303},[297,1318,345],{"class":307},[297,1320,245],{"class":311},[297,1322,350],{"class":307},[297,1324,245],{"class":311},[297,1326,368],{"class":307},[297,1328,312],{"class":311},[297,1330,1331,1333,1335,1337,1339,1341,1343],{"class":299,"line":373},[297,1332,304],{"class":303},[297,1334,320],{"class":307},[297,1336,245],{"class":311},[297,1338,325],{"class":307},[297,1340,245],{"class":311},[297,1342,386],{"class":307},[297,1344,312],{"class":311},[297,1346,1347],{"class":299,"line":391},[297,1348,395],{"emptyLinePlaceholder":394},[297,1350,1351,1353,1355,1358,1360],{"class":299,"line":398},[297,1352,401],{"class":303},[297,1354,404],{"class":303},[297,1356,1357],{"class":407}," DialogueNode",[297,1359,411],{"class":311},[297,1361,414],{"class":307},[297,1363,1364],{"class":299,"line":417},[297,1365,420],{"class":311},[297,1367,1368],{"class":299,"line":423},[297,1369,1370],{"class":426},"  \u002F\u002F Id of the Dialogue Node.\n",[297,1372,1373,1375,1377],{"class":299,"line":430},[297,1374,433],{"class":303},[297,1376,436],{"class":303},[297,1378,439],{"class":311},[297,1380,1381],{"class":299,"line":442},[297,1382,988],{"class":426},[297,1384,1385,1387,1389,1391,1393,1395],{"class":299,"line":448},[297,1386,433],{"class":303},[297,1388,408],{"class":307},[297,1390,997],{"class":311},[297,1392,541],{"class":303},[297,1394,1002],{"class":836},[297,1396,312],{"class":311},[297,1398,1399],{"class":299,"line":458},[297,1400,1401],{"class":426},"  \u002F\u002F All options for this Dialogue Node.\n",[297,1403,1404,1406,1409,1411,1413,1416,1418,1420,1422,1424,1426],{"class":299,"line":464},[297,1405,433],{"class":303},[297,1407,1408],{"class":307}," List",[297,1410,574],{"class":311},[297,1412,244],{"class":307},[297,1414,1415],{"class":311},"> Options ",[297,1417,541],{"class":303},[297,1419,544],{"class":303},[297,1421,1408],{"class":307},[297,1423,574],{"class":311},[297,1425,244],{"class":307},[297,1427,579],{"class":311},[297,1429,1430],{"class":299,"line":474},[297,1431,1432],{"class":426},"  \u002F\u002F All options' Ids for this Dialogue Node.\n",[297,1434,1435,1437,1439,1441,1443,1446,1448,1450,1452,1454,1456],{"class":299,"line":479},[297,1436,433],{"class":303},[297,1438,1408],{"class":307},[297,1440,574],{"class":311},[297,1442,640],{"class":303},[297,1444,1445],{"class":311},"> OptionIds ",[297,1447,541],{"class":303},[297,1449,544],{"class":303},[297,1451,1408],{"class":307},[297,1453,574],{"class":311},[297,1455,640],{"class":303},[297,1457,579],{"class":311},[297,1459,1460],{"class":299,"line":485},[297,1461,395],{"emptyLinePlaceholder":394},[297,1463,1464],{"class":299,"line":520},[297,1465,1466],{"class":426},"  \u002F\u002F Factory method to create this Dialogue Node from JSON object.\n",[297,1468,1469,1471,1473,1475,1477,1479,1481,1484,1486,1488,1490],{"class":299,"line":526},[297,1470,433],{"class":303},[297,1472,490],{"class":303},[297,1474,1357],{"class":307},[297,1476,496],{"class":495},[297,1478,499],{"class":311},[297,1480,502],{"class":307},[297,1482,1483],{"class":505}," node",[297,1485,160],{"class":311},[297,1487,511],{"class":307},[297,1489,514],{"class":505},[297,1491,517],{"class":311},[297,1493,1494],{"class":299,"line":532},[297,1495,523],{"class":311},[297,1497,1498],{"class":299,"line":553},[297,1499,1500],{"class":426},"    \u002F\u002F Create GameObject and assign script.\n",[297,1502,1503,1505,1508,1510,1512,1514],{"class":299,"line":565},[297,1504,535],{"class":307},[297,1506,1507],{"class":311}," goNode ",[297,1509,541],{"class":303},[297,1511,544],{"class":303},[297,1513,547],{"class":307},[297,1515,550],{"class":311},[297,1517,1518,1521,1523],{"class":299,"line":582},[297,1519,1520],{"class":311},"    goNode.transform.",[297,1522,559],{"class":495},[297,1524,562],{"class":311},[297,1526,1527,1530,1532,1534,1536],{"class":299,"line":587},[297,1528,1529],{"class":311},"    goNode.",[297,1531,571],{"class":495},[297,1533,574],{"class":311},[297,1535,241],{"class":307},[297,1537,579],{"class":311},[297,1539,1540],{"class":299,"line":593},[297,1541,395],{"emptyLinePlaceholder":394},[297,1543,1544],{"class":299,"line":629},[297,1545,1546],{"class":426},"    \u002F\u002F Create Node from JSON object.\n",[297,1548,1549,1552,1555,1557,1560,1562,1564,1566,1568,1570,1572,1574,1576],{"class":299,"line":659},[297,1550,1551],{"class":307},"    DialogueNode",[297,1553,1554],{"class":311}," dialogueNodeScript ",[297,1556,541],{"class":303},[297,1558,1559],{"class":311}," goNode.",[297,1561,607],{"class":495},[297,1563,499],{"class":311},[297,1565,612],{"class":303},[297,1567,499],{"class":311},[297,1569,241],{"class":307},[297,1571,619],{"class":311},[297,1573,622],{"class":303},[297,1575,1357],{"class":307},[297,1577,312],{"class":311},[297,1579,1580,1583,1585,1587,1589,1592,1594,1596,1598],{"class":299,"line":682},[297,1581,1582],{"class":311},"    dialogueNodeScript.Id ",[297,1584,541],{"class":303},[297,1586,637],{"class":311},[297,1588,640],{"class":303},[297,1590,1591],{"class":311},")node[",[297,1593,647],{"class":646},[297,1595,651],{"class":650},[297,1597,647],{"class":646},[297,1599,656],{"class":311},[297,1601,1602],{"class":299,"line":705},[297,1603,395],{"emptyLinePlaceholder":394},[297,1605,1606],{"class":299,"line":710},[297,1607,1608],{"class":426},"    \u002F\u002F Add Options' Ids to it.\n",[297,1610,1611,1614,1617,1619,1621,1624,1626,1628,1631,1633],{"class":299,"line":716},[297,1612,1613],{"class":307},"    JArray",[297,1615,1616],{"class":311}," optionsIds ",[297,1618,541],{"class":303},[297,1620,637],{"class":311},[297,1622,1623],{"class":307},"JArray",[297,1625,1591],{"class":311},[297,1627,647],{"class":646},[297,1629,1630],{"class":650},"optionsIds",[297,1632,647],{"class":646},[297,1634,656],{"class":311},[297,1636,1637,1640,1642,1644,1647,1650],{"class":299,"line":732},[297,1638,1639],{"class":303},"    foreach",[297,1641,637],{"class":311},[297,1643,640],{"class":303},[297,1645,1646],{"class":311}," id ",[297,1648,1649],{"class":303},"in",[297,1651,1652],{"class":311}," optionsIds)\n",[297,1654,1655],{"class":299,"line":737},[297,1656,1657],{"class":311},"    {\n",[297,1659,1660,1663,1666],{"class":299,"line":746},[297,1661,1662],{"class":311},"      dialogueNodeScript.OptionIds.",[297,1664,1665],{"class":495},"Add",[297,1667,1668],{"class":311},"(id);\n",[297,1670,1671],{"class":299,"line":752},[297,1672,1673],{"class":311},"    }\n",[297,1675,1676],{"class":299,"line":757},[297,1677,395],{"emptyLinePlaceholder":394},[297,1679,1680],{"class":299,"line":763},[297,1681,1682],{"class":426},"    \u002F\u002F Set friendly name.\n",[297,1684,1685,1688,1690,1693,1695],{"class":299,"line":776},[297,1686,1687],{"class":311},"    goNode.name ",[297,1689,541],{"class":303},[297,1691,1692],{"class":311}," dialogueNodeScript.",[297,1694,727],{"class":495},[297,1696,550],{"class":311},[297,1698,1699,1701],{"class":299,"line":781},[297,1700,740],{"class":303},[297,1702,1703],{"class":311}," dialogueNodeScript;\n",[297,1705,1706],{"class":299,"line":814},[297,1707,749],{"class":311},[297,1709,1710],{"class":299,"line":842},[297,1711,395],{"emptyLinePlaceholder":394},[297,1713,1714],{"class":299,"line":847},[297,1715,760],{"class":426},[297,1717,1718,1720,1722,1724],{"class":299,"line":852},[297,1719,433],{"class":303},[297,1721,436],{"class":303},[297,1723,770],{"class":495},[297,1725,773],{"class":311},[297,1727,1729],{"class":299,"line":1728},45,[297,1730,523],{"class":311},[297,1732,1734,1736,1738,1740,1742,1744,1746,1748,1750,1752,1754],{"class":299,"line":1733},46,[297,1735,784],{"class":303},[297,1737,787],{"class":311},[297,1739,541],{"class":303},[297,1741,793],{"class":792},[297,1743,796],{"class":311},[297,1745,799],{"class":495},[297,1747,499],{"class":311},[297,1749,647],{"class":646},[297,1751,806],{"class":650},[297,1753,647],{"class":646},[297,1755,811],{"class":311},[297,1757,1759,1761,1763,1766,1768,1770,1772,1774,1776],{"class":299,"line":1758},47,[297,1760,740],{"class":303},[297,1762,819],{"class":646},[297,1764,1765],{"class":650},"node\u002F",[297,1767,647],{"class":646},[297,1769,827],{"class":303},[297,1771,830],{"class":311},[297,1773,833],{"class":303},[297,1775,837],{"class":836},[297,1777,656],{"class":311},[297,1779,1781],{"class":299,"line":1780},48,[297,1782,749],{"class":311},[297,1784,1786],{"class":299,"line":1785},49,[297,1787,395],{"emptyLinePlaceholder":394},[297,1789,1791],{"class":299,"line":1790},50,[297,1792,1793],{"class":426},"  \u002F\u002F Add option to Dialogue Node\n",[297,1795,1797,1799,1802,1805,1807,1809,1811],{"class":299,"line":1796},51,[297,1798,433],{"class":303},[297,1800,1801],{"class":303}," void",[297,1803,1804],{"class":495}," AddOption",[297,1806,499],{"class":311},[297,1808,244],{"class":307},[297,1810,1030],{"class":505},[297,1812,517],{"class":311},[297,1814,1816],{"class":299,"line":1815},52,[297,1817,523],{"class":311},[297,1819,1821,1824,1826,1828,1831],{"class":299,"line":1820},53,[297,1822,1823],{"class":311},"    option.gameObject.transform.",[297,1825,559],{"class":495},[297,1827,499],{"class":311},[297,1829,1830],{"class":792},"this",[297,1832,1833],{"class":311},".gameObject.transform);\n",[297,1835,1837,1840,1843,1845],{"class":299,"line":1836},54,[297,1838,1839],{"class":792},"    this",[297,1841,1842],{"class":311},".Options.",[297,1844,1665],{"class":495},[297,1846,1847],{"class":311},"(option);\n",[297,1849,1851],{"class":299,"line":1850},55,[297,1852,749],{"class":311},[297,1854,1856],{"class":299,"line":1855},56,[297,1857,855],{"class":311},[284,1859,190],{"id":1860},"dialogue",[104,1862,1863,1864],{},"This class is responsible for parsing exported JSON. In the end it will generate this folder structure:\n",[124,1865],{"alt":1866,"src":1867},"Dialogue Game Object","\u002Fimages\u002Fdocs\u002Funity-dialogue-generate.png",[289,1869,1871],{"className":291,"code":1870,"language":293,"meta":11,"style":11},"using UnityEngine;\nusing System.Collections;\nusing UnityEditor;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Linq;\nusing System.Collections.Generic;\nusing TMPro;\n\npublic class Dialogue : MonoBehaviour\n{\n  \u002F\u002F This is field where in editor you should drop JSON file from LoreHub.\n  public TextAsset json;\n\n  \u002F\u002F Dialogue's Id\n  public string Id;\n\n  \u002F\u002F This is container for all nodes.\n  private GameObject nodesContainer;\n  \u002F\u002F This is container for all links.\n  private GameObject linksContainer;\n  \u002F\u002F This is container for \n  private GameObject unassignedContainer;\n\n  \u002F\u002F Collection of all links.\n  public List\u003CDialogueLink> links;\n  \u002F\u002F Collection of all Nodes.\n  public List\u003CDialogueNode> nodes;\n  \u002F\u002F Collection of all Options.\n  public List\u003CDialogueOption> options;\n\n  \u002F\u002F Function that will parse JSON and generate Dialogue in Unity.\n  public void GenerateDialogue()\n  {\n    \u002F\u002F We need to delete old data so we can create Dialogue from scratch.\n    DestroyImmediate(this.nodesContainer);\n    DestroyImmediate(this.linksContainer);\n    DestroyImmediate(this.unassignedContainer);\n\n    \u002F\u002F Create Unassigned Container - for items without parent.\n    this.unassignedContainer = new GameObject();\n    this.unassignedContainer.name = \"Unassigned Container\";\n    this.unassignedContainer.transform.SetParent(this.transform);\n\n    \u002F\u002F Create Nodes container.\n    this.nodesContainer = new GameObject();\n    this.nodesContainer.name = \"Nodes Container\";\n    this.nodesContainer.transform.SetParent(this.transform);\n\n    \u002F\u002F Create Links container.\n    this.linksContainer = new GameObject();\n    this.linksContainer.name = \"Links Container\";\n    this.linksContainer.transform.SetParent(this.transform);\n\n    \u002F\u002F Get the initial JSON Object.\n    JObject exportData = JObject.Parse(json.ToString());\n\n    \u002F\u002F Extract resources from JSON\n    JArray resources = (JArray)exportData[\"resources\"];\n\n    \u002F\u002F Create Collections and empty them.\n    this.links = new List\u003CDialogueLink>();\n    this.nodes = new List\u003CDialogueNode>();\n    this.options = new List\u003CDialogueOption>();\n\n    \u002F\u002F Sort resources.\n    foreach (JObject item in resources)\n    {\n      \u002F\u002F We can define resource by their type.\n      string type = (string)item[\"type\"];\n      if (type == \"@lorehub\u002Fdialogue\")\n      {\n        this.Id = (string)item[\"id\"];\n      }\n      if (type == \"@lorehub\u002Fdialogue-node\")\n      {\n        DialogueNode node = DialogueNode.Create(item, this.nodesContainer);\n        this.nodes.Add(node);\n      }\n      if (type == \"@lorehub\u002Fdialogue-link\")\n      {\n        DialogueLink link = DialogueLink.Create(item, this.linksContainer);\n        this.links.Add(link);\n      }\n      if (type == \"@lorehub\u002Fdialogue-node-option\")\n      {\n        DialogueOption option = DialogueOption.Create(item);\n        options.Add(option);\n        option.gameObject.transform.SetParent(this.unassignedContainer.transform);\n      }\n    }\n\n    AttachLinks();\n    AssignOptionsToNodes();\n\n    \u002F\u002F Add Dialogue Player Script.\n    DialoguePlayer player = this.gameObject.GetComponent\u003CDialoguePlayer>();\n    if (player == null)\n    {\n      player = this.gameObject.AddComponent\u003CDialoguePlayer>();\n      player.Dialogue = this;\n    }\n  }\n\n  \u002F\u002F This method will go through each link and attach them to Nodes or Options.\n  private void AttachLinks()\n  {\n    foreach (DialogueLink link in this.links)\n    {\n      DialogueNode neededNode = this.nodes.Find(n => n.Id == link.FromId);\n      if (neededNode != null)\n      {\n        neededNode.LinksFromMe = link;\n      }\n      DialogueOption neededOption = this.options.Find(n => n.Id == link.FromId);\n      if (neededOption != null)\n      {\n        neededOption.LinksFromMe = link;\n      }\n    }\n  }\n\n  \u002F\u002F Attach all Options to Nodes.\n  private void AssignOptionsToNodes()\n  {\n    foreach (DialogueNode node in this.nodes)\n    {\n      foreach (string optionId in node.OptionIds)\n      {\n        DialogueOption neededOption = this.options.Find(o => o.Id == optionId);\n        if (neededOption != null)\n        {\n          node.AddOption(neededOption);\n        }\n      }\n\n    }\n  }\n}\n",[157,1872,1873,1881,1893,1901,1913,1929,1945,1954,1958,1971,1975,1980,1990,1994,1999,2007,2011,2016,2026,2031,2040,2045,2054,2058,2063,2076,2081,2094,2099,2112,2116,2121,2132,2136,2141,2153,2164,2175,2179,2184,2199,2217,2233,2237,2242,2257,2275,2290,2294,2299,2314,2332,2347,2351,2356,2381,2385,2391,2417,2422,2428,2448,2468,2488,2493,2499,2516,2521,2527,2554,2575,2581,2606,2612,2630,2635,2659,2672,2677,2695,2700,2722,2735,2740,2758,2763,2782,2792,2807,2812,2817,2822,2830,2838,2843,2849,2873,2888,2893,2913,2925,2930,2935,2940,2946,2958,2963,2981,2986,3020,3035,3040,3051,3056,3086,3100,3105,3115,3120,3125,3130,3135,3141,3153,3158,3176,3181,3199,3204,3234,3248,3254,3266,3272,3277,3282,3287,3292],{"__ignoreMap":11},[297,1874,1875,1877,1879],{"class":299,"line":300},[297,1876,304],{"class":303},[297,1878,308],{"class":307},[297,1880,312],{"class":311},[297,1882,1883,1885,1887,1889,1891],{"class":299,"line":315},[297,1884,304],{"class":303},[297,1886,320],{"class":307},[297,1888,245],{"class":311},[297,1890,325],{"class":307},[297,1892,312],{"class":311},[297,1894,1895,1897,1899],{"class":299,"line":330},[297,1896,304],{"class":303},[297,1898,335],{"class":307},[297,1900,312],{"class":311},[297,1902,1903,1905,1907,1909,1911],{"class":299,"line":340},[297,1904,304],{"class":303},[297,1906,345],{"class":307},[297,1908,245],{"class":311},[297,1910,350],{"class":307},[297,1912,312],{"class":311},[297,1914,1915,1917,1919,1921,1923,1925,1927],{"class":299,"line":355},[297,1916,304],{"class":303},[297,1918,345],{"class":307},[297,1920,245],{"class":311},[297,1922,350],{"class":307},[297,1924,245],{"class":311},[297,1926,368],{"class":307},[297,1928,312],{"class":311},[297,1930,1931,1933,1935,1937,1939,1941,1943],{"class":299,"line":373},[297,1932,304],{"class":303},[297,1934,320],{"class":307},[297,1936,245],{"class":311},[297,1938,325],{"class":307},[297,1940,245],{"class":311},[297,1942,386],{"class":307},[297,1944,312],{"class":311},[297,1946,1947,1949,1952],{"class":299,"line":391},[297,1948,304],{"class":303},[297,1950,1951],{"class":307}," TMPro",[297,1953,312],{"class":311},[297,1955,1956],{"class":299,"line":398},[297,1957,395],{"emptyLinePlaceholder":394},[297,1959,1960,1962,1964,1967,1969],{"class":299,"line":417},[297,1961,401],{"class":303},[297,1963,404],{"class":303},[297,1965,1966],{"class":407}," Dialogue",[297,1968,411],{"class":311},[297,1970,414],{"class":307},[297,1972,1973],{"class":299,"line":423},[297,1974,420],{"class":311},[297,1976,1977],{"class":299,"line":430},[297,1978,1979],{"class":426},"  \u002F\u002F This is field where in editor you should drop JSON file from LoreHub.\n",[297,1981,1982,1984,1987],{"class":299,"line":442},[297,1983,433],{"class":303},[297,1985,1986],{"class":307}," TextAsset",[297,1988,1989],{"class":311}," json;\n",[297,1991,1992],{"class":299,"line":448},[297,1993,395],{"emptyLinePlaceholder":394},[297,1995,1996],{"class":299,"line":458},[297,1997,1998],{"class":426},"  \u002F\u002F Dialogue's Id\n",[297,2000,2001,2003,2005],{"class":299,"line":464},[297,2002,433],{"class":303},[297,2004,436],{"class":303},[297,2006,439],{"class":311},[297,2008,2009],{"class":299,"line":474},[297,2010,395],{"emptyLinePlaceholder":394},[297,2012,2013],{"class":299,"line":479},[297,2014,2015],{"class":426},"  \u002F\u002F This is container for all nodes.\n",[297,2017,2018,2021,2023],{"class":299,"line":485},[297,2019,2020],{"class":303},"  private",[297,2022,547],{"class":307},[297,2024,2025],{"class":311}," nodesContainer;\n",[297,2027,2028],{"class":299,"line":520},[297,2029,2030],{"class":426},"  \u002F\u002F This is container for all links.\n",[297,2032,2033,2035,2037],{"class":299,"line":526},[297,2034,2020],{"class":303},[297,2036,547],{"class":307},[297,2038,2039],{"class":311}," linksContainer;\n",[297,2041,2042],{"class":299,"line":532},[297,2043,2044],{"class":426},"  \u002F\u002F This is container for \n",[297,2046,2047,2049,2051],{"class":299,"line":553},[297,2048,2020],{"class":303},[297,2050,547],{"class":307},[297,2052,2053],{"class":311}," unassignedContainer;\n",[297,2055,2056],{"class":299,"line":565},[297,2057,395],{"emptyLinePlaceholder":394},[297,2059,2060],{"class":299,"line":582},[297,2061,2062],{"class":426},"  \u002F\u002F Collection of all links.\n",[297,2064,2065,2067,2069,2071,2073],{"class":299,"line":587},[297,2066,433],{"class":303},[297,2068,1408],{"class":307},[297,2070,574],{"class":311},[297,2072,167],{"class":307},[297,2074,2075],{"class":311},"> links;\n",[297,2077,2078],{"class":299,"line":593},[297,2079,2080],{"class":426},"  \u002F\u002F Collection of all Nodes.\n",[297,2082,2083,2085,2087,2089,2091],{"class":299,"line":629},[297,2084,433],{"class":303},[297,2086,1408],{"class":307},[297,2088,574],{"class":311},[297,2090,241],{"class":307},[297,2092,2093],{"class":311},"> nodes;\n",[297,2095,2096],{"class":299,"line":659},[297,2097,2098],{"class":426},"  \u002F\u002F Collection of all Options.\n",[297,2100,2101,2103,2105,2107,2109],{"class":299,"line":682},[297,2102,433],{"class":303},[297,2104,1408],{"class":307},[297,2106,574],{"class":311},[297,2108,244],{"class":307},[297,2110,2111],{"class":311},"> options;\n",[297,2113,2114],{"class":299,"line":705},[297,2115,395],{"emptyLinePlaceholder":394},[297,2117,2118],{"class":299,"line":710},[297,2119,2120],{"class":426},"  \u002F\u002F Function that will parse JSON and generate Dialogue in Unity.\n",[297,2122,2123,2125,2127,2130],{"class":299,"line":716},[297,2124,433],{"class":303},[297,2126,1801],{"class":303},[297,2128,2129],{"class":495}," GenerateDialogue",[297,2131,773],{"class":311},[297,2133,2134],{"class":299,"line":732},[297,2135,523],{"class":311},[297,2137,2138],{"class":299,"line":737},[297,2139,2140],{"class":426},"    \u002F\u002F We need to delete old data so we can create Dialogue from scratch.\n",[297,2142,2143,2146,2148,2150],{"class":299,"line":746},[297,2144,2145],{"class":495},"    DestroyImmediate",[297,2147,499],{"class":311},[297,2149,1830],{"class":792},[297,2151,2152],{"class":311},".nodesContainer);\n",[297,2154,2155,2157,2159,2161],{"class":299,"line":752},[297,2156,2145],{"class":495},[297,2158,499],{"class":311},[297,2160,1830],{"class":792},[297,2162,2163],{"class":311},".linksContainer);\n",[297,2165,2166,2168,2170,2172],{"class":299,"line":757},[297,2167,2145],{"class":495},[297,2169,499],{"class":311},[297,2171,1830],{"class":792},[297,2173,2174],{"class":311},".unassignedContainer);\n",[297,2176,2177],{"class":299,"line":763},[297,2178,395],{"emptyLinePlaceholder":394},[297,2180,2181],{"class":299,"line":776},[297,2182,2183],{"class":426},"    \u002F\u002F Create Unassigned Container - for items without parent.\n",[297,2185,2186,2188,2191,2193,2195,2197],{"class":299,"line":781},[297,2187,1839],{"class":792},[297,2189,2190],{"class":311},".unassignedContainer ",[297,2192,541],{"class":303},[297,2194,544],{"class":303},[297,2196,547],{"class":307},[297,2198,550],{"class":311},[297,2200,2201,2203,2206,2208,2210,2213,2215],{"class":299,"line":814},[297,2202,1839],{"class":792},[297,2204,2205],{"class":311},".unassignedContainer.name ",[297,2207,541],{"class":303},[297,2209,819],{"class":646},[297,2211,2212],{"class":650},"Unassigned Container",[297,2214,647],{"class":646},[297,2216,312],{"class":311},[297,2218,2219,2221,2224,2226,2228,2230],{"class":299,"line":842},[297,2220,1839],{"class":792},[297,2222,2223],{"class":311},".unassignedContainer.transform.",[297,2225,559],{"class":495},[297,2227,499],{"class":311},[297,2229,1830],{"class":792},[297,2231,2232],{"class":311},".transform);\n",[297,2234,2235],{"class":299,"line":847},[297,2236,395],{"emptyLinePlaceholder":394},[297,2238,2239],{"class":299,"line":852},[297,2240,2241],{"class":426},"    \u002F\u002F Create Nodes container.\n",[297,2243,2244,2246,2249,2251,2253,2255],{"class":299,"line":1728},[297,2245,1839],{"class":792},[297,2247,2248],{"class":311},".nodesContainer ",[297,2250,541],{"class":303},[297,2252,544],{"class":303},[297,2254,547],{"class":307},[297,2256,550],{"class":311},[297,2258,2259,2261,2264,2266,2268,2271,2273],{"class":299,"line":1733},[297,2260,1839],{"class":792},[297,2262,2263],{"class":311},".nodesContainer.name ",[297,2265,541],{"class":303},[297,2267,819],{"class":646},[297,2269,2270],{"class":650},"Nodes Container",[297,2272,647],{"class":646},[297,2274,312],{"class":311},[297,2276,2277,2279,2282,2284,2286,2288],{"class":299,"line":1758},[297,2278,1839],{"class":792},[297,2280,2281],{"class":311},".nodesContainer.transform.",[297,2283,559],{"class":495},[297,2285,499],{"class":311},[297,2287,1830],{"class":792},[297,2289,2232],{"class":311},[297,2291,2292],{"class":299,"line":1780},[297,2293,395],{"emptyLinePlaceholder":394},[297,2295,2296],{"class":299,"line":1785},[297,2297,2298],{"class":426},"    \u002F\u002F Create Links container.\n",[297,2300,2301,2303,2306,2308,2310,2312],{"class":299,"line":1790},[297,2302,1839],{"class":792},[297,2304,2305],{"class":311},".linksContainer ",[297,2307,541],{"class":303},[297,2309,544],{"class":303},[297,2311,547],{"class":307},[297,2313,550],{"class":311},[297,2315,2316,2318,2321,2323,2325,2328,2330],{"class":299,"line":1796},[297,2317,1839],{"class":792},[297,2319,2320],{"class":311},".linksContainer.name ",[297,2322,541],{"class":303},[297,2324,819],{"class":646},[297,2326,2327],{"class":650},"Links Container",[297,2329,647],{"class":646},[297,2331,312],{"class":311},[297,2333,2334,2336,2339,2341,2343,2345],{"class":299,"line":1815},[297,2335,1839],{"class":792},[297,2337,2338],{"class":311},".linksContainer.transform.",[297,2340,559],{"class":495},[297,2342,499],{"class":311},[297,2344,1830],{"class":792},[297,2346,2232],{"class":311},[297,2348,2349],{"class":299,"line":1820},[297,2350,395],{"emptyLinePlaceholder":394},[297,2352,2353],{"class":299,"line":1836},[297,2354,2355],{"class":426},"    \u002F\u002F Get the initial JSON Object.\n",[297,2357,2358,2361,2364,2366,2369,2372,2375,2378],{"class":299,"line":1850},[297,2359,2360],{"class":307},"    JObject",[297,2362,2363],{"class":311}," exportData ",[297,2365,541],{"class":303},[297,2367,2368],{"class":311}," JObject.",[297,2370,2371],{"class":495},"Parse",[297,2373,2374],{"class":311},"(json.",[297,2376,2377],{"class":495},"ToString",[297,2379,2380],{"class":311},"());\n",[297,2382,2383],{"class":299,"line":1855},[297,2384,395],{"emptyLinePlaceholder":394},[297,2386,2388],{"class":299,"line":2387},57,[297,2389,2390],{"class":426},"    \u002F\u002F Extract resources from JSON\n",[297,2392,2394,2396,2399,2401,2403,2405,2408,2410,2413,2415],{"class":299,"line":2393},58,[297,2395,1613],{"class":307},[297,2397,2398],{"class":311}," resources ",[297,2400,541],{"class":303},[297,2402,637],{"class":311},[297,2404,1623],{"class":307},[297,2406,2407],{"class":311},")exportData[",[297,2409,647],{"class":646},[297,2411,2412],{"class":650},"resources",[297,2414,647],{"class":646},[297,2416,656],{"class":311},[297,2418,2420],{"class":299,"line":2419},59,[297,2421,395],{"emptyLinePlaceholder":394},[297,2423,2425],{"class":299,"line":2424},60,[297,2426,2427],{"class":426},"    \u002F\u002F Create Collections and empty them.\n",[297,2429,2431,2433,2436,2438,2440,2442,2444,2446],{"class":299,"line":2430},61,[297,2432,1839],{"class":792},[297,2434,2435],{"class":311},".links ",[297,2437,541],{"class":303},[297,2439,544],{"class":303},[297,2441,1408],{"class":307},[297,2443,574],{"class":311},[297,2445,167],{"class":307},[297,2447,579],{"class":311},[297,2449,2451,2453,2456,2458,2460,2462,2464,2466],{"class":299,"line":2450},62,[297,2452,1839],{"class":792},[297,2454,2455],{"class":311},".nodes ",[297,2457,541],{"class":303},[297,2459,544],{"class":303},[297,2461,1408],{"class":307},[297,2463,574],{"class":311},[297,2465,241],{"class":307},[297,2467,579],{"class":311},[297,2469,2471,2473,2476,2478,2480,2482,2484,2486],{"class":299,"line":2470},63,[297,2472,1839],{"class":792},[297,2474,2475],{"class":311},".options ",[297,2477,541],{"class":303},[297,2479,544],{"class":303},[297,2481,1408],{"class":307},[297,2483,574],{"class":311},[297,2485,244],{"class":307},[297,2487,579],{"class":311},[297,2489,2491],{"class":299,"line":2490},64,[297,2492,395],{"emptyLinePlaceholder":394},[297,2494,2496],{"class":299,"line":2495},65,[297,2497,2498],{"class":426},"    \u002F\u002F Sort resources.\n",[297,2500,2502,2504,2506,2508,2511,2513],{"class":299,"line":2501},66,[297,2503,1639],{"class":303},[297,2505,637],{"class":311},[297,2507,502],{"class":307},[297,2509,2510],{"class":311}," item ",[297,2512,1649],{"class":303},[297,2514,2515],{"class":311}," resources)\n",[297,2517,2519],{"class":299,"line":2518},67,[297,2520,1657],{"class":311},[297,2522,2524],{"class":299,"line":2523},68,[297,2525,2526],{"class":426},"      \u002F\u002F We can define resource by their type.\n",[297,2528,2530,2533,2536,2538,2540,2542,2545,2547,2550,2552],{"class":299,"line":2529},69,[297,2531,2532],{"class":303},"      string",[297,2534,2535],{"class":311}," type ",[297,2537,541],{"class":303},[297,2539,637],{"class":311},[297,2541,640],{"class":303},[297,2543,2544],{"class":311},")item[",[297,2546,647],{"class":646},[297,2548,2549],{"class":650},"type",[297,2551,647],{"class":646},[297,2553,656],{"class":311},[297,2555,2557,2560,2563,2566,2568,2571,2573],{"class":299,"line":2556},70,[297,2558,2559],{"class":303},"      if",[297,2561,2562],{"class":311}," (type ",[297,2564,2565],{"class":303},"==",[297,2567,819],{"class":646},[297,2569,2570],{"class":650},"@lorehub\u002Fdialogue",[297,2572,647],{"class":646},[297,2574,517],{"class":311},[297,2576,2578],{"class":299,"line":2577},71,[297,2579,2580],{"class":311},"      {\n",[297,2582,2584,2587,2590,2592,2594,2596,2598,2600,2602,2604],{"class":299,"line":2583},72,[297,2585,2586],{"class":792},"        this",[297,2588,2589],{"class":311},".Id ",[297,2591,541],{"class":303},[297,2593,637],{"class":311},[297,2595,640],{"class":303},[297,2597,2544],{"class":311},[297,2599,647],{"class":646},[297,2601,651],{"class":650},[297,2603,647],{"class":646},[297,2605,656],{"class":311},[297,2607,2609],{"class":299,"line":2608},73,[297,2610,2611],{"class":311},"      }\n",[297,2613,2615,2617,2619,2621,2623,2626,2628],{"class":299,"line":2614},74,[297,2616,2559],{"class":303},[297,2618,2562],{"class":311},[297,2620,2565],{"class":303},[297,2622,819],{"class":646},[297,2624,2625],{"class":650},"@lorehub\u002Fdialogue-node",[297,2627,647],{"class":646},[297,2629,517],{"class":311},[297,2631,2633],{"class":299,"line":2632},75,[297,2634,2580],{"class":311},[297,2636,2638,2641,2644,2646,2649,2652,2655,2657],{"class":299,"line":2637},76,[297,2639,2640],{"class":307},"        DialogueNode",[297,2642,2643],{"class":311}," node ",[297,2645,541],{"class":303},[297,2647,2648],{"class":311}," DialogueNode.",[297,2650,2651],{"class":495},"Create",[297,2653,2654],{"class":311},"(item, ",[297,2656,1830],{"class":792},[297,2658,2152],{"class":311},[297,2660,2662,2664,2667,2669],{"class":299,"line":2661},77,[297,2663,2586],{"class":792},[297,2665,2666],{"class":311},".nodes.",[297,2668,1665],{"class":495},[297,2670,2671],{"class":311},"(node);\n",[297,2673,2675],{"class":299,"line":2674},78,[297,2676,2611],{"class":311},[297,2678,2680,2682,2684,2686,2688,2691,2693],{"class":299,"line":2679},79,[297,2681,2559],{"class":303},[297,2683,2562],{"class":311},[297,2685,2565],{"class":303},[297,2687,819],{"class":646},[297,2689,2690],{"class":650},"@lorehub\u002Fdialogue-link",[297,2692,647],{"class":646},[297,2694,517],{"class":311},[297,2696,2698],{"class":299,"line":2697},80,[297,2699,2580],{"class":311},[297,2701,2703,2706,2709,2711,2714,2716,2718,2720],{"class":299,"line":2702},81,[297,2704,2705],{"class":307},"        DialogueLink",[297,2707,2708],{"class":311}," link ",[297,2710,541],{"class":303},[297,2712,2713],{"class":311}," DialogueLink.",[297,2715,2651],{"class":495},[297,2717,2654],{"class":311},[297,2719,1830],{"class":792},[297,2721,2163],{"class":311},[297,2723,2725,2727,2730,2732],{"class":299,"line":2724},82,[297,2726,2586],{"class":792},[297,2728,2729],{"class":311},".links.",[297,2731,1665],{"class":495},[297,2733,2734],{"class":311},"(link);\n",[297,2736,2738],{"class":299,"line":2737},83,[297,2739,2611],{"class":311},[297,2741,2743,2745,2747,2749,2751,2754,2756],{"class":299,"line":2742},84,[297,2744,2559],{"class":303},[297,2746,2562],{"class":311},[297,2748,2565],{"class":303},[297,2750,819],{"class":646},[297,2752,2753],{"class":650},"@lorehub\u002Fdialogue-node-option",[297,2755,647],{"class":646},[297,2757,517],{"class":311},[297,2759,2761],{"class":299,"line":2760},85,[297,2762,2580],{"class":311},[297,2764,2766,2769,2772,2774,2777,2779],{"class":299,"line":2765},86,[297,2767,2768],{"class":307},"        DialogueOption",[297,2770,2771],{"class":311}," option ",[297,2773,541],{"class":303},[297,2775,2776],{"class":311}," DialogueOption.",[297,2778,2651],{"class":495},[297,2780,2781],{"class":311},"(item);\n",[297,2783,2785,2788,2790],{"class":299,"line":2784},87,[297,2786,2787],{"class":311},"        options.",[297,2789,1665],{"class":495},[297,2791,1847],{"class":311},[297,2793,2795,2798,2800,2802,2804],{"class":299,"line":2794},88,[297,2796,2797],{"class":311},"        option.gameObject.transform.",[297,2799,559],{"class":495},[297,2801,499],{"class":311},[297,2803,1830],{"class":792},[297,2805,2806],{"class":311},".unassignedContainer.transform);\n",[297,2808,2810],{"class":299,"line":2809},89,[297,2811,2611],{"class":311},[297,2813,2815],{"class":299,"line":2814},90,[297,2816,1673],{"class":311},[297,2818,2820],{"class":299,"line":2819},91,[297,2821,395],{"emptyLinePlaceholder":394},[297,2823,2825,2828],{"class":299,"line":2824},92,[297,2826,2827],{"class":495},"    AttachLinks",[297,2829,550],{"class":311},[297,2831,2833,2836],{"class":299,"line":2832},93,[297,2834,2835],{"class":495},"    AssignOptionsToNodes",[297,2837,550],{"class":311},[297,2839,2841],{"class":299,"line":2840},94,[297,2842,395],{"emptyLinePlaceholder":394},[297,2844,2846],{"class":299,"line":2845},95,[297,2847,2848],{"class":426},"    \u002F\u002F Add Dialogue Player Script.\n",[297,2850,2852,2855,2858,2860,2862,2865,2867,2869,2871],{"class":299,"line":2851},96,[297,2853,2854],{"class":307},"    DialoguePlayer",[297,2856,2857],{"class":311}," player ",[297,2859,541],{"class":303},[297,2861,793],{"class":792},[297,2863,2864],{"class":311},".gameObject.",[297,2866,607],{"class":495},[297,2868,574],{"class":311},[297,2870,237],{"class":307},[297,2872,579],{"class":311},[297,2874,2876,2879,2882,2884,2886],{"class":299,"line":2875},97,[297,2877,2878],{"class":303},"    if",[297,2880,2881],{"class":311}," (player ",[297,2883,2565],{"class":303},[297,2885,1002],{"class":836},[297,2887,517],{"class":311},[297,2889,2891],{"class":299,"line":2890},98,[297,2892,1657],{"class":311},[297,2894,2896,2899,2901,2903,2905,2907,2909,2911],{"class":299,"line":2895},99,[297,2897,2898],{"class":311},"      player ",[297,2900,541],{"class":303},[297,2902,793],{"class":792},[297,2904,2864],{"class":311},[297,2906,571],{"class":495},[297,2908,574],{"class":311},[297,2910,237],{"class":307},[297,2912,579],{"class":311},[297,2914,2916,2919,2921,2923],{"class":299,"line":2915},100,[297,2917,2918],{"class":311},"      player.Dialogue ",[297,2920,541],{"class":303},[297,2922,793],{"class":792},[297,2924,312],{"class":311},[297,2926,2928],{"class":299,"line":2927},101,[297,2929,1673],{"class":311},[297,2931,2933],{"class":299,"line":2932},102,[297,2934,749],{"class":311},[297,2936,2938],{"class":299,"line":2937},103,[297,2939,395],{"emptyLinePlaceholder":394},[297,2941,2943],{"class":299,"line":2942},104,[297,2944,2945],{"class":426},"  \u002F\u002F This method will go through each link and attach them to Nodes or Options.\n",[297,2947,2949,2951,2953,2956],{"class":299,"line":2948},105,[297,2950,2020],{"class":303},[297,2952,1801],{"class":303},[297,2954,2955],{"class":495}," AttachLinks",[297,2957,773],{"class":311},[297,2959,2961],{"class":299,"line":2960},106,[297,2962,523],{"class":311},[297,2964,2966,2968,2970,2972,2974,2976,2978],{"class":299,"line":2965},107,[297,2967,1639],{"class":303},[297,2969,637],{"class":311},[297,2971,167],{"class":307},[297,2973,2708],{"class":311},[297,2975,1649],{"class":303},[297,2977,793],{"class":792},[297,2979,2980],{"class":311},".links)\n",[297,2982,2984],{"class":299,"line":2983},108,[297,2985,1657],{"class":311},[297,2987,2989,2992,2995,2997,2999,3001,3004,3006,3009,3012,3015,3017],{"class":299,"line":2988},109,[297,2990,2991],{"class":307},"      DialogueNode",[297,2993,2994],{"class":311}," neededNode ",[297,2996,541],{"class":303},[297,2998,793],{"class":792},[297,3000,2666],{"class":311},[297,3002,3003],{"class":495},"Find",[297,3005,499],{"class":311},[297,3007,3008],{"class":505},"n",[297,3010,3011],{"class":303}," =>",[297,3013,3014],{"class":311}," n.Id ",[297,3016,2565],{"class":303},[297,3018,3019],{"class":311}," link.FromId);\n",[297,3021,3023,3025,3028,3031,3033],{"class":299,"line":3022},110,[297,3024,2559],{"class":303},[297,3026,3027],{"class":311}," (neededNode ",[297,3029,3030],{"class":303},"!=",[297,3032,1002],{"class":836},[297,3034,517],{"class":311},[297,3036,3038],{"class":299,"line":3037},111,[297,3039,2580],{"class":311},[297,3041,3043,3046,3048],{"class":299,"line":3042},112,[297,3044,3045],{"class":311},"        neededNode.LinksFromMe ",[297,3047,541],{"class":303},[297,3049,3050],{"class":311}," link;\n",[297,3052,3054],{"class":299,"line":3053},113,[297,3055,2611],{"class":311},[297,3057,3059,3062,3065,3067,3069,3072,3074,3076,3078,3080,3082,3084],{"class":299,"line":3058},114,[297,3060,3061],{"class":307},"      DialogueOption",[297,3063,3064],{"class":311}," neededOption ",[297,3066,541],{"class":303},[297,3068,793],{"class":792},[297,3070,3071],{"class":311},".options.",[297,3073,3003],{"class":495},[297,3075,499],{"class":311},[297,3077,3008],{"class":505},[297,3079,3011],{"class":303},[297,3081,3014],{"class":311},[297,3083,2565],{"class":303},[297,3085,3019],{"class":311},[297,3087,3089,3091,3094,3096,3098],{"class":299,"line":3088},115,[297,3090,2559],{"class":303},[297,3092,3093],{"class":311}," (neededOption ",[297,3095,3030],{"class":303},[297,3097,1002],{"class":836},[297,3099,517],{"class":311},[297,3101,3103],{"class":299,"line":3102},116,[297,3104,2580],{"class":311},[297,3106,3108,3111,3113],{"class":299,"line":3107},117,[297,3109,3110],{"class":311},"        neededOption.LinksFromMe ",[297,3112,541],{"class":303},[297,3114,3050],{"class":311},[297,3116,3118],{"class":299,"line":3117},118,[297,3119,2611],{"class":311},[297,3121,3123],{"class":299,"line":3122},119,[297,3124,1673],{"class":311},[297,3126,3128],{"class":299,"line":3127},120,[297,3129,749],{"class":311},[297,3131,3133],{"class":299,"line":3132},121,[297,3134,395],{"emptyLinePlaceholder":394},[297,3136,3138],{"class":299,"line":3137},122,[297,3139,3140],{"class":426},"  \u002F\u002F Attach all Options to Nodes.\n",[297,3142,3144,3146,3148,3151],{"class":299,"line":3143},123,[297,3145,2020],{"class":303},[297,3147,1801],{"class":303},[297,3149,3150],{"class":495}," AssignOptionsToNodes",[297,3152,773],{"class":311},[297,3154,3156],{"class":299,"line":3155},124,[297,3157,523],{"class":311},[297,3159,3161,3163,3165,3167,3169,3171,3173],{"class":299,"line":3160},125,[297,3162,1639],{"class":303},[297,3164,637],{"class":311},[297,3166,241],{"class":307},[297,3168,2643],{"class":311},[297,3170,1649],{"class":303},[297,3172,793],{"class":792},[297,3174,3175],{"class":311},".nodes)\n",[297,3177,3179],{"class":299,"line":3178},126,[297,3180,1657],{"class":311},[297,3182,3184,3187,3189,3191,3194,3196],{"class":299,"line":3183},127,[297,3185,3186],{"class":303},"      foreach",[297,3188,637],{"class":311},[297,3190,640],{"class":303},[297,3192,3193],{"class":311}," optionId ",[297,3195,1649],{"class":303},[297,3197,3198],{"class":311}," node.OptionIds)\n",[297,3200,3202],{"class":299,"line":3201},128,[297,3203,2580],{"class":311},[297,3205,3207,3209,3211,3213,3215,3217,3219,3221,3224,3226,3229,3231],{"class":299,"line":3206},129,[297,3208,2768],{"class":307},[297,3210,3064],{"class":311},[297,3212,541],{"class":303},[297,3214,793],{"class":792},[297,3216,3071],{"class":311},[297,3218,3003],{"class":495},[297,3220,499],{"class":311},[297,3222,3223],{"class":505},"o",[297,3225,3011],{"class":303},[297,3227,3228],{"class":311}," o.Id ",[297,3230,2565],{"class":303},[297,3232,3233],{"class":311}," optionId);\n",[297,3235,3237,3240,3242,3244,3246],{"class":299,"line":3236},130,[297,3238,3239],{"class":303},"        if",[297,3241,3093],{"class":311},[297,3243,3030],{"class":303},[297,3245,1002],{"class":836},[297,3247,517],{"class":311},[297,3249,3251],{"class":299,"line":3250},131,[297,3252,3253],{"class":311},"        {\n",[297,3255,3257,3260,3263],{"class":299,"line":3256},132,[297,3258,3259],{"class":311},"          node.",[297,3261,3262],{"class":495},"AddOption",[297,3264,3265],{"class":311},"(neededOption);\n",[297,3267,3269],{"class":299,"line":3268},133,[297,3270,3271],{"class":311},"        }\n",[297,3273,3275],{"class":299,"line":3274},134,[297,3276,2611],{"class":311},[297,3278,3280],{"class":299,"line":3279},135,[297,3281,395],{"emptyLinePlaceholder":394},[297,3283,3285],{"class":299,"line":3284},136,[297,3286,1673],{"class":311},[297,3288,3290],{"class":299,"line":3289},137,[297,3291,749],{"class":311},[297,3293,3295],{"class":299,"line":3294},138,[297,3296,855],{"class":311},[284,3298,3300],{"id":3299},"dialogue-player","Dialogue Player",[104,3302,3303,3305],{},[157,3304,237],{}," is using UI components to render Dialogue.",[289,3307,3309],{"className":291,"code":3308,"language":293,"meta":11,"style":11},"using System.Collections;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing TMPro;\n\npublic class DialoguePlayer : MonoBehaviour\n{\n  \u002F\u002F This is Dialogue that it will play.\n  public Dialogue Dialogue;\n  \u002F\u002F This is Current Node that need to be rendered.\n  public DialogueNode CurrentNode;\n\n  \u002F\u002F Where we should add Node's Text\n  public TMP_Text DialogueText;\n  \u002F\u002F Prefab for Option Button.\n  public GameObject OptionButtonPrefab;\n  \u002F\u002F Where we should generate option button\n  public GameObject PlaceForOptionButtons;\n\n  \u002F\u002F Option buttons that will be generated.\n  public List\u003CGameObject> buttons = new List\u003CGameObject>();\n  \n  public void Start()\n  {\n    \u002F\u002F Find Start Node;\n    DialogueLink linkFromDialogue = this.Dialogue.links.Find(l => l.FromId == this.Dialogue.Id);\n    this.CurrentNode = this.Dialogue.nodes.Find(n => n.Id == linkFromDialogue.ToId);\n    RenderNode(this.CurrentNode);\n  }\n\n  void Update()\n  {\n    \u002F\u002F Click anywhere to show next node if no options.\n    if (Input.GetMouseButtonDown(0) && this.CurrentNode.Options.Count == 0)\n    {\n      DialogueNode nextNode = this.Dialogue.nodes.Find(n => n.Id == this.CurrentNode.LinksFromMe.ToId);\n      if (nextNode != null)\n      {\n        this.SetNextNode(nextNode);\n      }\n    }\n  }\n\n  \u002F\u002F Update next node and re-render it.\n  public void SetNextNode(DialogueNode node)\n  {\n    this.CurrentNode = node;\n    RenderNode(this.CurrentNode);\n  }\n\n  \u002F\u002F Render Node functionality.\n  private void RenderNode(DialogueNode node)\n  {\n    \u002F\u002F Clean\n    foreach (GameObject go in this.buttons)\n    {\n      DestroyImmediate(go);\n    }\n    this.buttons = new List\u003CGameObject>();\n\n    \u002F\u002F Create\n    this.DialogueText.text = node.ContentBlock.GetText();\n    foreach (DialogueOption option in node.Options)\n    {\n      GameObject goOption = Instantiate(this.OptionButtonPrefab, new Vector3(0, 0, 0), Quaternion.identity);\n      RectTransform rectTransform = goOption.GetComponent\u003CRectTransform>();\n      goOption.transform.SetParent(this.PlaceForOptionButtons.transform);\n      Transform buttonChild = goOption.transform.GetChild(0);\n      Transform buttonTextGo = buttonChild.transform.GetChild(0);\n      TMP_Text buttonText = buttonTextGo.gameObject.GetComponent\u003CTMP_Text>();\n      buttonText.text = option.Text;\n\n      \u002F\u002F Add my script to handle click\n      MyButton myButton = goOption.AddComponent\u003CMyButton>();\n      myButton.Option = option;\n      myButton.Button = buttonChild.gameObject;\n      myButton.DialoguePlayer = this;\n\n      buttons.Add(goOption);\n    }\n  }\n}\n",[157,3310,3311,3323,3339,3347,3355,3359,3372,3376,3381,3390,3395,3404,3408,3413,3423,3428,3437,3442,3451,3455,3460,3485,3490,3501,3505,3510,3543,3572,3584,3588,3592,3602,3606,3611,3644,3648,3678,3691,3695,3707,3711,3715,3719,3723,3728,3745,3749,3760,3770,3774,3778,3783,3800,3804,3809,3827,3831,3839,3843,3862,3866,3871,3888,3903,3907,3947,3968,3982,4004,4024,4046,4056,4060,4065,4086,4096,4106,4117,4121,4131,4135,4139],{"__ignoreMap":11},[297,3312,3313,3315,3317,3319,3321],{"class":299,"line":300},[297,3314,304],{"class":303},[297,3316,320],{"class":307},[297,3318,245],{"class":311},[297,3320,325],{"class":307},[297,3322,312],{"class":311},[297,3324,3325,3327,3329,3331,3333,3335,3337],{"class":299,"line":315},[297,3326,304],{"class":303},[297,3328,320],{"class":307},[297,3330,245],{"class":311},[297,3332,325],{"class":307},[297,3334,245],{"class":311},[297,3336,386],{"class":307},[297,3338,312],{"class":311},[297,3340,3341,3343,3345],{"class":299,"line":330},[297,3342,304],{"class":303},[297,3344,308],{"class":307},[297,3346,312],{"class":311},[297,3348,3349,3351,3353],{"class":299,"line":340},[297,3350,304],{"class":303},[297,3352,1951],{"class":307},[297,3354,312],{"class":311},[297,3356,3357],{"class":299,"line":355},[297,3358,395],{"emptyLinePlaceholder":394},[297,3360,3361,3363,3365,3368,3370],{"class":299,"line":373},[297,3362,401],{"class":303},[297,3364,404],{"class":303},[297,3366,3367],{"class":407}," DialoguePlayer",[297,3369,411],{"class":311},[297,3371,414],{"class":307},[297,3373,3374],{"class":299,"line":391},[297,3375,420],{"class":311},[297,3377,3378],{"class":299,"line":398},[297,3379,3380],{"class":426},"  \u002F\u002F This is Dialogue that it will play.\n",[297,3382,3383,3385,3387],{"class":299,"line":417},[297,3384,433],{"class":303},[297,3386,1966],{"class":307},[297,3388,3389],{"class":311}," Dialogue;\n",[297,3391,3392],{"class":299,"line":423},[297,3393,3394],{"class":426},"  \u002F\u002F This is Current Node that need to be rendered.\n",[297,3396,3397,3399,3401],{"class":299,"line":430},[297,3398,433],{"class":303},[297,3400,1357],{"class":307},[297,3402,3403],{"class":311}," CurrentNode;\n",[297,3405,3406],{"class":299,"line":442},[297,3407,395],{"emptyLinePlaceholder":394},[297,3409,3410],{"class":299,"line":448},[297,3411,3412],{"class":426},"  \u002F\u002F Where we should add Node's Text\n",[297,3414,3415,3417,3420],{"class":299,"line":458},[297,3416,433],{"class":303},[297,3418,3419],{"class":307}," TMP_Text",[297,3421,3422],{"class":311}," DialogueText;\n",[297,3424,3425],{"class":299,"line":464},[297,3426,3427],{"class":426},"  \u002F\u002F Prefab for Option Button.\n",[297,3429,3430,3432,3434],{"class":299,"line":474},[297,3431,433],{"class":303},[297,3433,547],{"class":307},[297,3435,3436],{"class":311}," OptionButtonPrefab;\n",[297,3438,3439],{"class":299,"line":479},[297,3440,3441],{"class":426},"  \u002F\u002F Where we should generate option button\n",[297,3443,3444,3446,3448],{"class":299,"line":485},[297,3445,433],{"class":303},[297,3447,547],{"class":307},[297,3449,3450],{"class":311}," PlaceForOptionButtons;\n",[297,3452,3453],{"class":299,"line":520},[297,3454,395],{"emptyLinePlaceholder":394},[297,3456,3457],{"class":299,"line":526},[297,3458,3459],{"class":426},"  \u002F\u002F Option buttons that will be generated.\n",[297,3461,3462,3464,3466,3468,3470,3473,3475,3477,3479,3481,3483],{"class":299,"line":532},[297,3463,433],{"class":303},[297,3465,1408],{"class":307},[297,3467,574],{"class":311},[297,3469,511],{"class":307},[297,3471,3472],{"class":311},"> buttons ",[297,3474,541],{"class":303},[297,3476,544],{"class":303},[297,3478,1408],{"class":307},[297,3480,574],{"class":311},[297,3482,511],{"class":307},[297,3484,579],{"class":311},[297,3486,3487],{"class":299,"line":553},[297,3488,3489],{"class":311},"  \n",[297,3491,3492,3494,3496,3499],{"class":299,"line":565},[297,3493,433],{"class":303},[297,3495,1801],{"class":303},[297,3497,3498],{"class":495}," Start",[297,3500,773],{"class":311},[297,3502,3503],{"class":299,"line":582},[297,3504,523],{"class":311},[297,3506,3507],{"class":299,"line":587},[297,3508,3509],{"class":426},"    \u002F\u002F Find Start Node;\n",[297,3511,3512,3514,3517,3519,3521,3524,3526,3528,3531,3533,3536,3538,3540],{"class":299,"line":593},[297,3513,596],{"class":307},[297,3515,3516],{"class":311}," linkFromDialogue ",[297,3518,541],{"class":303},[297,3520,793],{"class":792},[297,3522,3523],{"class":311},".Dialogue.links.",[297,3525,3003],{"class":495},[297,3527,499],{"class":311},[297,3529,3530],{"class":505},"l",[297,3532,3011],{"class":303},[297,3534,3535],{"class":311}," l.FromId ",[297,3537,2565],{"class":303},[297,3539,793],{"class":792},[297,3541,3542],{"class":311},".Dialogue.Id);\n",[297,3544,3545,3547,3550,3552,3554,3557,3559,3561,3563,3565,3567,3569],{"class":299,"line":629},[297,3546,1839],{"class":792},[297,3548,3549],{"class":311},".CurrentNode ",[297,3551,541],{"class":303},[297,3553,793],{"class":792},[297,3555,3556],{"class":311},".Dialogue.nodes.",[297,3558,3003],{"class":495},[297,3560,499],{"class":311},[297,3562,3008],{"class":505},[297,3564,3011],{"class":303},[297,3566,3014],{"class":311},[297,3568,2565],{"class":303},[297,3570,3571],{"class":311}," linkFromDialogue.ToId);\n",[297,3573,3574,3577,3579,3581],{"class":299,"line":659},[297,3575,3576],{"class":495},"    RenderNode",[297,3578,499],{"class":311},[297,3580,1830],{"class":792},[297,3582,3583],{"class":311},".CurrentNode);\n",[297,3585,3586],{"class":299,"line":682},[297,3587,749],{"class":311},[297,3589,3590],{"class":299,"line":705},[297,3591,395],{"emptyLinePlaceholder":394},[297,3593,3594,3597,3600],{"class":299,"line":710},[297,3595,3596],{"class":303},"  void",[297,3598,3599],{"class":495}," Update",[297,3601,773],{"class":311},[297,3603,3604],{"class":299,"line":716},[297,3605,523],{"class":311},[297,3607,3608],{"class":299,"line":732},[297,3609,3610],{"class":426},"    \u002F\u002F Click anywhere to show next node if no options.\n",[297,3612,3613,3615,3618,3621,3623,3626,3629,3632,3634,3637,3639,3642],{"class":299,"line":737},[297,3614,2878],{"class":303},[297,3616,3617],{"class":311}," (Input.",[297,3619,3620],{"class":495},"GetMouseButtonDown",[297,3622,499],{"class":311},[297,3624,3625],{"class":836},"0",[297,3627,3628],{"class":311},") ",[297,3630,3631],{"class":303},"&&",[297,3633,793],{"class":792},[297,3635,3636],{"class":311},".CurrentNode.Options.Count ",[297,3638,2565],{"class":303},[297,3640,3641],{"class":836}," 0",[297,3643,517],{"class":311},[297,3645,3646],{"class":299,"line":746},[297,3647,1657],{"class":311},[297,3649,3650,3652,3655,3657,3659,3661,3663,3665,3667,3669,3671,3673,3675],{"class":299,"line":752},[297,3651,2991],{"class":307},[297,3653,3654],{"class":311}," nextNode ",[297,3656,541],{"class":303},[297,3658,793],{"class":792},[297,3660,3556],{"class":311},[297,3662,3003],{"class":495},[297,3664,499],{"class":311},[297,3666,3008],{"class":505},[297,3668,3011],{"class":303},[297,3670,3014],{"class":311},[297,3672,2565],{"class":303},[297,3674,793],{"class":792},[297,3676,3677],{"class":311},".CurrentNode.LinksFromMe.ToId);\n",[297,3679,3680,3682,3685,3687,3689],{"class":299,"line":757},[297,3681,2559],{"class":303},[297,3683,3684],{"class":311}," (nextNode ",[297,3686,3030],{"class":303},[297,3688,1002],{"class":836},[297,3690,517],{"class":311},[297,3692,3693],{"class":299,"line":763},[297,3694,2580],{"class":311},[297,3696,3697,3699,3701,3704],{"class":299,"line":776},[297,3698,2586],{"class":792},[297,3700,245],{"class":311},[297,3702,3703],{"class":495},"SetNextNode",[297,3705,3706],{"class":311},"(nextNode);\n",[297,3708,3709],{"class":299,"line":781},[297,3710,2611],{"class":311},[297,3712,3713],{"class":299,"line":814},[297,3714,1673],{"class":311},[297,3716,3717],{"class":299,"line":842},[297,3718,749],{"class":311},[297,3720,3721],{"class":299,"line":847},[297,3722,395],{"emptyLinePlaceholder":394},[297,3724,3725],{"class":299,"line":852},[297,3726,3727],{"class":426},"  \u002F\u002F Update next node and re-render it.\n",[297,3729,3730,3732,3734,3737,3739,3741,3743],{"class":299,"line":1728},[297,3731,433],{"class":303},[297,3733,1801],{"class":303},[297,3735,3736],{"class":495}," SetNextNode",[297,3738,499],{"class":311},[297,3740,241],{"class":307},[297,3742,1483],{"class":505},[297,3744,517],{"class":311},[297,3746,3747],{"class":299,"line":1733},[297,3748,523],{"class":311},[297,3750,3751,3753,3755,3757],{"class":299,"line":1758},[297,3752,1839],{"class":792},[297,3754,3549],{"class":311},[297,3756,541],{"class":303},[297,3758,3759],{"class":311}," node;\n",[297,3761,3762,3764,3766,3768],{"class":299,"line":1780},[297,3763,3576],{"class":495},[297,3765,499],{"class":311},[297,3767,1830],{"class":792},[297,3769,3583],{"class":311},[297,3771,3772],{"class":299,"line":1785},[297,3773,749],{"class":311},[297,3775,3776],{"class":299,"line":1790},[297,3777,395],{"emptyLinePlaceholder":394},[297,3779,3780],{"class":299,"line":1796},[297,3781,3782],{"class":426},"  \u002F\u002F Render Node functionality.\n",[297,3784,3785,3787,3789,3792,3794,3796,3798],{"class":299,"line":1815},[297,3786,2020],{"class":303},[297,3788,1801],{"class":303},[297,3790,3791],{"class":495}," RenderNode",[297,3793,499],{"class":311},[297,3795,241],{"class":307},[297,3797,1483],{"class":505},[297,3799,517],{"class":311},[297,3801,3802],{"class":299,"line":1820},[297,3803,523],{"class":311},[297,3805,3806],{"class":299,"line":1836},[297,3807,3808],{"class":426},"    \u002F\u002F Clean\n",[297,3810,3811,3813,3815,3817,3820,3822,3824],{"class":299,"line":1850},[297,3812,1639],{"class":303},[297,3814,637],{"class":311},[297,3816,511],{"class":307},[297,3818,3819],{"class":311}," go ",[297,3821,1649],{"class":303},[297,3823,793],{"class":792},[297,3825,3826],{"class":311},".buttons)\n",[297,3828,3829],{"class":299,"line":1855},[297,3830,1657],{"class":311},[297,3832,3833,3836],{"class":299,"line":2387},[297,3834,3835],{"class":495},"      DestroyImmediate",[297,3837,3838],{"class":311},"(go);\n",[297,3840,3841],{"class":299,"line":2393},[297,3842,1673],{"class":311},[297,3844,3845,3847,3850,3852,3854,3856,3858,3860],{"class":299,"line":2419},[297,3846,1839],{"class":792},[297,3848,3849],{"class":311},".buttons ",[297,3851,541],{"class":303},[297,3853,544],{"class":303},[297,3855,1408],{"class":307},[297,3857,574],{"class":311},[297,3859,511],{"class":307},[297,3861,579],{"class":311},[297,3863,3864],{"class":299,"line":2424},[297,3865,395],{"emptyLinePlaceholder":394},[297,3867,3868],{"class":299,"line":2430},[297,3869,3870],{"class":426},"    \u002F\u002F Create\n",[297,3872,3873,3875,3878,3880,3883,3886],{"class":299,"line":2450},[297,3874,1839],{"class":792},[297,3876,3877],{"class":311},".DialogueText.text ",[297,3879,541],{"class":303},[297,3881,3882],{"class":311}," node.ContentBlock.",[297,3884,3885],{"class":495},"GetText",[297,3887,550],{"class":311},[297,3889,3890,3892,3894,3896,3898,3900],{"class":299,"line":2470},[297,3891,1639],{"class":303},[297,3893,637],{"class":311},[297,3895,244],{"class":307},[297,3897,2771],{"class":311},[297,3899,1649],{"class":303},[297,3901,3902],{"class":311}," node.Options)\n",[297,3904,3905],{"class":299,"line":2490},[297,3906,1657],{"class":311},[297,3908,3909,3912,3914,3916,3919,3921,3923,3926,3929,3932,3934,3936,3938,3940,3942,3944],{"class":299,"line":2495},[297,3910,3911],{"class":307},"      GameObject",[297,3913,1048],{"class":311},[297,3915,541],{"class":303},[297,3917,3918],{"class":495}," Instantiate",[297,3920,499],{"class":311},[297,3922,1830],{"class":792},[297,3924,3925],{"class":311},".OptionButtonPrefab, ",[297,3927,3928],{"class":303},"new",[297,3930,3931],{"class":307}," Vector3",[297,3933,499],{"class":311},[297,3935,3625],{"class":836},[297,3937,160],{"class":311},[297,3939,3625],{"class":836},[297,3941,160],{"class":311},[297,3943,3625],{"class":836},[297,3945,3946],{"class":311},"), Quaternion.identity);\n",[297,3948,3949,3952,3955,3957,3959,3961,3963,3966],{"class":299,"line":2501},[297,3950,3951],{"class":307},"      RectTransform",[297,3953,3954],{"class":311}," rectTransform ",[297,3956,541],{"class":303},[297,3958,1090],{"class":311},[297,3960,607],{"class":495},[297,3962,574],{"class":311},[297,3964,3965],{"class":307},"RectTransform",[297,3967,579],{"class":311},[297,3969,3970,3973,3975,3977,3979],{"class":299,"line":2518},[297,3971,3972],{"class":311},"      goOption.transform.",[297,3974,559],{"class":495},[297,3976,499],{"class":311},[297,3978,1830],{"class":792},[297,3980,3981],{"class":311},".PlaceForOptionButtons.transform);\n",[297,3983,3984,3987,3990,3992,3995,3998,4000,4002],{"class":299,"line":2523},[297,3985,3986],{"class":307},"      Transform",[297,3988,3989],{"class":311}," buttonChild ",[297,3991,541],{"class":303},[297,3993,3994],{"class":311}," goOption.transform.",[297,3996,3997],{"class":495},"GetChild",[297,3999,499],{"class":311},[297,4001,3625],{"class":836},[297,4003,811],{"class":311},[297,4005,4006,4008,4011,4013,4016,4018,4020,4022],{"class":299,"line":2529},[297,4007,3986],{"class":307},[297,4009,4010],{"class":311}," buttonTextGo ",[297,4012,541],{"class":303},[297,4014,4015],{"class":311}," buttonChild.transform.",[297,4017,3997],{"class":495},[297,4019,499],{"class":311},[297,4021,3625],{"class":836},[297,4023,811],{"class":311},[297,4025,4026,4029,4032,4034,4037,4039,4041,4044],{"class":299,"line":2556},[297,4027,4028],{"class":307},"      TMP_Text",[297,4030,4031],{"class":311}," buttonText ",[297,4033,541],{"class":303},[297,4035,4036],{"class":311}," buttonTextGo.gameObject.",[297,4038,607],{"class":495},[297,4040,574],{"class":311},[297,4042,4043],{"class":307},"TMP_Text",[297,4045,579],{"class":311},[297,4047,4048,4051,4053],{"class":299,"line":2577},[297,4049,4050],{"class":311},"      buttonText.text ",[297,4052,541],{"class":303},[297,4054,4055],{"class":311}," option.Text;\n",[297,4057,4058],{"class":299,"line":2583},[297,4059,395],{"emptyLinePlaceholder":394},[297,4061,4062],{"class":299,"line":2608},[297,4063,4064],{"class":426},"      \u002F\u002F Add my script to handle click\n",[297,4066,4067,4070,4073,4075,4077,4079,4081,4084],{"class":299,"line":2614},[297,4068,4069],{"class":307},"      MyButton",[297,4071,4072],{"class":311}," myButton ",[297,4074,541],{"class":303},[297,4076,1090],{"class":311},[297,4078,571],{"class":495},[297,4080,574],{"class":311},[297,4082,4083],{"class":307},"MyButton",[297,4085,579],{"class":311},[297,4087,4088,4091,4093],{"class":299,"line":2632},[297,4089,4090],{"class":311},"      myButton.Option ",[297,4092,541],{"class":303},[297,4094,4095],{"class":311}," option;\n",[297,4097,4098,4101,4103],{"class":299,"line":2637},[297,4099,4100],{"class":311},"      myButton.Button ",[297,4102,541],{"class":303},[297,4104,4105],{"class":311}," buttonChild.gameObject;\n",[297,4107,4108,4111,4113,4115],{"class":299,"line":2661},[297,4109,4110],{"class":311},"      myButton.DialoguePlayer ",[297,4112,541],{"class":303},[297,4114,793],{"class":792},[297,4116,312],{"class":311},[297,4118,4119],{"class":299,"line":2674},[297,4120,395],{"emptyLinePlaceholder":394},[297,4122,4123,4126,4128],{"class":299,"line":2679},[297,4124,4125],{"class":311},"      buttons.",[297,4127,1665],{"class":495},[297,4129,4130],{"class":311},"(goOption);\n",[297,4132,4133],{"class":299,"line":2697},[297,4134,1673],{"class":311},[297,4136,4137],{"class":299,"line":2702},[297,4138,749],{"class":311},[297,4140,4141],{"class":299,"line":2724},[297,4142,855],{"class":311},[4144,4145,4146],"style",{},"html pre.shiki code .suBnA, html code.shiki .suBnA{--shiki-default:#F286C4}html pre.shiki code .sZqyT, html code.shiki .sZqyT{--shiki-default:#97E1F1;--shiki-default-font-style:italic}html pre.shiki code .sptrb, html code.shiki .sptrb{--shiki-default:#F6F6F4}html pre.shiki code .si9D1, html code.shiki .si9D1{--shiki-default:#97E1F1}html pre.shiki code .szyY_, html code.shiki .szyY_{--shiki-default:#7B7F8B}html pre.shiki code .sIY5v, html code.shiki .sIY5v{--shiki-default:#62E884}html pre.shiki code .sGEwX, html code.shiki .sGEwX{--shiki-default:#FFB86C;--shiki-default-font-style:italic}html pre.shiki code .sWivA, html code.shiki .sWivA{--shiki-default:#DEE492}html pre.shiki code .sBh-q, html code.shiki .sBh-q{--shiki-default:#E7EE98}html pre.shiki code .szMl8, html code.shiki .szMl8{--shiki-default:#BF9EEE;--shiki-default-font-style:italic}html pre.shiki code .sZmUQ, html code.shiki .sZmUQ{--shiki-default:#BF9EEE}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":11,"searchDepth":330,"depth":330,"links":4148},[4149,4150],{"id":121,"depth":315,"text":122},{"id":147,"depth":315,"text":148,"children":4151},[4152],{"id":208,"depth":330,"text":209,"children":4153},[4154,4155,4156,4157,4158],{"id":286,"depth":340,"text":287},{"id":858,"depth":340,"text":163},{"id":1267,"depth":340,"text":159},{"id":1860,"depth":340,"text":190},{"id":3299,"depth":340,"text":3300},"Step-by-step tutorial: build a branching dialogue player in Unity (C#) from LoreHub's JSON dialogue schema. Free source code on GitHub, ready to extend.","md",{},{"title":34,"description":4159},"BWIh7MnMgvGzas-o8VSb1fv3NjMy4tIBFxAFEhOo7pg",1792428354656]