Skip to content

πŸ€” БСгодня ΠΌΡ‹ обсудим ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Unity ΠΈ познакомимся с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΡƒΡŽ, Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡƒΡŽ структуру ΠΊΠΎΠ΄Π°.

CatOstrovsky/slices-example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Screenshot 2022-06-30 at 13 14 50

БСгодня ΠΌΡ‹ обсудим ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Unity ΠΈ познакомимся с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΡƒΡŽ, Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡƒΡŽ структуру ΠΊΠΎΠ΄Π°.

Screenshot 2022-06-30 at 13 15 19

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ любого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° слСдуСт ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ SOLID. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ SOLID C# ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π½Π°Π±ΠΎΡ€ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². Π’ΠΎ Π΅ΡΡ‚ΡŒ, слСдуя ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π΅ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ СдинствСнной отвСтствСнности (S) Богласно этому ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ класс разрабатываСтся с ΠΎΠ΄Π½ΠΎΠΉ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ. По сути своСй, любой класс – это инструмСнт. БоотвСтствСнно, всС элСмСнты класса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. Разрабатывая класс для всСго ΠΈ сразу, ΠΌΡ‹ рискуСм ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΡƒΡ‡Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈ дальнСйшСй Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ открытости/закрытости (O) Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ гласит ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ классы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, Π½ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ для ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли класс Π±Ρ‹Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΈ протСстирован, ΠΌΡ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ. РазумССтся, измСнСния ΠΌΠΎΠ³ΡƒΡ‚ Π²Π½ΠΎΡΠΈΡ‚ΡŒΡΡ, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ вСских для Ρ‚ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹. ΠŸΡ€ΠΈ этом, любой класс ΠΌΠΎΠΆΠ΅Ρ‚ бСссчСтноС число Ρ€Π°Π· Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° наслСдования.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ подстановки Лисков (L) Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ классом Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ с Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ. Π˜Π½Ρ‹ΠΌΠΈ словами, Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ классы Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ опрСдСлСния Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ раздСлСния интСрфСйсов (I) Богласно этому ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ интСрфСйсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, интСрфСйсы Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ всСми классами ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ инвСрсии зависимостСй (D) Богласно ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ инвСрсии зависимостСй, классы высокого уровня Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ…, Π° абстракции Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, высокоуровнСвыС классы ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° бизнСс-ΠΏΡ€Π°Π²ΠΈΠ»Π° / Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. НизкоуровнСвыС классы Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: взаимодСйствиС с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° сообщСний Π² систСму ΠΈ Ρ‚.ΠΏ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли Π² ΠΈΠ³Ρ€Π΅ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ сСтСвых запросов, ΠΎΠ½ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ явно зависим ΠΎΡ‚ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ LeaderBoardManager Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° сСтСвых запросов.

Если ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ эти ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΊ Unity, Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ список ΠΏΡ€Π°Π²ΠΈΠ»: ΠΎΠ΄ΠΈΠ½ Β«ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Β» = ΠΎΠ΄ΠΈΠ½ ΠΏΡ€Π΅Ρ„Π°Π±; Π»ΠΎΠ³ΠΈΠΊΠ° для ΠΎΠ΄Π½ΠΎΠ³ΠΎ Β«ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°Β» = ΠΎΠ΄ΠΈΠ½ класс MonoBehavior; ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ = сцСна со взаимосвязанными ΠΏΡ€Π΅Ρ„Π°Π±Π°ΠΌΠΈ;

Π­Ρ‚ΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Π±Ρ‹Π»ΠΎ Π±Ρ‹ достаточно для простого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Но ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, количСство ΠΏΡ€Π°Π²ΠΈΠ» ΠΏΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒΡΡ. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ проСктирования ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ обсудим способы ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Screenshot 2022-06-30 at 13 16 01

На ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Slice, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹ΠΉ ΠΊ ΠΏΡ€Π΅Ρ„Π°Π±Ρƒ Slice, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ Π² ΠΎΠΊΠ½Π΅ Inspector: Как Π²ΠΈΠ΄ΠΈΠΌ, Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π΅ΡΡ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. ΠŸΡ€ΠΈ этом Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд слоТно ΠΏΠΎΠ½ΡΡ‚ΡŒ Π·Π° Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π΅Π³ΠΎ свойства ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… слСдуСт ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ слоТности с ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ Π³Π΅ΠΉΠΌ-Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ΠΎΠ².

