Նախորդ օրինակի վերամշակում Reduxնման պետական ​​կառավարման միջոցով:

Այս հոդվածը մի քանի մասից բաղկացած շարքի մի մասն է, որը սկսվում է Իմ առաջին «Իրական Magic Leap նախագիծը. Մաս 1»:

Այս հոդվածի համար լրացված հայտը հասանելի է ներբեռնման համար part3 ճյուղից, bounce repository-ից:

Redux-ի նման պետական ​​կառավարում

Մենք առաջ ենք գնում և վերափոխում ենք նախորդ օրինակը՝ օգտագործելով պետական ​​կառավարման ռազմավարությունը: Մեր դիմումը մեծապես բխում է հետևյալ հոդվածից։



Առաջին քայլն այն է, ինչ մենք նախկինում պահում էինք մասնավոր դաշտում _state, այսինքն՝ տեղորոշումը, մասշտաբավորումը, ցանցավորումը և այլն, համաշխարհային վիճակում.

  • Ռեժիմ. enum; մեկը Դիրքավորում, Մասշտաբացում կամ Ցանցավորում

Բացի այդ, քանի որ MeshingZone խաղի օբյեկտի դիրքն ու մասշտաբը պահանջվում է MLSpatialMapper խաղի օբյեկտի կողմից, մենք դրանք ցուցադրում ենք գլոբալ վիճակում:

  • MZPositionX. MeshingZone խաղի օբյեկտի x դիրքի int; բազմապատկել x-ը 100-ով և կրճատել
  • MZPositionZ. MeshingZone խաղի օբյեկտի z դիրքի int; z բազմապատկել 100-ով և կրճատել
  • MZScaleX. MeshingZone խաղի օբյեկտի x սանդղակի int; բազմապատկել x-ը 100-ով և կրճատել
  • MZScaleZ. MeshingZone խաղի օբյեկտի z սանդղակի int; z բազմապատկել 100-ով և կրճատել

Վերջապես, MeshingZone խաղի օբյեկտը պահանջում է կարգավորիչի վրա սենսորային հարթակի x և y դիրքերը:

  • TouchX. կարգավորիչի վրա սենսորային վահանակի x դիրքի int; բազմապատկել x-ը 10-ով և կրճատել
  • TouchY. կարգավորիչի վրա սենսորային հարթակի y դիրքի int; y-ը բազմապատկել 10-ով և կրճատել

Երբ մենք սահմանում ենք գլոբալ պետությունը, մենք այնուհետև հեռացնում ենք խաղի օբյեկտները՝ դիտարկելու համար նահանգի համապատասխան մասերում փոփոխությունները:

Օրենսգիրքը

Անհրաժեշտ կառուցվածքը ապահովելու համար ավելացվել է բավականին մեծ քանակությամբ կաթսայատան ծածկագիր. օրինակ, հետևյալ ֆայլը սահմանում է Mode գլոբալ վիճակը:

Ակտիվներ/Ducks/Mode.cs

Այնուհետև մենք հեռացնում ենք խաղի առարկաները, որպեսզի դիտարկենք վիճակի փոփոխությունները. Օրինակ, MeshingZone-ը դիտում է Ռեժիմը, TouchX և TouchY:

Ակտիվներ/Սեղան/MeshingZone.cs

Ի տարբերություն մեր նախորդ օրինակի, մենք չի պահպանում հղումներ խաղի օբյեկտների միջև. ավելի շուտ մենք տեղեկատվություն ենք փոխանցում համաշխարհային պետության միջոցով

Այս մոտեցմամբ մենք մեկ խաղի օբյեկտի վրա եղած ծածկագիրը տարածեցինք կոդի մեջ մի շարք կենտրոնացված խաղի օբյեկտների վրա.

  • InputHandler. պահում է կարգավորիչի հպման x և y արժեքները TouchX և TouchY մեջ:
  • KeyPoseHandler. Օգտագործելով Mode, թարմացնում է Mode-ը` հիմնված ձեռքի ժեստերի վրա:
  • MLSpatialMapper. Օգտագործելով Mode, PositionX, PositionZ, ScaleX և ScaleZ, սահմանում է դրա դիրքը, մասշտաբը և ակտիվացված կարգավիճակը: Սա ի հավելումն ցանցի կառուցման գործառույթին, որը տրամադրվում է տրամադրված MLSpatialMapper սցենարի միջոցով (վերջին հոդվածից)
  • MeshingZone. օգտագործելով Mode, TouchX և TouchY, թարմացնում է իր դիրքը, մասշտաբը և պահպանում է դիրքն ու մասշտաբը: մեջ PositionX, PositionZ, ScaleX և ScaleZ

Հաջորդ քայլերը

Հաջորդ հոդվածում Իմ առաջին «Իրական կախարդական թռիչք նախագիծը. Մաս 4», մենք կիրառում ենք այն գործառույթը, որը թույլ է տալիս օգտագործողին հայտնաբերել ցանցի վրա գտնվող կետը (հետագայում գնդակ տեղադրելու համար):