Для добавлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΊ свойствам MonoBehaviour Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Tooltip ΠΈ Header. Атрибут Tooltip позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ подсказку для Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°. Π­Ρ‚Π° подсказка Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния для свойства ΠΈ Ρ‚ΠΎ для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ΄Π΅. Атрибут Header позволяСт Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΡƒ. НСкоторыС ΠΈΠ· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² ΠΊΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ статичСский класс ΠΈΠ»ΠΈ константы. Но это повлияСт Π½Π° удобство рСдактирования этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ…ΡƒΠ΄ΠΎΠΆΠ½ΠΈΠΊ ΠΈΠ»ΠΈ Π³Π΅ΠΉΠΌ-Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ Π½Π΅ смоТСт ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти значСния. ΠœΡ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти значСния, Π»ΠΈΠ±ΠΎ вынСсти ΠΈΡ… Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅Π³ΠΎ. Но ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ являСтся использованиС ScriptableObject. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ScriptableObject, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ· Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. А для доступа ΠΊ этим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ссылку Π½Π° ScriptableObject.

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ для позиционирования кусочков ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² ScriptableObject. ВпослСдствии Π½Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ большС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ, ScriptableObject ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для этого.

https://unity.com/how-to/architect-game-code-scriptable-objects

Screenshot 2022-06-30 at 13 16 41

Если Π±Ρ‹ это Π±Ρ‹Π»Π° настоящая ΠΈΠ³Ρ€Π°, Ρ‚ΠΎ ΠΌΡ‹ Π±Ρ‹ наблюдали постСпСнный рост объСма классов MonoBehavior. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим, ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° основС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠΉ отвСтствСнности, ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‰Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° ΠΎΠ΄ΠΈΠ½ элСмСнт. Если ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚ΠΎ Ρƒ вас Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° вопросы Π²Ρ€ΠΎΠ΄Π΅ Β«Π—Π° Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ класс?Β» ΠΈΠ»ΠΈ Β«Π—Π° Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚?Β» Благодаря этому ваши ΠΊΠΎΠ»Π»Π΅Π³ΠΈ смогут ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ взятый класс. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ любого ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°. Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π³Π΄Π΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ управляСт всСми элСмСнтами ΠΈΠ³Ρ€Ρ‹. Он отслСТиваСт попадания ΠΏΡ€ΠΈ выстрСлС, слСдит Π·Π° счСтом ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ создаСт ΠΏΡƒΡ‚Π°Π½Π½ΠΈΡ†Ρƒ ΠΈ ΡƒΡ…ΡƒΠ΄ΡˆΠ°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°. ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ - Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ. Основная идСя Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ содСрТат ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Π»ΠΈΡ‡Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ отобраТСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ свой MonoBehaviour, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ класс GameBoard, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ всСй ΠΈΠ³Ρ€Ρ‹ Π½Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ класса - Player, Score, Score ΠΈ GameBoard. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· классов Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ лишь Ρ‚ΠΎΠΉ части Π»ΠΎΠ³ΠΈΠΊΠΈ, которая относится ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½ привязан. А GameBoard Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ этих классов. Π’ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ класс являСтся самодостаточным ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ строго Π·Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½. Score - ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ подсчСт ΠΎΡ‡ΠΊΠΎΠ²; ScorePlace - ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ слайсов, подсчСт ΠΎΡ‡ΠΊΠΎΠ² ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ SlicePlace Π½Π° ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ готовности; Slice - Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для измСнСния внСшнСго Π²ΠΈΠ΄Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ;

Screenshot 2022-06-30 at 13 17 22

МоТно пСрСнСсти MonoBehavior Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ классы C#, Π½ΠΎ Π² Ρ‡Π΅ΠΌ прСимущСство Ρ‚Π°ΠΊΠΎΠ³ΠΎ способа? ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ классы C# Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ большими возмоТностями, Ρ‡Π΅ΠΌ собствСнныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Unity, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния создания ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹Ρ… ΠΈ совмСстимых Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ структур. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ C# ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ .NET Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Unity. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрных структур, сСриализации ΠΈ Ρ‚Π΄. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ классы C#, Ρ‚ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π½Π΅ воспримСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½Π΅ смоТСт Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΈΡ… Π² инспСкторС. Π­Ρ‚ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΠΎ Π·ΠΎΠ½Π°ΠΌ отвСтствСнности. Если Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° наш ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎ ΠΌΡ‹ вынСсли ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΠΈΠ·ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ модСль Π² класс C#, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π·Π²Π°Π»ΠΈ StorageProfileService. ЕдинствСнная Π΅Π³ΠΎ Π·Π°Π΄Π°Ρ‡Π° β€” ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ прогрСсса ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… профиля ΠΈΠ³Ρ€ΠΎΠΊΠ°. Π­Ρ‚ΠΎΡ‚ класс ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π΅ скриптами MonoBehaviour, Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ классами C#. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ классы GameSimulation, Ball ΠΈ Player Π²Π½Π΅ Unity, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π½Π° сСрвСрС .Net для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ управлСния ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ. А Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΡ‹ Π΅Ρ‰Π΅ большС Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ»ΠΈ классы, согласно ΠΈΡ… отвСтствСнности.

Screenshot 2022-06-30 at 13 18 12

НаслСдованиС ΠΈ интСрфСйсы ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π½Π°ΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ΄Π° ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡƒΡŽ структуру ΠΊΠΎΠ΄Π°. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования наслСдования ΠΈ интСрфСйсов. На ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ SliceBase являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ PostMoveAction, MoveToSlicePlace ΠΈ опрСдСляСт свойства kind ΠΈ type. (ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° слайдС Π³Π΄Π΅ Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ Slice ΠΈ BombSlice) ΠšΠ»Π°ΡΡΡ‹ Slice ΠΈ BombSlice Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π΅Π³ΠΎ , Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ эти ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ свойства. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ нСзависимо ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Slice, ΠΎΠ½ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΈ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ для выполнСния дСйствий послС пСрСмСщСния.

Вторая ситуация, ΠΊΠΎΠ³Π΄Π° использования наслСдования ΠΈ интСрфСйсов ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ - это ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ сСрвисы ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ вашСй ΠΈΠ³Ρ€Ρ‹, Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ сохранСниС ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ прогрСсса Π½Π° сторонС сСрвСра, Π½ΠΎ Π² пСрспСктивС ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ Π² этой ситуации Π±ΡƒΠ΄Π΅Ρ‚ - созданиС интСрфСйса IStorageService, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с сохранСниями. ПослС Ρ‡Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс PrefsStorage ΠΈ ΡƒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс IStorageService. Π’ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ссылки Π½Π° IStorageService, Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PrefsStorage Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ этапС ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс ServerStorage, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ PrefsStorage унаслСдуСт класс IStorageService ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Get, Set. Π”Π°Π»Π΅Π΅ Π²Π°ΠΌ Π½Π΅ составит Ρ‚Ρ€ΡƒΠ΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ PrefsStorage Π½Π° ServerStorage ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°Ρ€Ρ‹ строк ΠΊΠΎΠ΄Π°.

Screenshot 2022-06-30 at 13 18 27

Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Если Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Slices, Ρ‚ΠΎ Π½Π°Ρ‡Π°Π² Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ спСциализированныС классы Π² ΠΊΠΎΠ΄, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Slice, SlicePlace, GameBoard ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ: Класс Gameboard, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΈΠ³Ρ€ΠΎΠ²ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ, подсчСт ΠΎΡ‡ΠΊΠΎΠ² ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ дСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ; Класс Score, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ счСт; Класс SlicePlace, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ мСста для пСрСмСщСния слайса ΠΈ содСрТит Π² сСбС ссылки Π½Π° слайсы; Класс Slice, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой ΠΎΠ΄Π½Ρƒ ΠΈΠ³Ρ€ΠΎΠ²ΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΈ содСрТит всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± этом слайсС. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π² ΠΈΠ³Ρ€Π΅ Π½Π΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ спСцэффСкты, аудиосопровоТдСниС ΠΈΠ»ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. Если Π² ΠΈΠ³Ρ€Ρƒ добавятся Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ пСрСмСщСния, Π·Π²ΡƒΠΊΠΈ, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚Π΅ΠΌΡ‹ для слайсов, Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· классов Ρ‚Π°ΠΊ ΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с UI. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ классы ΡƒΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ³Ρ€ΠΎΠ²ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ элСмСнта. ΠŸΠΎΡ…ΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° игровая Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ классС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Но ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΠ΄ станСт слоТно ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ игровая Π»ΠΎΠ³ΠΈΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ»ΠΎΡ…ΠΎ понятна, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠ°Π½Π° с Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ отобраТСния. ΠŸΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈ систСму прСдставлСния. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ кодовая Π±Π°Π·Π° ΠΌΠΎΠ³Π»Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Π΄Π²ΡƒΡ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° с прСдставлСниСм Π΄Π°Π½Π½Ρ‹Ρ…. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Π·Π°Π΄Π°Ρ‡ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ обсудим Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅.

Screenshot 2022-06-30 at 13 18 43

Иногда Π²ΠΏΠΎΠ»Π½Π΅ допустим класс, содСрТащий Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π½Π½Ρ‹Π΅, Π±Π΅Π· Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Π½Π΅Π³ΠΎ всСй Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с этими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ содСрТат Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ†Π΅Π»ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… β€” Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈΠ»ΠΈ структурами. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим класс DateUtils. Он содСрТит константы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для форматирования ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Ρ‚Ρ‹ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ…. ΠœΠ΅Ρ‚ΠΎΠ΄ YesterdayBeginTime прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄Π°Ρ‚Ρƒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Java А ΠΌΠ΅Ρ‚ΠΎΠ΄ ToJavaMilliseconds ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Ρ‚Ρƒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Java с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·ΠΎΠ½Ρ‹ Класс TaskUtils Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ систСмный класс Task ΠΈ добавляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ асинхронныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² синхронном контСкстС ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ»Π±Π΅ΠΊΠΈ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Task. Π Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ систСмныС классы стоит Π² Ρ‚Π΅Ρ… случаях, Ссли встроСнных возмоТностСй нСдостаточно.

Screenshot 2022-06-30 at 13 18 57

Если ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ раздСлСния прСдставлСния ΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°ΠΌΠΈ откроСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ быстро ΠΈ нСзависимо ΠΎΡ‚ UI Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΡƒΡŽ ΡΠΈΠΌΡƒΠ»ΡΡ†ΠΈΡŽ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ тСстированиС ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ. Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ игровая симуляция ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ всС ΡƒΡ€ΠΎΠ²Π½ΠΈ, ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ всСх Π²Ρ€Π°Π³ΠΎΠ². ПослС Ρ‡Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ количСство ΠΎΡ‡ΠΊΠΎΠ² ΠΈ Π½Π°Π³Ρ€Π°Π΄. Π­Ρ‚ΠΎ являСтся самой Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ страховкой ΠΎΡ‚ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ повСдСния ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ симуляции ΠΈ позволяСт быстро Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠ΅.

Screenshot 2022-06-30 at 13 19 14

Для построСния ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈΠ³Ρ€Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ. Π’ ΡΠ΅Π³ΠΎΠ΄Π½ΡΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… я Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ Factory ΠΈ Observable. ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Observable слСдуСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ для отслСТивания состояния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π²ΠΎ врСмя ΠΈΠ³Ρ€Ρ‹, Π° ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ³Π΄Π°. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ‹Π²Π΅ соСдинСния с сСрвСром ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ³Ρ€Ρƒ ΠΈ вывСсти сообщСниС. А ΠΏΡ€ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ соСдинСния ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈΠ³Ρ€Ρƒ. Π’ ΠΈΠ³Ρ€Π΅ Slices ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Observable использован для отслСТивания ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ счСта. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ ΠΈΠ·Π²Π½Π΅ ΠΈ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° эти измСнСния. Π˜Π³Ρ€ΠΎΠ²ΠΎΠΉ счСт ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ Ρ‡Π΅Ρ€Π΅Π· Π΄Π΅Π±Π°Π³-мСню, Π»ΠΈΠ±ΠΎ Ρ‡Π΅Ρ€Π΅Π· GameBoard. ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ эти измСнСния создав событиС. Но Ρ‡Ρ‚ΠΎ случится Ссли Ρ‚Π°ΠΊΠΈΡ… отслСТиваСмых Π΄Π°Π½Π½Ρ‹Ρ… станСт большС, систСма событий станСт ΠΎΡ‡Π΅Π½ΡŒ Π·Π°ΠΏΡƒΡ‚Π°Π½Π° ΠΈ Π½Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Π°. Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, пСрСмСнная, которая Ρ…Ρ€Π°Π½ΠΈΡ‚ количСство ΠΎΡ‡ΠΊΠΎΠ² являСтся Observable, Π° ScoreManager отслСТиваСт измСнСния этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, послС Ρ‡Π΅Π³ΠΎ мСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ Π½Π° экранС.

Screenshot 2022-06-30 at 13 19 26

Π’Π°ΠΊΠΆΠ΅ Π² ΠΈΠ³Ρ€Π΅ использован ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Factory для создания слайсов. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π΄Π²ΡƒΡ… вариация. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ - Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ инстанс ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания посадочных ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΎΠΊ для слайсов. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΠΎ 4Ρ… инстансов этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… послС создания Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ согласно ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Screenshot 2022-06-30 at 13 19 42

Вторая рСализация позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ инстансы Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² зависимости ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π­Ρ‚ΠΎΡ‚ скрипт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания Π½ΠΎΠ²Ρ‹Ρ… слайсов. ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ Ρ‚ΠΈΠΏ слайса ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ½ΡΡ‚Π°Π½Ρ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ„Π°Π± для этого слайса. БСйчас поддСрТиваСтся ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ слайс ΠΈ слайс - Π±ΠΎΠΌΠ±Π°.

Screenshot 2022-06-30 at 13 19 54

https://itnan.ru/post.php?c=1&p=481618

https://ru.hexlet.io/blog/posts/chto-takoe-mvc-rasskazyvaem-prostymi-slovami

MVC β€” ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈΠ³Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² Π±Π»ΠΎΠΊΠΈ модСль, прСдставлСниС ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ ΠΎΡ‚Π΄Π°Π΅Ρ‚ Π΅Π΅ Π½Π° отрисовку. МодСль прСдставляСт Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ модСль ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для отобраТСния Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, согласно ΠΏΡ€ΠΈΠΊΠ°Π·Π°ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

Рассмотрим этот ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΠ· ΠΆΠΈΠ·Π½ΠΈ. Π’ Ρ€ΠΎΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Ρƒ нас выступаСт ΠΏΠΎΠ²Π°Ρ€, Π² Ρ€ΠΎΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ - мСню, Π° Π² Ρ€ΠΎΠ»ΠΈ прСдставлСния - Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ΅ блюдо. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ³Ρ€Ρ‹ - ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ рСсторана ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π½Π° вкус, Ρ†Π²Π΅Ρ‚ ΠΈ качСство лишь Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ΅ блюдо. ΠŸΠΎΠ²Π°Ρ€ Π±Π΅Ρ€Π΅Ρ‚ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚Ρ‹, согласно Ρ€Π΅Ρ†Π΅ΠΏΡ‚Ρƒ ΠΈ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ ΠΈΡ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ блюдо ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ вкусным. Если Π²ΠΎ послС приготовлСния блюдо ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ нСдостаточно солСным, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ это ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ соли ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Ρ†Π°, ΠΏΠΎ вкусу.

Π‘Ρ€Π°Π·Ρƒ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ тСкущая рСализация Π½Π΅ являСтся СдинствСнным Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ мноТСство Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ этого ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° для Unity.

Screenshot 2022-06-30 at 13 20 05

Π’ MVC View ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ части ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ View Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ SliceView. Π­Ρ‚Π° View ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ слайса ΠΈ содСрТит Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹ ΠΈΠ· ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ прСдставлСниС. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ слайс ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ опрСдСляСт ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ слайса Π² UI. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство градусов Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ°. SliceController ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ слайса, Π° SliceView Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ слайса. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ отобраТСния Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ собствСнный View ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€.

Screenshot 2022-06-30 at 13 20 21

Model - это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ C# класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΈ прСдставляСт Π΄Π°Π½Π½Ρ‹Π΅. МодСли ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… ΠΈΠ»ΠΈ сСрвисах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ прСдставлСна ProfileDataModel. Π­Ρ‚ΠΎ модСль ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ProfileService, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ сСриализуСт ΠΈ сохраняСт эту модСль Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ информация ΠΎ состоянии ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ прСдставлСны этой модСлью. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ - это модСль для ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° SliceController. Π­Ρ‚Π° модСль Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ слайсС, Π΅Π³ΠΎ Ρ‚ΠΈΠΏ, Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΈ количСство ΠΎΡ‡ΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ принСсСт. ΠžΠ±Ρ‰ΡƒΡŽ структуру ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° послСднСм ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅.

Screenshot 2022-06-30 at 13 20 33

Controller прСдставляСт Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ MVC, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт связь ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, прСдставлСниСм ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Он содСрТит Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запроса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ…. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, LoadingController занимаСтся отслСТиваниСм прогрСсса Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ³Ρ€Ρ‹ ΠΈ обновляСт LoadingView для обновлСния полоски прогрСсса Π·Π°Π³Ρ€ΡƒΠ·ΠΊ ΠΈΠ³Ρ€Ρ‹. ScoreController - ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ прогрСсс. Он взаимодСйствуСт с IProfileService для сохранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ прогрСссС Π² ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈΠ³Ρ€ΠΎΠΊΠ°.

Screenshot 2022-06-30 at 13 20 46

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ β€œΡΠ΅Ρ€Π²ΠΈΡΡ‹β€ для создания Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… классов. Π­Ρ‚ΠΈ классы всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ C# классами, Π° Π½Π΅ MonoBehaviour. Они ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Model. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ProfileService ΠΈΠΌΠ΅Π΅Ρ‚ модСль, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅. Π­Ρ‚Π° модСль сСриализуСтся ΠΈ сохраняСтся Π½Π° диск. БСрвисы Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π½Π° этапС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ³Ρ€Ρ‹. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, Π½Π° экранС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ³Ρ€Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ всС сСрвисы ΠΈ Π² асинхронных ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ½ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ с сСрвСра ΠΈΠ»ΠΈ диска, производят Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ список ΠΈΠ³Ρ€ с сСрвСра ΠΈ Ρ‚Π΄. БСрвисы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, LoginService ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ NetworkService для выполнСния сСтСвых запросов. ΠŸΠΎΡ€ΠΎΠΉ, сСрвисы ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ 10 зависимостСй ΠΈ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти зависимости Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ становится слоТно. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ сущСствуСт Dependency Injection. О Π½Π΅ΠΉ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅. Как ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ сСрвису лишь Ρ‡Π΅Ρ€Π΅Π· интСрфСйс, это позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΈ Π»Π΅Π³ΠΊΠΎ обновляСмый сСрвис. На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ слайдС прСдставлСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сСрвиса для хранСния ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ статистики Π² PlayerPrefs.

Screenshot 2022-06-30 at 13 20 55

Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, этот класс Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс IProfileService ΠΈ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ IProfileService ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² ΠΊΠΎΠ΄Π΅. А для смСны хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² PlayerPrefs ΠΈΠ»ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π½Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ достаточно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всСго ΠΎΠ΄Π½Ρƒ строчку ΠΊΠΎΠ΄Π°.

Screenshot 2022-06-30 at 13 21 07

Если ΠΏΠΎΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ взаимодСйствиС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², сСрвисов, View ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ

Screenshot 2022-06-30 at 13 21 21

https://blog.extrawurst.org/gamedev/unity/programming/2020/11/11/scalable-unity-architecture.html

Π›ΡŽΠ±Π°Ρ ΠΈΠ³Ρ€Π° состоит ΠΈΠ· мноТСства систСм: UI, Π·Π²ΡƒΠΊ, Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, Π²Π²ΠΎΠ΄ ΠΈ Ρ‚Π΄ ΠΈ Ρ‚ΠΏ. Π­Ρ‚ΠΈ систСмы Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π’ ΠΎΠ½Π»Π°ΠΉΠ½ ΡˆΡƒΡ‚Π΅Ρ€Π΅ ΠΈΠ³Ρ€ΠΎΠΊ А ΡƒΠ±ΠΈΠ» ΠΈΠ³Ρ€ΠΎΠΊΠ° Π‘. НуТно вывСсти сообщСниС ΠΎΠ± этом Π² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π»ΠΎΠ³. Π’ экономичСской стратСгии Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΎΡΡŒ ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ здания. НуТно ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π·Π²ΡƒΠΊ увСдомлСния ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΡƒ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅. Π˜Π³Ρ€ΠΎΠΊ Π½Π°ΠΆΠ°Π» Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΡƒ быстрого сохранСния. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π²Π²ΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ сообщСниС ΠΎΠ± этом Π² систСму сохранСния.

ΠŸΠΎΡ€ΠΎΠΉ, ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС становится Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. А Π½Π°Π»Π°Π΄ΠΈΡ‚ΡŒ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ классами для прямой ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ события - Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ сущСствуСт систСма событий, Ρ‚Π°ΠΊΠΆΠ΅ называСмая EventBus. Она позволяСт ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ событиС ΠΈΠ· любого скрипта И Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² подписавшСмся Π½Π° это событиС скриптС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ колбэк. Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π²Π°ΠΌ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡŽ Π΅ΡΡ‚ΡŒ нСстандартная рСализация ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° событий. Π­Ρ‚ΠΈ события задСйствованы для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ обновлСния счСта ΠΈΠ³Ρ€ΠΎΠΊΠ°. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ мСняСтС счСт ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄Π΅Π±Π°Π³-мСню.

Screenshot 2022-06-30 at 13 21 49

About

πŸ€” БСгодня ΠΌΡ‹ обсудим ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Unity ΠΈ познакомимся с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΡƒΡŽ, Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡƒΡŽ структуру ΠΊΠΎΠ΄Π°.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published