feat(ui, prizes, spawners, editor): expand prize flow and add spawning/editor tooling
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled

- доработан flow призовой витрины и связанного UI:
  добавлены `PrizeStandButtonView` и `RulesPrizeListPage`, обновлены
  `PrizeStandController`, `PrizeStandPrize`, `PrizeStandModal`,
  `PrizeStandSettingsModal`, `LevelPrizeSettingsModal`, `QRCodeSettingsModal`,
  `BalanceDisplay`, `ButtonTextFocusColor` и связанные prefab'ы,
  чтобы улучшить настройку, навигацию, отображение кнопок и prize flow
- расширена система настроек и сохранения значений:
  `OptionPicker` получил отдельный формат `ValueSelector`,
  обновлены `SettingsDatabase`, `SettingEntryDrawer`, `SettingUIItem`,
  `SettingsUIGenerator`, `ValueSelectorRow` и `MainSettingsDatabase.asset`,
  а сохранение option picker-значений, включая `gameplay.gameDifficulty`,
  исправлено и синхронизировано с остальными настройками
- добавлены универсальные спавнеры сущностей:
  реализованы `EntitySpawner` и `EntitySpawnerManager` с поддержкой
  весов префабов, точек спавна, заполнения по проценту, ограничений
  на количество и автоспавна при инициализации
- доработана логика игрового спавна и сложности:
  процент инициализационного спавна может зависеть от настройки
  `gameplay.gameDifficulty` с градациями 25/50/75/100,
  в одном цикле массового спавна повторно не используется та же точка,
  а gizmo спавнера теперь показывает только сами точки без линий
- упрощена работа в редакторе Unity и добавлены editor-инструменты:
  в `GameManager` лицензия пропускается при запуске в `UNITY_EDITOR`,
  а `HierarchySelectionCounter`, `HierarchySelectionCountOverlay`
  и `HierarchyBulkRenamerWindow` добавляют подсчет выделения,
  realtime overlay в `SceneView` и массовое переименование объектов
  по правилам нумерации из Unity Project Settings
- синхронизированы сцены, ресурсы и UI-ассеты под новый flow:
  обновлены `MainMenu`, `Level UI`, уровни `1-1` и `1-2`,
  строки настроек, кнопки, TMP/font assets, изображения UI,
  `prizes.json` и recovery-данные после правок интерфейса и логики
- очищены и переразложены часть внешних и служебных ресурсов:
  удалён пакет `Lava_Flowing_Shader`, переименованы/заменены
  отдельные UI-prefab'ы и добавлены сопутствующие проектные артефакты,
  которые сейчас используются обновлённой конфигурацией проекта
This commit is contained in:
Данил Ярош 2026-04-28 14:05:05 +03:00
parent 63898f9713
commit cb2e83a596
126 changed files with 61996 additions and 191378 deletions

View File

@ -0,0 +1 @@
False

View File

@ -0,0 +1 @@
9cac9297-b74d-4f18-91bf-f665d42c0a54

View File

@ -0,0 +1 @@
204cdaf9-d3c0-4fc2-9d60-984b9b010f21

View File

@ -0,0 +1,5 @@
https://dc.services.visualstudio.com/v2/track
Content-Type:application/x-json-stream
Content-Encoding:gzip
H4sIAAAAAAAACpRTTY/bNhD9KwLPonZI0bKkW7DboosgiJEs0qK30XC4JiKTBkVtEiz83wvKDtLtrTfiAfPmfQxfRcATi1G8O59/e+GQF1GL7DdIg+4kGKn2T9CNuh+ha0y7V3uAv0Ut/Hv+IUaxN0SKBpYtdyyNhZ2cWkfSWh4UKAt6ZwonPi9ifBXoG8svnriJyxdOi49BjOJPH2z8Vnajb2iOq21SnPkxLBkDFTGHFJ8Tnjgd7kE1KU4xo5+bORLO17GFl8LWeCtGwXtyHaCWvVOtNFa1cnJ2koPaAaheTdja65gPmVPAuVns11+CbMyBM4260W0DUg/iUguLGYuHCRd++nEusrbMHgpeb/D2HF/FCycx6vpnule6O5r9HcXTCYO9cz745ShqcU7xzCl73vLZLM8zZh9DdVtyP3sOWdTi4+fqMGN2MZ3ehPb5av3xfzj/gHT0gavHh61pQxbdIG1LII0jLQfbgRx6Mw0TKHBaiVrcx5B9WOO6VI8h83PaVIpR/I7zwld97xIdfWbKayrS/+pK+fzd5/toC1B4DinalXL1K24FDTQK2sKx5vOaq09sfWLKXDw9pfVG/58R3WmAomxNiUOuDpiP1R+4HEsQu1YR9hOBAzO1bU89gUPtiAF3aCZw0Dtsne6s0nvjkNTUsyZAtoPriu7SbrUd1DDA1PYwSe4tSGONk+jISORO7ToLPfX6TazVx3mbI6RBD3s57Y2VxqleDmpy0nXdzpqybPsePyO5NW56UYv3nALP/7L8wVOKS3S5ulVfvQnh0xrKz622M/jmg/y+hf8Q6SunqpSHPpS7vPV1uVwu/wAAAP//AwADhY7dAAQAAA==

View File

@ -0,0 +1,5 @@
https://dc.services.visualstudio.com/v2/track
Content-Type:application/x-json-stream
Content-Encoding:gzip
H4sIAAAAAAAACoxUTW/bOBD9KwLPokJR1OetTVrU6LYO6my32NuIHCpEaNKgqHSDwP99QdnZ1G0PexOo4Zs3773hM3GwRzKQN4fDu0d0cSY5iWY94ow3lAlatnesGXg3lFXRtHUlWP03yYn5iE9kIK2QspQ90gobpEKxmo6VllQp7EtWKsZrkTBhmsnwTMAUCh+NxMLPXzHMxjsykL+MU/576g2mkNYvqgje4sbNEZxMZG6DnwLsMdxes7IIfvQRjC2sl2BP12acE1phFBlI3SIbuVCUAdZUVH1Lx7bViVWtGUquOzhdMy5icGCLWT28ElI+Ooxy4AWvCkZ5T445URAhzTDCjHdPh0Rr1ewmnefr8fo5PJNHDGTg+Yu6J7grac3Vfh4XY9WV9dNk3HTtnTbTEiCmxjk5BH/AEA2uam132SunkhWs4A1njOTkE8h74zDb3GRbmybuJcier3MKRYUuO9qXo6a6aWoluGSw+vARg0P7A+onI4OfvY7Z2YTsos+1d9G4xS9ztnERpzPRgbwHO2MqWEJAF7NbiPfZB5jvyUCwrkoJ3SiZZmKsqk52kmngWiKDGsTINOs0VJo3quSt0CDLscNEElWvG5KTOwx748D+4acpaflfv8sfN6hhsXHnl7DGZFYPJCdvjYPwdKr4c0Z1rvp8MuMFaZPSZe06UHb289oadPFC33UThFSge6oqyajQktNeNYz2nRj7kZVM85LkKaNqkfFny0pWkZx8WVzaq2yTzPpuHP2nET9R/YEbplxla5RV1Snd9SOtoOqoUMAoNOVIOXAN0HKlIDW/8fIBQ5b8AuMuwLa77E2Q9yaijEtIY35be2932a2FqH3YX+zgdomHJWZfUJmAMmJicReWBPXeWPyF7MvcZw1Fd8rN7F9qv2IY/Wxiei8++7BfV3Z32tdVj/+5rhegr6R+GwkyEFiiJ8fj8fgvAAAA//8DAMBPo5zmBAAA

View File

@ -0,0 +1,5 @@
https://dc.services.visualstudio.com/v2/track
Content-Type:application/x-json-stream
Content-Encoding:gzip
H4sIAAAAAAAACpSUTW/cNhCG/4rAsyjzS/zQLbAbxAiCLGKjLXqjyKFNREsuKGrTwNj/XlBrw01v1UkYYIbvPPPOvKBkj4Am9OF0+u0Mqa6oRzXuIUaYxERgqh6JnJieKB8k04Yo+RfqUfwMP9GElHCOOgOYgwQsPBnxzIPD3oOhhHrCRtFq2qcVTS/IxsHDOToY8vo7lDXmhCb0R0w+/2hv2zi4JW9+KHmB+7RWm1wTcyj5qdgjlMMtoUPJc642LsOSnV2uaSusrdoQPZrQqIDMTHhMLIxYcKPwrFRoqsZAwLGg7TUtpgol2WVY/fd3QT7XBNVNbGB8IJgZdOmRt9W2Hma7wuPPU5O1M7tr8X4P77/TCzpDQRPr3+hey924Jd6s27zAGZaTLSuUG5ePR5s86tGp5BOUGmHndIYy5zXWhtg5ZbWm1GurxKi85iPjynMCXhM1euONlUIG5sYx+FkbJYLwjAovQYhZoR7tJJfF1phT96r9domQKurR14fusNgacjn+MouHK9H7/wG0yUYT4mTkUikQnHNr5MwIeCWdlGx2lqgwM6AOyGiEMlQRyg0jho9SaeUtMQ716It1zzFBd3+3W1E4b4PBnjuCRXAMGy8JNlrMZiaUBEZRj25zqjFteVu7+1Thqez9ogl9tMsK104/FPccK7i6lQbhT9nceSjZb6527wagZCADJbwlbfW01e4b+FjAVWg4Hsv2Wu8/KUwyQpqUrRRItTvY+tx9suszmhCMnDqrZ0cCETPn2mlHgmXBAbGjFTMJRAfLA5OeMiWCdXTWwByx4E2QqEfQ/NbtFtekfQCYhECx0NRio4LF1AHnys0axsbknWP3dWl5xlln2D4/4bEIVGND54CDlKMX7bF9Yd+QvJpFaNSjz1ASLP9q+Ut0Ja851O7VNd0vEL5tqd2SbnfQj5jw3zvtu+y+Q+natGxMbVNeB3Tp0RHsuhU47qdoekGHtibd436RmB6k0bpHD9WWup3ewmoggvLL5XL5BwAA//8DAIUFMsfPBAAA

View File

@ -0,0 +1,5 @@
https://dc.services.visualstudio.com/v2/track
Content-Type:application/x-json-stream
Content-Encoding:gzip
H4sIAAAAAAAACpSUTW/cNhCG/4rAsyjzS6SoW2C3qBsEWcRGWvQ2JIe2EK24oKhNA2P/e0F5DTe99UYMMDMvn3lnXsgCRyQj+XA6/XLGpaykJWXaQ4IJTZmi3DwyPYph5LLTnBmm5F+kJdNH/EFGYpT33FukEjVSFVhPnYyehoCWMx6Y6FWtCU8rGV8ITF3A8+SxS+tXzOuUFjKSP6YlpO+1N0ydn9MWupxmvF/WAouvYg45PWU4Yj7cMt7l5FKBae7m5GF+TVtxrdW6KZCR9AaZEypQBthTJa2hzphYVfWRoRdxgNe0aSmYF5i7NXx7FxRSWbD4UXRCdowKSy4tCVCg/sHBio8/TlXWzuyuxts9vD/HF3LGTEbRvtF9LXfj5+mmpNOMZ5xPkFfMNz4dj7AE0pJTTifMZcKd0/71eYYypaW5NrudJ1wKacnnh+YwQ4kpH3+C9/CK4P5/EDhjdmQkkvVSG4NKSglWO8EwGO21Fs4DM9EJ5B5Zb5Wx3DAurWBW9toMJgCznrTkaU4O5t/XnZ8VzA2BGaEFKrRCaW09QzlgrMICaO304G2QgxFqCIMEC8CtQ+Ot9tUxn8A/Tws293e7F5UPEC0N0jOqohfUBs2oHZSzjnEWBSctuU1LmZYtbWtzvxR8yjs/MpJfYV7xldyH7J+ngr5suUL9U9dmh5zC5kvz7gDOOtZxJmvSVk5bab5gmDL6ghXvY96u9f6TIrRgrErZcsalNAcoz81vsD6TkWAvuYfBeRaZclIOfvAsgogeGfSgHItsiCCj0IELoyJ47gYUngEGGzVpCVbDNbvHhdQMTO+ol1xRpVjF4QPtMWiphUMj61zeOTaf55pnPXgrdj+oQFXkA7XcRRq17oOqzfaNfUNyNZ8aSEs+Yl5w/teXP00+pzXF0lxd2PwE4cu21GPS7I78Pi307532XfLfMDd1WjAtdVWuA7q05IiwbhmP+y0aX8ih7knzuJ8kMXTaDkNLHgrksp3ewqZjisvL5XL5BwAA//8DAOjQ41XQBAAA

View File

@ -0,0 +1,5 @@
https://dc.services.visualstudio.com/v2/track
Content-Type:application/x-json-stream
Content-Encoding:gzip
H4sIAAAAAAAACpRTS2vcMBD+K2bOliPJ8vMWNildQsiSLG3pTZZGWRGvtMhyHoT970XeDWl668WYgW/me+kdnNwj9HB5OFw/o4sT5BDtMuKU14QKwpotrXve9qwqeMOqkpW/IQd7g2/QQyOUYqpDUmKNRGhakaE0imiNHaNMU16JtFM+TtC/g7SFxmersPDTDwyT9Q56+Gmd9i/ptrSFGv2si+BHXLspSqcSmU3wj0HuMWxWlBXBDz5KOxajV3I8wSac0rbCauihapAOXGhCJVZElF1DhqYxiVVlKCpuWnmCWRcxODkWk376JKR9dBhVzwteFpTwDo45aBll0jDICbdvh0Rr8ewqzfNlvPz27/CMAXqef7h7WnehRnuxn4bZjvri9I1yekqyD8EfMESLi0mL7nGU0XqXnS+tRosuQg53D9lmlNH4sP/i3MNJ//o/5G/T9etXVHNEvfKzi9ADY5DDrVQ76zBbXy1FEEpL0xFdKkqEUZx0uqaka8XQDZRRwxNm5V20bvbzlK1dxMew8IcevslxwhPzy6B2NqKKc0iiftWpG5vg9axi9mk/owUtGC0TaI6HOWb3qG1AFTHJ24b5vO8fCK85pYnKHAK6mG1k3GXf5bSDHrAqmZLtoKihYijLVrWKGsmNQiorKQZqaGtkaXitGW+EkYoNLXJFJerO1JADprSzpWBYtWhM2RLWVUhEWQrS1kISapAzHLTR1Vcfs7sx4TolVceXPIQmwrCWdGwwxNR1pUU6tjyXD0vO4YsWcrjB4HD8S/KtVcFP3sTs3ILsiwn3s0svOVsa8WIdeV3cvvLqCUOW0pLWpZ6eAzoej8c/AAAA//8DAKRNCYoQBAAA

View File

@ -0,0 +1,5 @@
https://dc.services.visualstudio.com/v2/track
Content-Type:application/x-json-stream
Content-Encoding:gzip
H4sIAAAAAAAACpRTTWvcMBD9K0Zny5Fk2Wv7FpKWhlC6tKEtvY1Ho6yIV1pkOUkJ+9+LvBvS9NabeDBv3sfohXnYExvY5eHw4ZF8mlnJklshJVTLheZycyfaQXWDbCq1qVXbNr9Yydwt/WYD22hEiT3xmlri2oiGj7VFbgz1UkgjVKMzJ9zPbHhh4CpDjw6pCvN3irMLng3sh/MmPOXd4CqcwmKqGCa68XMCj1nMNob7CHuK2yshqxjGkMBN1RQQptPYTHNmq5xhA2s2JEalDRdADdd1v+HjZmOzqsYKQmU7OI05nyh6mKrZPLwJMiF5SjioStWV4Kpnx5IZSJA9jDDT3e9DlrVmdp3xcoXX5/DCHimyQZWv6Z7oLnByFxj2e/Dmwjrv5h0r2SGGA8XkaM1ntTxNkFzwxXnJ1eTIJ1ayL9+K7QTJhrh/F9q3k/Wb/3D+GXDnPBU312vTGg3YnpsaBdcWFe9NK3jf6bEfhRRWSVayq+CT80tY5uLGJ7qPq0o2sI8wzXTSdxlx5xJhWmKW/rPN5dOzS1fBZCDzbGMwC6biLW4pKlFJUWeOJR2WVHwl4yJhouzpLi5n+n9GVKuEyMqWGMmnYgtpV3yCeccGRk0tEboRhRV6rOsOOxQWlEUS0IAehRWdhdqq1ki10RZQjh0pFECmt23WndstTgdl6lF2CLxruprrXgreNSB5p1FZNNI2ZN7FWnyZ8lyPgL1aS9CGays73svRctu2jdF52fo9XiM5N647VrJbip6mvyx/dhjDHGwqztUX70L4uvj8c4v1DJ6c589r+NcBHygWuTxwPt/lua/j8Xj8AwAA//8DAM+oZWsABAAA

View File

@ -0,0 +1,5 @@
https://dc.services.visualstudio.com/v2/track
Content-Type:application/x-json-stream
Content-Encoding:gzip
H4sIAAAAAAAACpRUTU/kOBT8K5GvmwR/O8mNbRgNGjGg6dbsam/+eAYvwWk5DixC/d9XTsMMMNrDXqLoyfVcr6r8nlHU94AGdLrfnz9AzDOqUQ5riWIqG8wbonZYDrQbiGipoj2j8i9Uo/AFntCAFLeW2B4aBhIa7rBoDPO2cQ56gonDVPDSU9/MaHhGOrQOHoKFdpq/Q5rDFNGA/gjRTY/lbh1aO06La9M0wkWcs462kLlO003S95CuN5i0aTJT1mFsx8nq8QibYS7d2uDQgIQCbCh3DdYgGs561RilfGElPAZLfaePsBAzpKjHdnZ3Pwm5KUfIdqAtZS1uaI8ONXI66zKD0TPsnvaF1qrZWanXa3n9HZ7RAyQ00PpV3WO7EzuGk/vZLGF0J+sX1Wifpj2kHGCVZ514HHUOU6xe7tiMAWJGNfq9QLaLtTDPaECf9DjDa/k83oQIn4pEj1O6+3q8t/16vkN1Ee9vsPla59via0cFldb0PXW6I56BYUJQLpR0XHgpu64XHmOpOoYp4dp3XFmwQljuPVGoRlfb6nrU2U/p/p1726MHF//Dgu3p5jxqM4L7ONJOpxvIpZMUBpjvqDRSO92zzhMNrHfWMCmgM8p1oBSjTFthcUcsUUToXgmhJKME1ehS29sQobo4W4PNrdO+bxyzuOHe0qZ3Ejd9x01vMMF+xWymmENcpmWuLmKGm7S68obl1bY6TfY2ZLB5SUXvP2XJ+nWa3GJz9TNOBLe4JZgV0JL3S66+gQsJbF7H3qXlpd8HCJUU40JlSQliroqD1Wc9FxtBMGJ1Zyz2mBvGOttZ7DX1FrAWmhvscec181Q6QhX32hLTAbVYg+u9RDWCkt5qfTAY81560TVUCGg4I6IxjqkGG0MUV9r0Xr3TsboaC6632vZ09Za7hnvSNT0xvvFSCsfLZevzf5PRNyN2RRXSKrkq8yrbS+x59x73eZpLGL5vN5Mran2BFGF8o9hlsGmaJ5+rl0BW7zR80+oszPtRP/3C5DdLOROWwY/zm1uwd7/m89sSy5Ks1qA/htj8sxp/Ntk7SFUJjg6xrIAfiMtlzGF3m0A7cJeTg49NDzW6Bz0vCe7XNbwugwhppXG2HMN3ES/DOIYZ7BTdjAYisWgZ5d0L3f8+J1mrFGOHw+HwLwAAAP//AwDo0RA69AUAAA==

View File

@ -0,0 +1,5 @@
https://dc.services.visualstudio.com/v2/track
Content-Type:application/x-json-stream
Content-Encoding:gzip
H4sIAAAAAAAACpSUW2vcMBCF/4qZZ8uRZfn6FjYtDSVkSUJb+qbLKBHxSosk50LY/17k3ZC2L6UvQsg+ozPfGfsNnNghTHC+3396QpcilJDsesQo6wjlpO7vaDexYarbivWUMTr+hBLsV3yFCXquVK1GJA12SLimLZGNUURrHGtaa8panmuK+wjTGwhbaXyyCisfv2GI1juY4Lt12j/nu4Wt1OwXXQU/46WLSTiVzWyDvw9ih2G7oXUVvPRJ2LmavRLzURYx5mqV1TBB2yOVjGtCBbaEN2NPZN+b7Ko1FBUzgzjKrEsYnJirqB8/DGmfHCY1sYo1FSVshEMJWiSRe5Ai4t3rPttamV3k83I9XrfTGzxhgImV73SP5c7UbM92US521mfHNYn4GNfVCJV8eIUS9sHvMSSLK7DzGHEn59c7ER8/H9/J2/jpBdWSUG/84lLOAUpYec2zSNa74uRwM1t0aX2YgnXRqn9VynFd3xbbWSTjw+6PeG6PkC//g/GVUA/WYXF5sc4UV1qYkehGUcKNYmTUHSXjwOUoaU0Nq6GEjXfJusUvsbh0Ce/D2hJM8FnMEY/+zoN6sAlVWkLu80eXfW+D14tKxUeSNa1oVdMmi5a0X1Jxg9oGVAlzE3dhOdX7S8I6Rmm2soSALhVbkR6KLyI+wATYNrUSg1TUUC6bZlCDokYwo5CKVnBJDR2MaAzrdM16boSq5YBMUYF6NB2UgHlwinVWu57Sehg0abuREs56TeTQIel4O6DsOFKZFR8ci+s560Yl1MhW6lwTbuqBjLU0xHRdq3m+bP3y3pGc5oEPUMJXDA7n31q+sir46E0qTlkXf0C4WVz+KRRr7s/WkZeV9oVXjxiKnJawLo/8KaDD4XD4BQAA//8DAL7FbEpbBAAA

View File

@ -0,0 +1,5 @@
https://dc.services.visualstudio.com/v2/track
Content-Type:application/x-json-stream
Content-Encoding:gzip
H4sIAAAAAAAACpSUTW/cNhCG/4rAsyjzUyJ1C+wWNYIgi9hoi95G5NAmohUXFLVpYOx/L6i1kTq33IgBZvjOM+/MC1ngiGQkH06n3864lJW0pMQ9JJjoKVOUD4+sH4UZJe8Gxbhg6h/SkvgRv5ORDMo57ixSiT1S5ZmmkwyOeo+WM+6Z0KrWhKeVjC8EYufxHB12af0T8xrTQkbyV1x8+lb/hti5OW2+y2nG+2UtsLgq5pDTU4Yj5sMt411OUyoQ525ODuZr2oprrdZFT0Yi1aC1AEOFEZaqoAUF7zWdmGR26AfbD/qaFpeCeYG5W/3XH4J8KgsWN4pOyI5RYcmlJR4K1B4mWPHx+6nK2pnd1Xi7h/fn+ELOmMko2je613I3bo436zbNeMb5BHnFfOPS8QiLJy055XTCXCLunM6Yp7TGUhE7N4AxnHsDg9KDN1ILOXjJ0Bs2aG+9hV71QTitg5+MHVRQXnDle1RqGkhLdpLzDCWmpXnVfjtHXAppyeeH5jBDCSkf383i4Ur0/heAVtlkJNpokHxAUN6g9aHXKKyWhjNUCuQgPIMQVC+d75ntA4LwTjk3cCG8lT1pySdwz3HB5v5ut6JyHoKlXjpGVXCCWt8zao2a7MQ4C4KTltympcRlS9va3C8Fn/LeLxnJ7zCveO30Q3bPsaArW64Q/u6rOw85+c2V5ocBOOtYx5msSVs5baX5gj5mdAUrjse8vdb7KUX0grEqZcsZl9IcoDw3f8D6TEaCWnIHZnIsMDVJaZxxLIAIDhloUBMLzASQQfSei0EFcHwyKBwD9DZUKlj91uwWD3ZQjkmgXE6WKgycTj4EqllQclKuMn/Hsfk81zzrwFlhBzoNylMVuKGWT4GGvtde1c/2hX1D8moWZUhLPmJecP5fy5+iy2lNoTSvrmneQfiyLfWWNLuDvsWF/rvTvkvuK+amTgviUjfldUCXlhwR1i3jcT9F4ws51DVpHveLJFTXW6lb8lAgl+30Fu47Zs3lcrn8BwAA//8DAE8bYwfOBAAA

View File

@ -0,0 +1,5 @@
https://dc.services.visualstudio.com/v2/track
Content-Type:application/x-json-stream
Content-Encoding:gzip
H4sIAAAAAAAACoxUTW/cNhD9KwLPokxR1Ad1S+0GXaSujaybFr2NyOGaMJdcUJRTw9j/HlC7rrNpD70J1PDNm/fe8JV42CMZyYfD4edn9GkmJUl2PeKMd5QJWvcPrBv5MDZ11feSc8n+IiWxn/CFjKQXStVKIm2wQyo0a+nUGEW1RlmzWjPeiowJu5mMrwRspfHZKqzC/AXjbIMnI/nDeh2+5t5gK+XCoqsYHG78nMCrTOY+hl2EPcb7a1ZXMUwhgXWVCwrc6dqMc0arrCYjaUTfthwGygcuqTAtp6B1SyfWMNl3vez69nTN+oTRg6tm/fROSIfkMamRV7ypGOWSHEuiIUGeYYIZH14Omdaq2U0+L9fj9XN8Jc8YycjLN3VPcFfK2av9PC3W6SsXdjvrd9fBG7tbIqTcuCSHGA4Yk8VVrbtt8c6pZhWreMcZIyW5BfVoPRabm+LO5YmlAiW57OnUC02FqQcq68lQ03WtFlwxWH34hNGj+w711qoY5mBScTahuOhzHXyyfgnLXGx8wt2Z6Eg+gpsxFywxok/FPaTH4heYH8lIsG1qBcOkmGFiappBDYoZ4EYhgxbExAwbDDSGd7rmvTCg6mnATBK1NB0pyQPGvfXgfg27Xdbyn36XP27QwOLSNixxjcmsn0hJfrIe4sup4vcZ9bnqt5MZb0ibnC7n1oGKs5/XzqJPF/qumyCUBiOpbhSjwihOpe4YlYOY5MRqZnhNypxRvaj0o2U1a0hJPi8+71WxyWZ9tZ7+3YkfqH7HDXOuijXKk5GtknKgIKeWit5IOgAHalCZWnSD6MCQktwE9YSxyH6B9Rdgd9viQ1SPNqFKS8xj/rn2vtsW9w6SCXF/sYN3SzosqfiM2kZUCTOLh7hkqI/W4b/Ivs191lAMp9zM4a32C8YpzDbl9+LWertfd3Z7WthVkP+5rxeo76z+MxNkJLCkQI7H4/EbAAAA//8DAI0n1yTnBAAA

View File

@ -0,0 +1,5 @@
https://dc.services.visualstudio.com/v2/track
Content-Type:application/x-json-stream
Content-Encoding:gzip
H4sIAAAAAAAACpSUTW/cNhCG/4rAsyjzSxSpW2C3qBsEWcRGWvQ2Ioc2Ea24oKhNA2P/e0F5jdS99UYM8M7Hw3fmhSxwRDKSD6fTL2dcykpaUuIeEkxoyhTlwyPTozCj5N3AreSm/4u0JH7EH2Qkg3KOO4tUokaqPOvpJIOj3qPljHsmelVzwtNKxhcCsfN4jg67tH7FvMa0kJH8ERefvtfaEDs3p813Oc14v6wFFlebOeT0lOGI+XDLeJfTlArEuZuTg/lVtuJas3XRk5FINfS9AEOFEZaq0AsK3vd0YpLZQQ9WD/2rLC4F8wJzt/pvPxvyqSxY3Cg6ITtGhSWXlngoUGeYYMXHH6fa1s7srsbbPbw/xxdyxkxG0b7RfU134+Z4U9JpxjPOJ8gr5huXjkdYPGnJKacT5hJx57SPPs9QYlqaa7HbOeJSSEs+PzSHGUpI+fgO3sMrgvv/QeCMeSIj6U0Pkg8Iyhu0Pugehe2l4QyVAjkIzyAEpaXzmlkdEIR3yrmBC+Gt1KQlT3OaYP593flZwSbj2SC0QIVWKK2tYygNhn5A5kHrSRtnvTSDUMYbCRaA2wkHZ7WrjvkE7jku2Nzf7V5UzkOw1EvHqApOUOs1o9aoyU6MsyA4acltWkpctrStzf1S8Cnv/MhIfoV5xVdyH7J7jgVd2XKF+qeuxQ45+c2V5qcDOOtYx5msoq2cttJ8QR8zuoIV72Pervn+IxFaMFZb2XLGpTQHKM/Nb7A+k5FgL7kDMzkWmJqkNM44FkAEhwx6UBMLzASQQWjPxaACOD4ZFI4BehsqZayGa3aPm2GSYnJIg2eeql4ANag8ZTAEqftgDEzvODaf56qzDpwVdqDToDxVgRtq+RRo0Lr3qhbbN/YNydV8ypCWfMS84PyvkT9Fl9OaQmmuLmzeQfiyLfWYNLsjv8eF/r3TvkvuG+am/hbEpa7K9YMuLTkirFvG436LxhdyqHvSPO4nSahOW9m35KFALtvpLaw7Zs3lcrn8AwAA//8DABTjbWrPBAAA

View File

@ -0,0 +1,5 @@
https://dc.services.visualstudio.com/v2/track
Content-Type:application/x-json-stream
Content-Encoding:gzip
H4sIAAAAAAAACpRUTU/kOBT8K5GvmwR/J86NbRgNGjGg6dbsam/+eAYvwWk5DixC/d9XTsMMMNrDXqLoya9cr6r8nlHU94AGdLrfnz9AzDOqUQ5riWIqG8wb0u2wHGg/MNoSIhln3V+oRuELPKEBddxaYhU0DCQ03GHRGOZt4xwogonDVPCCqW9mNDwjHVoHD8FCO83fIc1himhAf4Topsdytw6tHafFtWka4SLOWUdbyFyn6Sbpe0jXG0zaNJkp6zC242T1eGybYS5obXBoQIx3QlDdN7SnquFe0EY7JxqDGVad7JTsxLEtxAwp6rGd3d1PQm7KEbIdaEtZixuq0KFGTmddZjB6ht3TvtBaNTsr9Xotr7/DM3qAhAZav6p7hDuxYzi5n80SRneyflGN9mnaQ8oBVnnWicdR5zDF6uWOzRggZlSj30vLdrEW5hkN6JMeZ3gtn8ebEOFTkehxSndfj/e2X893qC7i/Q02X+t8W3ztqaDSGqWo0z3xDAwTgnLRSceFl7LvlfAYy65nmBKufc87C1YIy70nHarR1ba6HnX2U7p/59726MHF/7Bge7o5j9qM4D6OtNPpBnKJmMSdwQ57bISSTBGhNOkFLfiEOqqs0VjgjlIhOuwwxqojknoqiTcEM1SjS21vQ4Tq4mwNNrdOe9U4ZnHDvaWNchI3qudGGUywpwTVaDPFHOIyLXN1ETPcpNWVNyyvttVpsrchg81LKnr/KUvWr9PkFpurn3EiuMXtkcnVkvdLrr6BCwlsXsfepeUF70MLlRTjQmVJCWKuioPVZz0XG0EwYnVvLPaYG8Z621vsNfUWsBaaG+xx7zXzVDpCO+61JaYHarEGp7xENYKS3mp9MNoIbYxkDVXSNNwy1vTKmIZ0wjBPvfHEvNOxuhpLn7LaKqq6xnTcNdyTvlHE+MZLKRwvl63P/01G34zYF1VI28lVmVfZXmLP+/d9n6e5hOH7djO5otYXSBHGN4pdBpumefK5eglk9U7DN1BnYd6P+ukXJr9ZypmwDH6c39yCvfs1n9+WWJZktQb9McTmn9X4s8neQapKcHSIZQX86Lhcxhx2twm0A3c5OfgIeqjRPeh5SXC/ruF1GURIK42z5Ri+i3gZxjHMYKfoZjQwzlrW9+SF7X8eU6plivLD4XD4FwAA//8DAMCgE3DyBQAA

View File

@ -0,0 +1,5 @@
https://dc.services.visualstudio.com/v2/track
Content-Type:application/x-json-stream
Content-Encoding:gzip
H4sIAAAAAAAACpSTTWvcMBCG/4qZs+XIsvx5C0lLQyld2tCW3uTRKBHxSoskpw1h/3uRd0Oa3noRw6AZvfO8o2dwak8wweXh8O6RXIpQQrJbSnDRMS5Z3d/ybhLD1Iiqrhs+NuNPKMF+pCeYoJeINY7EGuqISc1bNjcGmdY01rzWXLQy91R3EaZnULbS9GiRKh+/UYjWO5jgu3Xa/8pvK1vh4lddBb/QjYtJOcxidsHfBbWnsLvidRX87JOyS7V4VMupLFLM3SqrYYJG9m0r1MDEIEYmTSuY0rplM2/42Hf92PXtqcy6RMGppYr64VWQ9slRwklUoqk4EyMcS9AqqTzDrCLdPh2yrI3Zdc6XW3oLp2d4pACTKF/ontpd4GIv9nFe7aIvTmdS8SFup1GYfHiCEg7BHygkSxuwyxhpPy9Ptyo+vD/dyWF895twTaSv/OoSTFBDCRuvZVHJelecFV4tllyCEj5/LXaLSsaH/RviX0/cbv4D2yeF99ZRcXO9rYlErczIdIOcSYOCjbrjbBzkPM685kZkbVfeJetWv8bixiW6C5tKmOC9WiKd9F0GvLeJMK0hS//R5c3ZBa9XTMWrOTWveFXzJhet6bCm4gtpGwgT5SFuw3ru90+J6ATnWcoaArlU7FS6Lz6oeA8TUNvUqIYZueFybpoBB+RGCYPEVavkzA0fjGqM6HQtemkU1vNAArkiPZoOSqC8C8W2flJj33SmZnNvWiZb6tlg2oYh72gwbUeIebRXjsXnJdeNqHAUY8/mXmomTT2wsZ4NM13Xapkf2z7TC5KzxXKAEj5ScLT8NfIni8FHb1Jx9rp4A+HL6vI/Lzbff1nHfm+0rz0+UCiyW8q6vMVng47H4/EPAAAA//8DAIkoyW8uBAAA

View File

@ -0,0 +1,5 @@
https://dc.services.visualstudio.com/v2/track
Content-Type:application/x-json-stream
Content-Encoding:gzip
H4sIAAAAAAAACpRTTU/cMBD9K9Gc42A7zodzQwtVEUKsALVVb449BotgrxyHD6H975Wziyi99WJZI72Z9968eQevnhAGON3tzp/RpxlKSG4tccpbQgVh3R1tB94PNa8YE3Xf1r+hBHeJbzBAJ7RmWiKpsUUiDG3IWFtNjEHJKDOUNyL3VPczDO+gXGXw2WmswvwD4+yChwF+Om/CS56tXKWnsJgqhgkv/JyU15nMNob7qJ4wbjeUVTGMISk3VVPQajrAZpxzt8oZGKAWXdNw1RPec0mEbThRxjRkpDWVXdvJtmsOMOcTRq+majaPn4RMSB6THnjF64oSLmFfglFJZQ2jmvHubZdprZ6d5Xq5ltfv8A7PGGHg5Ye7h3YnenInT/O4uMmcHN6k5scsexfDDmNyuJq06p4mlVzwxXHSZnLoE5RwfVtsJ5VsiE9fnLs96L/4D/l3efr5K+olodmExScYgEEJV0o/OI/FxdmaA6GNspKYWlMirOZEmpYS2YtRjpRRyzNmE3xyfgnLXFz4hPdxpQ8DfFPTjAfip1E/uIQ6LTFr+tXmaGxjMItOxaf7jFa0YrTOoCXtllTcoHERdcKs7i4ux37/QHjLKc1UlhjRp2Kr0kPxXc0PMAA2NdOqHzW1VIx13eteU6u41UhVo8RILe2tqi1vDeOdsEqzsUeuqUIjbQslYF52seYLragNty1hvLFEdF1NRm2RjCOXHI00rcqR+PSxuJ4yTmqlJZcdGTthiLCsJ5KNlti2bYzIw9Zr+bDkuHvRQwmXGD1Of0m+cjqGOdhUHENQfDHhZvH5kIs1EC/Ok9fV7bOgHzEWeVvK+RzT44L2+/3+DwAAAP//AwBMR4vFDwQAAA==

View File

@ -60,12 +60,12 @@
"*.asset": "yaml",
"*.meta": "yaml",
"*.prefab": "yaml",
"*.unity": "yaml",
"*.unity": "yaml"
},
"explorer.fileNesting.enabled": true,
"explorer.fileNesting.patterns": {
"*.sln": "*.csproj",
"*.sln": "*.csproj"
},
"dotnet.defaultSolution": "mario-like-platformer.sln",
"dotnet.defaultSolution": "Mario-like platformer.slnx",
"chatgpt.openOnStartup": true
}

View File

@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: 5a27426cd347d554283a078504311f0b
folderAsset: yes
timeCreated: 1469195114
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,57 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: mtl_lava_diffuse
m_Shader: {fileID: 4800000, guid: 036402a4b0d5f4342bbf1b572714f64e, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 5
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 2000
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _Distort:
m_Texture: {fileID: 2800000, guid: 0ebfaeff4eb7328498165095f9cfc32f, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _LavaTex:
m_Texture: {fileID: 2800000, guid: 93a726948508cc14eab67fb1abe2daa8, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 7.739765, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 348fa4d278c53ad4dacd07df1e63a248, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0.45699874, y: 0}
- _MainTex2:
m_Texture: {fileID: 2800000, guid: bef54341b6d21864c82d47f3bed4c7db, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0.28963017, y: 0}
- _MainTex_Add:
m_Texture: {fileID: 2800000, guid: 1a5d8cd24a805cd44b00c7f1e1e4d287, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 1.5691679, y: 0}
m_Ints: []
m_Floats:
- _Displacement: 0.0375
- _DistortX: 1
- _DistortY: 0
- _RefractTexTiling: 1
m_Colors:
- _ChannelFactor: {r: -0.3281326, g: 0.5920941, b: 0.7360384, a: 0}
- _Color: {r: 1, g: 1, b: 1, a: 0.07058824}
- _SpeedStrength: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@ -1,15 +0,0 @@
fileFormatVersion: 2
guid: c5b6432eb5c5ecd41a1c5065d2686911
timeCreated: 1469219568
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Materials/mtl_lava_diffuse.mat
uploadId: 128561

View File

@ -1,57 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: mtl_lava_distort
m_Shader: {fileID: 4800000, guid: 6a151f652f5ba03458e9a7cd03ae88e8, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 5
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _Distort:
m_Texture: {fileID: 2800000, guid: 0ebfaeff4eb7328498165095f9cfc32f, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _LavaTex:
m_Texture: {fileID: 2800000, guid: 93a726948508cc14eab67fb1abe2daa8, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 4.551285, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 348fa4d278c53ad4dacd07df1e63a248, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex2:
m_Texture: {fileID: 2800000, guid: bef54341b6d21864c82d47f3bed4c7db, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0.28963017, y: 0}
- _MainTex_Add:
m_Texture: {fileID: 2800000, guid: 1a5d8cd24a805cd44b00c7f1e1e4d287, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 1.5691679, y: 0}
m_Ints: []
m_Floats:
- _Displacement: 0.0375
- _DistortX: 1.0714285
- _DistortY: 0
- _RefractTexTiling: 1
m_Colors:
- _ChannelFactor: {r: -0.3281326, g: 0.5920941, b: 0.7360384, a: 0}
- _Color: {r: 1, g: 1, b: 1, a: 0.07058824}
- _SpeedStrength: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@ -1,13 +0,0 @@
fileFormatVersion: 2
guid: 787cb25de3401c44b939f2599cda764c
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Materials/mtl_lava_distort.mat
uploadId: 128561

View File

@ -1,57 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: mtl_lava_distort_transparent
m_Shader: {fileID: 4800000, guid: 0803b816564bc844b9300c6e1572fcff, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 5
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _Distort:
m_Texture: {fileID: 2800000, guid: 0ebfaeff4eb7328498165095f9cfc32f, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _LavaTex:
m_Texture: {fileID: 2800000, guid: aed369d136cf0174e8e04dfb34567e6a, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 7.739765, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 348fa4d278c53ad4dacd07df1e63a248, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex2:
m_Texture: {fileID: 2800000, guid: bef54341b6d21864c82d47f3bed4c7db, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0.28963017, y: 0}
- _MainTex_Add:
m_Texture: {fileID: 2800000, guid: 1a5d8cd24a805cd44b00c7f1e1e4d287, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 1.5691679, y: 0}
m_Ints: []
m_Floats:
- _Displacement: 0.0375
- _DistortX: 1.0714285
- _DistortY: 0
- _RefractTexTiling: 1
m_Colors:
- _ChannelFactor: {r: -0.3281326, g: 0.5920941, b: 0.7360384, a: 0}
- _Color: {r: 1, g: 1, b: 1, a: 0.07058824}
- _SpeedStrength: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@ -1,13 +0,0 @@
fileFormatVersion: 2
guid: 4c11e54477bc94744a2fa3433d9fa306
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Materials/mtl_lava_distort_transparent.mat
uploadId: 128561

View File

@ -1,55 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: mtl_lava_simple
m_Shader: {fileID: 4800000, guid: bec21333d7f8cf84cb75cab616acf589, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 5
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _Distort:
m_Texture: {fileID: 2800000, guid: f9a73fa499a3f48499ece92e4e81aa05, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _LavaTex:
m_Texture: {fileID: 2800000, guid: 93a726948508cc14eab67fb1abe2daa8, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 4.551285, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 348fa4d278c53ad4dacd07df1e63a248, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex2:
m_Texture: {fileID: 2800000, guid: bef54341b6d21864c82d47f3bed4c7db, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0.28963017, y: 0}
- _MainTex_Add:
m_Texture: {fileID: 2800000, guid: 1a5d8cd24a805cd44b00c7f1e1e4d287, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 1.5691679, y: 0}
m_Ints: []
m_Floats:
- _Displacement: 0.0375
- _RefractTexTiling: 1
m_Colors:
- _ChannelFactor: {r: -0.3281326, g: 0.5920941, b: 0.7360384, a: 0}
- _Color: {r: 1, g: 1, b: 1, a: 0.07058824}
- _SpeedStrength: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@ -1,13 +0,0 @@
fileFormatVersion: 2
guid: 6042eaad9823b6f488f160b2bce47ac7
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Materials/mtl_lava_simple.mat
uploadId: 128561

View File

@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: 98de54e952a28364c84cbacefd011abb
folderAsset: yes
timeCreated: 1469195114
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,106 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &154346
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 421958}
- component: {fileID: 3393480}
- component: {fileID: 2355910}
- component: {fileID: 11457130}
m_Layer: 0
m_Name: Lava_diffuse
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &421958
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 154346}
serializedVersion: 2
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067}
m_LocalPosition: {x: 1, y: 0, z: -0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!33 &3393480
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 154346}
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &2355910
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 154346}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: c5b6432eb5c5ecd41a1c5065d2686911, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &11457130
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 154346}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e3d28cb150ad86f4a8100312a4aea7a1, type: 3}
m_Name:
m_EditorClassIdentifier:
uvAnimationRate: {x: 0.06, y: 0}
textureName: _LavaTex

View File

@ -1,15 +0,0 @@
fileFormatVersion: 2
guid: 86672f35e84daff4699b96a3c82ee675
timeCreated: 1469222714
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Prefabs/Lava_diffuse.prefab
uploadId: 128561

View File

@ -1,106 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &100000
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 400000}
- component: {fileID: 3300000}
- component: {fileID: 2300000}
- component: {fileID: 11400000}
m_Layer: 0
m_Name: Lava_distort
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &400000
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
serializedVersion: 2
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!33 &3300000
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &2300000
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 787cb25de3401c44b939f2599cda764c, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e3d28cb150ad86f4a8100312a4aea7a1, type: 3}
m_Name:
m_EditorClassIdentifier:
uvAnimationRate: {x: 0.06, y: 0}
textureName: _LavaTex

View File

@ -1,13 +0,0 @@
fileFormatVersion: 2
guid: 7c9fb993626aaf8488be64eb9feadbbc
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Prefabs/Lava_distort.prefab
uploadId: 128561

View File

@ -1,106 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &100000
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 400000}
- component: {fileID: 3300000}
- component: {fileID: 2300000}
- component: {fileID: 11400000}
m_Layer: 0
m_Name: Lava_simple
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &400000
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
serializedVersion: 2
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!33 &3300000
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &2300000
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 6042eaad9823b6f488f160b2bce47ac7, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e3d28cb150ad86f4a8100312a4aea7a1, type: 3}
m_Name:
m_EditorClassIdentifier:
uvAnimationRate: {x: 0.06, y: 0}
textureName: _LavaTex

View File

@ -1,13 +0,0 @@
fileFormatVersion: 2
guid: d2debcb3c417b07419457484a835eb7d
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Prefabs/Lava_simple.prefab
uploadId: 128561

View File

@ -1,106 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &100000
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 400000}
- component: {fileID: 3300000}
- component: {fileID: 2300000}
- component: {fileID: 11400000}
m_Layer: 0
m_Name: Lava_transparent
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &400000
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
serializedVersion: 2
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067}
m_LocalPosition: {x: 1, y: 0, z: -0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!33 &3300000
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &2300000
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 4c11e54477bc94744a2fa3433d9fa306, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 100000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e3d28cb150ad86f4a8100312a4aea7a1, type: 3}
m_Name:
m_EditorClassIdentifier:
uvAnimationRate: {x: 0.06, y: 0}
textureName: _LavaTex

View File

@ -1,15 +0,0 @@
fileFormatVersion: 2
guid: 39639071f8fd3cd4da6c9e24297512a2
timeCreated: 1469195249
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Prefabs/Lava_transparent.prefab
uploadId: 128561

View File

@ -1,27 +0,0 @@
***********************************
Lava Flowing Shader
Version 1.2
Date 22 July 2016
For Unity 5.3.5 or up
by Moonflower Carnivore
***********************************
Lava Flowing Shader allows you to create lava flowing effect on mesh/plane.
It simulates the liquid distortion effect that a simple scrolling UV is
incapable of. Please watch our youtube video of the effect:
https://www.youtube.com/watch?v=ItXkajNdp44
For detailed instructions about using this Lava Flowing Shader please
read our online google doc here:
https://docs.google.com/document/d/1BkCaZLZ2feWL14LdHH_6GFnwTE3WilYUUSN5DMCbObE/edit?usp=sharing
We are Moonflower Carnivore and we provide game assets like particle
effects and simple shaders. Please like our Facebook page
https://www.facebook.com/MoonflowerCarnivore
and rate our packages in Unity Asset Store if you like our work!

View File

@ -1,13 +0,0 @@
fileFormatVersion: 2
guid: 85580c0999f852645a0f8bf54b7116bb
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/ReadMe.txt
uploadId: 128561

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +0,0 @@
fileFormatVersion: 2
guid: 4b5197d2a37c07c4ea690670a25a282d
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Scenes/FLowingLava.unity
uploadId: 128561

View File

@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: ef4e4c1c038208c4da515c42b8b133bb
folderAsset: yes
timeCreated: 1469195114
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,20 +0,0 @@
using UnityEngine;
using System.Collections;
public class ScrollingUVs_Layers : MonoBehaviour
{
//public int materialIndex = 0;
public Vector2 uvAnimationRate = new Vector2( 1.0f, 0.0f );
public string textureName = "_MainTex";
Vector2 uvOffset = Vector2.zero;
void LateUpdate()
{
uvOffset += ( uvAnimationRate * Time.deltaTime );
if( GetComponent<Renderer>().enabled )
{
GetComponent<Renderer>().sharedMaterial.SetTextureOffset( textureName, uvOffset );
}
}
}

View File

@ -1,17 +0,0 @@
fileFormatVersion: 2
guid: e3d28cb150ad86f4a8100312a4aea7a1
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Scripts/ScrollingUVs_Layers.cs
uploadId: 128561

View File

@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: 794b02ca7762ed94aa4db287ff5bee67
folderAsset: yes
timeCreated: 1469195114
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,60 +0,0 @@
// Simplified Diffuse shader. Differences from regular Diffuse one:
// - no Main Color
// - fully supports only 1 directional light. Other lights can affect it, but it will be per-vertex/SH.
Shader "Lava Flowing Shader/Diffuse/Distort"
{
Properties
{
_DistortX ("Distortion in X", Range (0,2)) = 1
_DistortY ("Distortion in Y", Range (0,2)) = 0
_MainTex ("_MainTex RGBA", 2D) = "white" {}
_Distort ("_Distort A", 2D) = "white" {}
_LavaTex ("_LavaTex RGB", 2D) = "white" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 150
CGPROGRAM
#pragma surface surf Lambert noforwardadd
sampler2D _MainTex;
sampler2D _Distort;
sampler2D _LavaTex;
fixed _DistortX;
fixed _DistortY;
struct Input
{
float2 uv2_LavaTex;
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o)
{
fixed4 c = tex2D(_MainTex, IN.uv_MainTex);
fixed distort = tex2D(_Distort, IN.uv_MainTex).a;
fixed2 uv_scroll;
uv_scroll = fixed2(IN.uv2_LavaTex.x-distort*_DistortX,IN.uv2_LavaTex.y-distort*_DistortY);
fixed4 tex2 = tex2D(_LavaTex,uv_scroll);
c.rgb = lerp(tex2.rgb,c.rgb,c.a);
o.Albedo = c.rgb;
//Use the below two lines if you want the rock part be diffuse but lava part is unlit
//o.Albedo = c.rgb*c.a;
//o.Emission = c.rgb*(1-c.a);
o.Alpha = c.a;
}
ENDCG
}
Fallback "Mobile/VertexLit"
}

View File

@ -1,16 +0,0 @@
fileFormatVersion: 2
guid: 036402a4b0d5f4342bbf1b572714f64e
timeCreated: 1469219369
licenseType: Store
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Shaders/Diffuse_Lava_Distort.shader
uploadId: 128561

View File

@ -1,71 +0,0 @@
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Lava Flowing Shader/Unlit/Distort"
{
Properties {
//_Color ("Main Color", Color) = (1,1,1)
_DistortX ("Distortion in X", Range (0,2)) = 1
_DistortY ("Distortion in Y", Range (0,2)) = 0
_MainTex ("_MainTex RGBA", 2D) = "white" {}
_Distort ("_Distort A", 2D) = "white" {}
_LavaTex ("_LavaTex RGB", 2D) = "white" {}
}
Category {
Tags { "RenderType"="Opaque" }
Lighting Off
SubShader {
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
sampler2D _Distort;
sampler2D _LavaTex;
struct appdata_t {
fixed4 vertex : POSITION;
fixed2 texcoord : TEXCOORD0;
};
struct v2f {
fixed4 vertex : SV_POSITION;
fixed2 texcoord : TEXCOORD0;
fixed2 texcoord1 : TEXCOORD1;
};
fixed4 _MainTex_ST;
fixed4 _LavaTex_ST;
fixed _DistortX;
fixed _DistortY;
v2f vert (appdata_t v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);
o.texcoord1 = TRANSFORM_TEX(v.texcoord,_LavaTex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
fixed4 tex = tex2D(_MainTex, i.texcoord);
fixed distort = tex2D(_Distort, i.texcoord).a;
fixed4 tex2 = tex2D(_LavaTex, fixed2(i.texcoord1.x-distort*_DistortX,i.texcoord1.y-distort*_DistortY));
tex = lerp(tex2,tex,tex.a);
return tex;
}
ENDCG
}
}
}
}

View File

@ -1,14 +0,0 @@
fileFormatVersion: 2
guid: 6a151f652f5ba03458e9a7cd03ae88e8
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Shaders/Unlit_Lava_Distort.shader
uploadId: 128561

View File

@ -1,72 +0,0 @@
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Lava Flowing Shader/Unlit/Distort Transparent"
{
Properties {
//_Color ("Main Color", Color) = (1,1,1)
_DistortX ("Distortion in X", Range (0,2)) = 1
_DistortY ("Distortion in Y", Range (0,2)) = 0
_MainTex ("_MainTex RGBA", 2D) = "white" {}
_Distort ("_Distort A", 2D) = "white" {}
_LavaTex ("_LavaTex RGBA", 2D) = "white" {}
}
Category {
//Tags { "RenderType"="Opaque" }
Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
Blend SrcAlpha OneMinusSrcAlpha
Cull back Lighting Off ZWrite Off
SubShader {
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
sampler2D _Distort;
sampler2D _LavaTex;
struct appdata_t {
fixed4 vertex : POSITION;
fixed2 texcoord : TEXCOORD0;
};
struct v2f {
fixed4 vertex : SV_POSITION;
fixed2 texcoord : TEXCOORD0;
fixed2 texcoord1 : TEXCOORD1;
};
fixed4 _MainTex_ST;
fixed4 _LavaTex_ST;
fixed _DistortX;
fixed _DistortY;
v2f vert (appdata_t v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);
o.texcoord1 = TRANSFORM_TEX(v.texcoord,_LavaTex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
fixed4 tex = tex2D(_MainTex, i.texcoord);
fixed distort = tex2D(_Distort, i.texcoord).a;
fixed4 tex2 = tex2D(_LavaTex, fixed2(i.texcoord1.x-distort*_DistortX,i.texcoord1.y-distort*_DistortY));
tex = lerp(tex2,tex,tex.a);
return tex;
}
ENDCG
}
}
}
}

View File

@ -1,14 +0,0 @@
fileFormatVersion: 2
guid: 0803b816564bc844b9300c6e1572fcff
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Shaders/Unlit_Lava_Distort_Transparent.shader
uploadId: 128561

View File

@ -1,64 +0,0 @@
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Lava Flowing Shader/Unlit/Simple"
{
Properties {
//_Color ("Main Color", Color) = (1,1,1)
_MainTex ("_MainTex RGBA", 2D) = "white" {}
_LavaTex ("_LavaTex RGB", 2D) = "white" {}
}
Category {
Tags { "RenderType"="Opaque" }
Lighting Off
SubShader {
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
sampler2D _LavaTex;
struct appdata_t {
fixed4 vertex : POSITION;
fixed2 texcoord : TEXCOORD0;
};
struct v2f {
fixed4 vertex : SV_POSITION;
fixed2 texcoord : TEXCOORD0;
fixed2 texcoord1 : TEXCOORD1;
};
fixed4 _MainTex_ST;
fixed4 _LavaTex_ST;
v2f vert (appdata_t v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);
o.texcoord1 = TRANSFORM_TEX(v.texcoord,_LavaTex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
fixed4 tex = tex2D(_MainTex, i.texcoord);
fixed4 tex2 = tex2D(_LavaTex, i.texcoord1);
tex = lerp(tex2,tex,tex.a);
return tex;
}
ENDCG
}
}
}
}

View File

@ -1,14 +0,0 @@
fileFormatVersion: 2
guid: bec21333d7f8cf84cb75cab616acf589
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Shaders/Unlit_Lava_Simple.shader
uploadId: 128561

View File

@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: f322c4288d0184a4d9b44d7945b17307
folderAsset: yes
timeCreated: 1469195114
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 266 KiB

View File

@ -1,62 +0,0 @@
fileFormatVersion: 2
guid: 93a726948508cc14eab67fb1abe2daa8
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 7
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: 7
maxTextureSize: 512
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
textureType: 5
buildTargetSettings: []
spriteSheet:
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Textures/lava1.png
uploadId: 128561

Binary file not shown.

Before

Width:  |  Height:  |  Size: 378 KiB

View File

@ -1,62 +0,0 @@
fileFormatVersion: 2
guid: aed369d136cf0174e8e04dfb34567e6a
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 7
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: 12
maxTextureSize: 512
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 5
buildTargetSettings: []
spriteSheet:
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Textures/lava1_transparent.png
uploadId: 128561

Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 KiB

View File

@ -1,62 +0,0 @@
fileFormatVersion: 2
guid: 348fa4d278c53ad4dacd07df1e63a248
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 7
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 512
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 1
textureType: 5
buildTargetSettings: []
spriteSheet:
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Textures/lava2.png
uploadId: 128561

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

View File

@ -1,62 +0,0 @@
fileFormatVersion: 2
guid: 0ebfaeff4eb7328498165095f9cfc32f
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 0
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 1
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 7
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 512
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
textureType: 5
buildTargetSettings: []
spriteSheet:
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 33635
packageName: Lava Flowing Shader
packageVersion: 1.2
assetPath: Assets/Lava_Flowing_Shader/Textures/lava3.png
uploadId: 128561

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -32,7 +32,7 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 4445986152597778029}
- {fileID: 8627206344477583323}
- {fileID: 4479595212008154282}
- {fileID: 675627477356491008}
- {fileID: 7722770590907352781}
m_Father: {fileID: 0}
@ -40,7 +40,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 150}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8712991107362882286
CanvasRenderer:
@ -63,15 +63,15 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, a: 0.7058824}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
@ -103,9 +103,9 @@ MonoBehaviour:
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_PressedColor: {r: 1, g: 1, b: 1, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_DisabledColor: {r: 1, g: 1, b: 1, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
@ -120,13 +120,11 @@ MonoBehaviour:
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 6850433135119910662}
m_TargetGraphic: {fileID: 0}
symbolText: {fileID: 91819688666493321}
backgroundImage: {fileID: 6850433135119910662}
selectionHighlight: {fileID: 5330937721467949768}
normalColor: {r: 1, g: 1, b: 1, a: 1}
selectedColor: {r: 0.2, g: 0.53333336, b: 0.74509805, a: 1}
highlightColor: {r: 0.2, g: 0.53333336, b: 0.74509805, a: 0.3}
highlightColor: {r: 0.22352943, g: 0.9803922, b: 1, a: 1}
--- !u!1 &2423717193611656995
GameObject:
m_ObjectHideFlags: 0
@ -152,17 +150,17 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2423717193611656995}
m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 7476718851314200889}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 110}
m_SizeDelta: {x: 100, y: 100}
m_AnchoredPosition: {x: 0, y: 80}
m_SizeDelta: {x: 50, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6586906075369708484
CanvasRenderer:
@ -192,7 +190,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 1197703181795215433, guid: 8991ce55ada140746b953a82d2b1f196, type: 3}
m_Sprite: {fileID: -765150924802650856, guid: d639caa9dc052b547b73dce9a856e78f, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
@ -227,17 +225,17 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5016213976666468048}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 7476718851314200889}
m_Father: {fileID: 4479595212008154282}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 1}
m_SizeDelta: {x: -10, y: -10}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3658248278055859851
CanvasRenderer:
@ -269,15 +267,15 @@ MonoBehaviour:
m_Calls: []
m_text: "\u041D"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 4ef792f79e96f814cac2dd9b8734773d, type: 2}
m_sharedMaterial: {fileID: 2036267684637915601, guid: 4ef792f79e96f814cac2dd9b8734773d, type: 2}
m_fontAsset: {fileID: 11400000, guid: 7041394783e612f4eae9131c0a535951, type: 2}
m_sharedMaterial: {fileID: 818154761001154010, guid: 7041394783e612f4eae9131c0a535951, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
rgba: 4288954963
m_fontColor: {r: 0.3254902, g: 0.25882354, b: 0.6431373, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
@ -294,7 +292,7 @@ MonoBehaviour:
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 125.8
m_fontSize: 81.85
m_fontSizeBase: 200
m_fontWeight: 400
m_enableAutoSizing: 1
@ -364,17 +362,17 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6711382326363563761}
m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071068}
m_LocalRotation: {x: 0, y: 0, z: 1, w: 0}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 7476718851314200889}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: -110}
m_SizeDelta: {x: 100, y: 100}
m_AnchoredPosition: {x: 0, y: -80}
m_SizeDelta: {x: 50, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4164371370080920532
CanvasRenderer:
@ -404,7 +402,83 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 1197703181795215433, guid: 8991ce55ada140746b953a82d2b1f196, type: 3}
m_Sprite: {fileID: -765150924802650856, guid: d639caa9dc052b547b73dce9a856e78f, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &7156662078552624694
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4479595212008154282}
- component: {fileID: 597311615700008910}
- component: {fileID: 2774274496316656674}
m_Layer: 5
m_Name: Character
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4479595212008154282
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7156662078552624694}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8627206344477583323}
m_Father: {fileID: 7476718851314200889}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &597311615700008910
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7156662078552624694}
m_CullTransparentMesh: 1
--- !u!114 &2774274496316656674
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7156662078552624694}
m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, a: 0}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
@ -472,15 +546,15 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
m_Material: {fileID: 0}
m_Color: {r: 0.20038268, g: 0.5322009, b: 0.745283, a: 0.62352943}
m_Color: {r: 0.22352943, g: 0.9803922, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 4211293783942383924, guid: a64f98d7a00501442ae40845562f1c20, type: 3}
m_Type: 1
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4

View File

@ -264,8 +264,8 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: -8111322212487550922, guid: 31b2877e77610584cac3a41c46e85320, type: 3}
m_Type: 1
m_Sprite: {fileID: 7270301237361871098, guid: fd871f1f44c3c1746a504f6dd121b6bb, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4

View File

@ -67,8 +67,8 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: -8111322212487550922, guid: 31b2877e77610584cac3a41c46e85320, type: 3}
m_Type: 1
m_Sprite: {fileID: 7270301237361871098, guid: fd871f1f44c3c1746a504f6dd121b6bb, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4

View File

@ -100,9 +100,9 @@ MonoBehaviour:
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0, g: 0.29411766, b: 0.1882353, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_HighlightedColor: {r: 0.80392164, g: 1, b: 0.10196079, a: 1}
m_PressedColor: {r: 0.8039216, g: 1, b: 0.101960786, a: 1}
m_SelectedColor: {r: 0.8039216, g: 1, b: 0.101960786, a: 1}
m_DisabledColor: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
@ -198,7 +198,7 @@ MonoBehaviour:
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 10
m_Spacing: 15
m_ChildForceExpandWidth: 0
m_ChildForceExpandHeight: 0
m_ChildControlWidth: 1

View File

@ -12,8 +12,10 @@ GameObject:
- component: {fileID: 6418208233271057322}
- component: {fileID: 8603317830485265751}
- component: {fileID: 3891422000916034842}
- component: {fileID: -8171790121543617477}
- component: {fileID: 1975627454378284422}
m_Layer: 0
m_Name: Button
m_Name: PrizeStand_Button
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@ -32,6 +34,7 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 7969020585539137307}
- {fileID: 5325082536838323762}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
@ -67,8 +70,8 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: -8111322212487550922, guid: 31b2877e77610584cac3a41c46e85320, type: 3}
m_Type: 1
m_Sprite: {fileID: 7270301237361871098, guid: fd871f1f44c3c1746a504f6dd121b6bb, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
@ -98,10 +101,10 @@ MonoBehaviour:
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1}
m_HighlightedColor: {r: 1, g: 1, b: 1, a: 1}
m_PressedColor: {r: 1, g: 1, b: 1, a: 1}
m_SelectedColor: {r: 1, g: 1, b: 1, a: 1}
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0, g: 0.29411766, b: 0.1882353, a: 1}
m_PressedColor: {r: 0, g: 0.29411766, b: 0.1882353, a: 1}
m_SelectedColor: {r: 0, g: 0.29411766, b: 0.1882353, a: 1}
m_DisabledColor: {r: 0.63529414, g: 0.63529414, b: 0.63529414, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
@ -121,6 +124,36 @@ MonoBehaviour:
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &-8171790121543617477
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1758083603916175787}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cbe98b3cb7252fb4d92f45e7034ff31b, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::RR.Common.UI.PrizeStandButtonView
boxNumberText: {fileID: 2985328858931436486}
boxPriceText: {fileID: 706982066432075956}
boxPriceFormat: '{0}'
--- !u!114 &1975627454378284422
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1758083603916175787}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 056e6a675e11c3a438dfa0d692787ee1, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::RR.Common.UI.ButtonTextFocusColor
targetText: {fileID: 2985328858931436486}
normalColor: {r: 0, g: 0.29411766, b: 0.1882353, a: 1}
focusedColor: {r: 1, g: 1, b: 1, a: 1}
--- !u!1 &2307937535396352836
GameObject:
m_ObjectHideFlags: 0
@ -195,8 +228,8 @@ MonoBehaviour:
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
rgba: 4281355008
m_fontColor: {r: 0, g: 0.29411766, b: 0.1882353, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
@ -258,3 +291,140 @@ MonoBehaviour:
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &4345915058803125209
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5325082536838323762}
- component: {fileID: 5564865279829283041}
- component: {fileID: 706982066432075956}
m_Layer: 0
m_Name: ScoreText
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5325082536838323762
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4345915058803125209}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 7082477975537308933}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: -75}
m_SizeDelta: {x: 0, y: -50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5564865279829283041
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4345915058803125209}
m_CullTransparentMesh: 1
--- !u!114 &706982066432075956
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4345915058803125209}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: 10000
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 4ef792f79e96f814cac2dd9b8734773d, type: 2}
m_sharedMaterial: {fileID: 2036267684637915601, guid: 4ef792f79e96f814cac2dd9b8734773d, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4281355008
m_fontColor: {r: 0, g: 0.29411766, b: 0.1882353, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 30.3
m_fontSizeBase: 48
m_fontWeight: 400
m_enableAutoSizing: 1
m_fontSizeMin: 12
m_fontSizeMax: 48
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_characterHorizontalScale: 1
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}

View File

@ -164,8 +164,8 @@ MonoBehaviour:
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4278190080
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
rgba: 4288954963
m_fontColor: {r: 0.3254902, g: 0.25882354, b: 0.6431373, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:

View File

@ -35,7 +35,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 10, y: 0}
m_SizeDelta: {x: 10, y: -4}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6471654452244886751
CanvasRenderer:
@ -74,7 +74,7 @@ MonoBehaviour:
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 10
m_PixelsPerUnitMultiplier: 100
--- !u!1 &860684354036165143
GameObject:
m_ObjectHideFlags: 0
@ -286,7 +286,7 @@ MonoBehaviour:
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 10
m_PixelsPerUnitMultiplier: 100
--- !u!1 &1708180760562552811
GameObject:
m_ObjectHideFlags: 0

View File

@ -337,17 +337,17 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4636128204290495225}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071068}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5627896420819186933}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 100, y: 0}
m_SizeDelta: {x: 50, y: 75}
m_SizeDelta: {x: 35, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7372200330221479758
CanvasRenderer:
@ -377,7 +377,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 1197703181795215433, guid: 8991ce55ada140746b953a82d2b1f196, type: 3}
m_Sprite: {fileID: -765150924802650856, guid: d639caa9dc052b547b73dce9a856e78f, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
@ -537,17 +537,17 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6667746243977224163}
m_LocalRotation: {x: -0, y: -0, z: 1, w: 0}
m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5627896420819186933}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -100, y: 0}
m_SizeDelta: {x: 50, y: 75}
m_SizeDelta: {x: 35, y: 25}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6286042809169003938
CanvasRenderer:
@ -577,7 +577,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 1197703181795215433, guid: 8991ce55ada140746b953a82d2b1f196, type: 3}
m_Sprite: {fileID: -765150924802650856, guid: d639caa9dc052b547b73dce9a856e78f, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,169 @@
fileFormatVersion: 2
guid: d639caa9dc052b547b73dce9a856e78f
TextureImporter:
internalIDToNameTable:
- first:
213: -765150924802650856
second: arrow_0
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WindowsStoreApps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: arrow_0
rect:
serializedVersion: 2
x: 23
y: 81
width: 210
height: 117
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 81d839fa943a165f0800000000000000
internalID: -765150924802650856
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
arrow_0: -765150924802650856
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,169 @@
fileFormatVersion: 2
guid: fd871f1f44c3c1746a504f6dd121b6bb
TextureImporter:
internalIDToNameTable:
- first:
213: 7270301237361871098
second: plashka_prize_0
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WindowsStoreApps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: plashka_prize_0
rect:
serializedVersion: 2
x: 54
y: 57
width: 148
height: 142
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: af88907a47c45e460800000000000000
internalID: 7270301237361871098
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
plashka_prize_0: 7270301237361871098
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,363 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace RR.Game2D.Behaviour
{
[DisallowMultipleComponent]
public sealed class EntitySpawner : MonoBehaviour
{
[Serializable]
public struct SpawnPrefabEntry
{
public GameObject prefab;
[Min(1)] public int weight;
}
[Header("Prefabs")]
[SerializeField] private SpawnPrefabEntry[] prefabs;
[Header("Spawn Timing")]
[SerializeField] private bool spawnOnEnable = true;
[SerializeField] private bool loop = true;
[Min(0f)]
[SerializeField] private float initialDelay;
[Tooltip("Минимальный и максимальный интервал между спавнами.")]
[SerializeField] private Vector2 spawnInterval = new(1f, 2f);
[Header("Spawn Limits")]
[Tooltip("Максимум одновременно существующих объектов. 0 или меньше — без лимита.")]
[SerializeField] private int maxAlive = 5;
[Tooltip("Максимум объектов за всю сессию работы спавнера. 0 или меньше — без лимита.")]
[SerializeField] private int maxTotalSpawned;
[Header("Spawn Points")]
[Tooltip("Если массив пуст, используется позиция самого спавнера.")]
[SerializeField] private Transform[] spawnPoints;
[SerializeField] private bool randomizeSpawnPoint = true;
[Header("Transform")]
[SerializeField] private Transform spawnedParent;
[Tooltip("Случайный угол по оси Z для 2D-объектов.")]
[SerializeField] private Vector2 randomZRotation;
private readonly List<GameObject> _spawnedObjects = new();
private Coroutine _spawnCoroutine;
private int _totalSpawned;
public int AliveCount
{
get
{
CleanupSpawnedObjects();
return _spawnedObjects.Count;
}
}
public int TotalSpawned => _totalSpawned;
public int MaxAliveLimit => maxAlive;
private void OnEnable()
{
if (spawnOnEnable)
StartSpawning();
}
private void OnDisable()
{
StopSpawning();
}
public void StartSpawning()
{
if (!isActiveAndEnabled)
return;
if (_spawnCoroutine != null)
StopCoroutine(_spawnCoroutine);
_spawnCoroutine = StartCoroutine(SpawnRoutine());
}
public void StopSpawning()
{
if (_spawnCoroutine == null)
return;
StopCoroutine(_spawnCoroutine);
_spawnCoroutine = null;
}
public GameObject SpawnNow()
{
return SpawnNowInternal(null);
}
public void SpawnCount(int count)
{
if (count <= 0)
return;
HashSet<int> usedSpawnPointIndices = new();
for (int i = 0; i < count; i++)
{
if (SpawnNowInternal(usedSpawnPointIndices) == null)
break;
}
}
public int SpawnToAliveCount(int targetAliveCount)
{
CleanupSpawnedObjects();
int target = Mathf.Max(0, targetAliveCount);
int currentAlive = _spawnedObjects.Count;
int toSpawn = target - currentAlive;
int spawnedCount = 0;
HashSet<int> usedSpawnPointIndices = new();
if (toSpawn <= 0)
return 0;
for (int i = 0; i < toSpawn; i++)
{
if (SpawnNowInternal(usedSpawnPointIndices) == null)
break;
spawnedCount++;
}
return spawnedCount;
}
public int SpawnPercent(float percent)
{
if (maxAlive <= 0)
{
Debug.LogWarning(
$"[{nameof(EntitySpawner)}] Cannot spawn by percent on '{name}' because Max Alive is not configured.",
this);
return 0;
}
float normalizedPercent = NormalizePercent(percent);
int targetAliveCount = Mathf.CeilToInt(maxAlive * normalizedPercent);
return SpawnToAliveCount(targetAliveCount);
}
public void ClearSpawned()
{
StopSpawning();
for (int i = 0; i < _spawnedObjects.Count; i++)
{
GameObject spawnedObject = _spawnedObjects[i];
if (spawnedObject != null)
Destroy(spawnedObject);
}
_spawnedObjects.Clear();
}
public void ResetSpawner()
{
_totalSpawned = 0;
CleanupSpawnedObjects();
}
private IEnumerator SpawnRoutine()
{
if (initialDelay > 0f)
yield return new WaitForSeconds(initialDelay);
do
{
SpawnNow();
if (!loop)
break;
float delay = UnityEngine.Random.Range(
Mathf.Min(spawnInterval.x, spawnInterval.y),
Mathf.Max(spawnInterval.x, spawnInterval.y));
if (delay > 0f)
yield return new WaitForSeconds(delay);
else
yield return null;
}
while (enabled && gameObject.activeInHierarchy);
_spawnCoroutine = null;
}
private GameObject SpawnNowInternal(HashSet<int> usedSpawnPointIndices)
{
CleanupSpawnedObjects();
if (!CanSpawn())
return null;
GameObject prefab = PickPrefab();
if (prefab == null)
return null;
if (!TryPickSpawnPoint(usedSpawnPointIndices, out Transform spawnPoint))
return null;
Vector3 spawnPosition = spawnPoint != null ? spawnPoint.position : transform.position;
Quaternion spawnRotation = spawnPoint != null ? spawnPoint.rotation : transform.rotation;
float zAngle = UnityEngine.Random.Range(randomZRotation.x, randomZRotation.y);
spawnRotation *= Quaternion.Euler(0f, 0f, zAngle);
GameObject instance = Instantiate(prefab, spawnPosition, spawnRotation, spawnedParent);
_spawnedObjects.Add(instance);
_totalSpawned++;
return instance;
}
private bool CanSpawn()
{
if (prefabs == null || prefabs.Length == 0)
return false;
if (maxAlive > 0 && _spawnedObjects.Count >= maxAlive)
return false;
if (maxTotalSpawned > 0 && _totalSpawned >= maxTotalSpawned)
return false;
return true;
}
private GameObject PickPrefab()
{
int totalWeight = 0;
for (int i = 0; i < prefabs.Length; i++)
{
if (prefabs[i].prefab == null)
continue;
totalWeight += Mathf.Max(1, prefabs[i].weight);
}
if (totalWeight <= 0)
return null;
int randomValue = UnityEngine.Random.Range(0, totalWeight);
int currentWeight = 0;
for (int i = 0; i < prefabs.Length; i++)
{
if (prefabs[i].prefab == null)
continue;
currentWeight += Mathf.Max(1, prefabs[i].weight);
if (randomValue < currentWeight)
return prefabs[i].prefab;
}
return prefabs[prefabs.Length - 1].prefab;
}
private bool TryPickSpawnPoint(HashSet<int> usedSpawnPointIndices, out Transform spawnPoint)
{
if (spawnPoints == null || spawnPoints.Length == 0)
{
if (usedSpawnPointIndices != null && !usedSpawnPointIndices.Add(-1))
{
spawnPoint = null;
return false;
}
spawnPoint = transform;
return true;
}
if (randomizeSpawnPoint)
{
List<int> availableIndices = new();
for (int i = 0; i < spawnPoints.Length; i++)
{
if (spawnPoints[i] == null)
continue;
if (usedSpawnPointIndices != null && usedSpawnPointIndices.Contains(i))
continue;
availableIndices.Add(i);
}
if (availableIndices.Count == 0)
{
spawnPoint = null;
return false;
}
int randomListIndex = UnityEngine.Random.Range(0, availableIndices.Count);
int chosenIndex = availableIndices[randomListIndex];
usedSpawnPointIndices?.Add(chosenIndex);
spawnPoint = spawnPoints[chosenIndex];
return true;
}
for (int i = 0; i < spawnPoints.Length; i++)
{
if (spawnPoints[i] == null)
continue;
if (usedSpawnPointIndices != null && usedSpawnPointIndices.Contains(i))
continue;
usedSpawnPointIndices?.Add(i);
spawnPoint = spawnPoints[i];
return true;
}
spawnPoint = null;
return false;
}
private void CleanupSpawnedObjects()
{
for (int i = _spawnedObjects.Count - 1; i >= 0; i--)
{
if (_spawnedObjects[i] == null)
_spawnedObjects.RemoveAt(i);
}
}
private static float NormalizePercent(float percent)
{
if (percent > 1f)
percent *= 0.01f;
return Mathf.Clamp01(percent);
}
private void OnDrawGizmosSelected()
{
Gizmos.color = new Color(0.25f, 0.9f, 0.4f, 0.9f);
if (spawnPoints == null || spawnPoints.Length == 0)
{
Gizmos.DrawWireSphere(transform.position, 0.2f);
return;
}
for (int i = 0; i < spawnPoints.Length; i++)
{
Transform spawnPoint = spawnPoints[i];
if (spawnPoint == null)
continue;
Gizmos.DrawWireSphere(spawnPoint.position, 0.2f);
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c3a8ac495d7c4d25bd9fca73a7d2d3a1
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,178 @@
using System.Collections.Generic;
using System.Collections;
using RR.Common.Settings;
using UnityEngine;
namespace RR.Game2D.Behaviour
{
[DisallowMultipleComponent]
public sealed class EntitySpawnerManager : MonoBehaviour
{
[Header("Spawners")]
[SerializeField] private EntitySpawner[] spawners;
[SerializeField] private bool includeChildren = true;
[SerializeField] private bool includeInactiveChildren = true;
[Header("Initialize Spawn")]
[SerializeField] private bool spawnOnInitialize;
[Tooltip("Если включено, процент спавна берётся из настройки gameplay.gameDifficulty.")]
[SerializeField] private bool useSettings = true;
[Range(0f, 100f)]
[SerializeField] private float initializeSpawnPercent = 100f;
private readonly List<EntitySpawner> _resolvedSpawners = new();
private readonly HashSet<EntitySpawner> _deduplicationSet = new();
private const string GameDifficultyKey = "gameplay.gameDifficulty";
private const float SettingsWaitTimeout = 2f;
public int LastSpawnedCount { get; private set; }
private void Start()
{
if (!spawnOnInitialize)
return;
StartCoroutine(InitializeSpawnRoutine());
}
public void SpawnConfiguredPercent()
{
SpawnPercent(GetConfiguredSpawnPercent());
}
public void SpawnPercent(int percent)
{
SpawnPercent((float)percent);
}
public void SpawnPercent(float percent)
{
LastSpawnedCount = SpawnInternal(percent);
}
public void StartAllSpawners()
{
ResolveSpawners();
for (int i = 0; i < _resolvedSpawners.Count; i++)
{
if (_resolvedSpawners[i] != null)
_resolvedSpawners[i].StartSpawning();
}
}
public void StopAllSpawners()
{
ResolveSpawners();
for (int i = 0; i < _resolvedSpawners.Count; i++)
{
if (_resolvedSpawners[i] != null)
_resolvedSpawners[i].StopSpawning();
}
}
public void ClearAllSpawned()
{
ResolveSpawners();
for (int i = 0; i < _resolvedSpawners.Count; i++)
{
if (_resolvedSpawners[i] != null)
_resolvedSpawners[i].ClearSpawned();
}
}
private int SpawnInternal(float percent)
{
ResolveSpawners();
int totalSpawned = 0;
for (int i = 0; i < _resolvedSpawners.Count; i++)
{
EntitySpawner spawner = _resolvedSpawners[i];
if (spawner == null)
continue;
totalSpawned += spawner.SpawnPercent(percent);
}
return totalSpawned;
}
private void ResolveSpawners()
{
_resolvedSpawners.Clear();
_deduplicationSet.Clear();
if (spawners != null)
{
for (int i = 0; i < spawners.Length; i++)
TryAddSpawner(spawners[i]);
}
if (!includeChildren)
return;
EntitySpawner[] childSpawners = GetComponentsInChildren<EntitySpawner>(includeInactiveChildren);
for (int i = 0; i < childSpawners.Length; i++)
TryAddSpawner(childSpawners[i]);
}
private void TryAddSpawner(EntitySpawner spawner)
{
if (spawner == null || !_deduplicationSet.Add(spawner))
return;
_resolvedSpawners.Add(spawner);
}
private IEnumerator InitializeSpawnRoutine()
{
if (useSettings)
{
float elapsed = 0f;
while (SettingsManager.Instance == null && elapsed < SettingsWaitTimeout)
{
elapsed += Time.unscaledDeltaTime;
yield return null;
}
}
float percent = GetConfiguredSpawnPercent();
Debug.Log($"[{nameof(EntitySpawnerManager)}] Initialize spawn percent = {percent}", this);
SpawnPercent(percent);
}
private float GetConfiguredSpawnPercent()
{
if (!useSettings)
return initializeSpawnPercent;
SettingsManager settingsManager = SettingsManager.Instance;
if (settingsManager == null)
{
Debug.LogWarning(
$"[{nameof(EntitySpawnerManager)}] SettingsManager.Instance not found. Using max difficulty spawn percent.",
this);
return 100f;
}
int difficultyIndex = settingsManager.GetInt(GameDifficultyKey);
float percent = difficultyIndex switch
{
0 => 25f,
1 => 50f,
2 => 75f,
3 => 100f,
_ => 100f
};
Debug.Log(
$"[{nameof(EntitySpawnerManager)}] Difficulty index '{difficultyIndex}' from '{GameDifficultyKey}' resolved to {percent}%.",
this);
return percent;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 91386b6100ed46efaad4af26ce6134f9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -78,9 +78,15 @@ namespace RR.Game2D.Behaviour
ResolvePlayer();
if (GameManager.Instance != null)
GameManager.Instance.PlayerSpawned += OnPlayerSpawned;
SubscribeToScoreSystem();
MaintainFixedCount();
}
private void OnEnable()
{
SubscribeToScoreSystem();
}
private void OnDisable()
{
foreach (EnvironmentalCollectibleBase collectible in _activeCollectibles)
@ -91,6 +97,8 @@ namespace RR.Game2D.Behaviour
if (GameManager.Instance != null)
GameManager.Instance.PlayerSpawned -= OnPlayerSpawned;
UnsubscribeFromScoreSystem();
}
#region Public API — смена типа спауна
@ -386,6 +394,13 @@ namespace RR.Game2D.Behaviour
_activeCollectibles.Remove(collectible);
_prefabByCollectible.Remove(collectible);
if (HasReachedSharedCollectibleLimit())
{
DespawnCollectiblesBlockedBySharedLimit();
MaintainFixedCount();
return;
}
MaintainFixedCount();
}
@ -401,6 +416,12 @@ namespace RR.Game2D.Behaviour
return false;
}
if (IsBlockedBySharedCollectibleLimit(forced.prefab))
{
entry = default;
return false;
}
// Проверяем лимит
if (forced.limit > 0 &&
_activeCountByPrefab.TryGetValue(forced.prefab.gameObject, out int fc) &&
@ -428,6 +449,7 @@ namespace RR.Game2D.Behaviour
GameObject prefab = current.prefab.gameObject;
if (forcedName != null && prefab.name != forcedName) continue;
if (IsBlockedBySharedCollectibleLimit(current.prefab)) continue;
if (current.limit > 0 &&
_activeCountByPrefab.TryGetValue(prefab, out int activeCount) &&
@ -443,7 +465,7 @@ namespace RR.Game2D.Behaviour
if (totalWeight <= 0 && _forcedPrefab != null)
{
EnvironmentalCollectibleBase comp = _forcedPrefab.GetComponent<EnvironmentalCollectibleBase>();
if (comp != null)
if (comp != null && !IsBlockedBySharedCollectibleLimit(comp))
{
entry = new SpawnEntry { prefab = comp, weight = 1 };
return true;
@ -461,6 +483,7 @@ namespace RR.Game2D.Behaviour
GameObject prefab = current.prefab.gameObject;
if (forcedName != null && prefab.name != forcedName) continue;
if (IsBlockedBySharedCollectibleLimit(current.prefab)) continue;
if (current.limit > 0 &&
_activeCountByPrefab.TryGetValue(prefab, out int activeCount) &&
@ -579,6 +602,62 @@ namespace RR.Game2D.Behaviour
Destroy(collectible.gameObject);
}
private void SubscribeToScoreSystem()
{
if (ScoreSystem.Instance != null)
{
ScoreSystem.Instance.SharedEnvironmentalCollectiblesChanged -= OnSharedEnvironmentalCollectiblesChanged;
ScoreSystem.Instance.SharedEnvironmentalCollectiblesChanged += OnSharedEnvironmentalCollectiblesChanged;
}
}
private void UnsubscribeFromScoreSystem()
{
if (ScoreSystem.Instance != null)
{
ScoreSystem.Instance.SharedEnvironmentalCollectiblesChanged -= OnSharedEnvironmentalCollectiblesChanged;
}
}
private void OnSharedEnvironmentalCollectiblesChanged(int collected, int maxCount)
{
if (maxCount > 0 && collected >= maxCount)
{
DespawnCollectiblesBlockedBySharedLimit();
}
MaintainFixedCount();
}
private void DespawnCollectiblesBlockedBySharedLimit()
{
_refreshBuffer.Clear();
foreach (EnvironmentalCollectibleBase collectible in _activeCollectibles)
{
if (collectible != null && IsBlockedBySharedCollectibleLimit(collectible))
{
_refreshBuffer.Add(collectible);
}
}
for (int i = 0; i < _refreshBuffer.Count; i++)
{
DespawnCollectible(_refreshBuffer[i]);
}
_refreshBuffer.Clear();
}
private static bool HasReachedSharedCollectibleLimit()
{
return ScoreSystem.Instance != null && ScoreSystem.Instance.HasReachedSharedEnvironmentalCollectibleLimit;
}
private static bool IsBlockedBySharedCollectibleLimit(EnvironmentalCollectibleBase collectible)
{
return collectible != null && collectible.CountsTowardsSharedCollectionLimit && HasReachedSharedCollectibleLimit();
}
private void OnDrawGizmosSelected()
{
Bounds bounds = GetSpawnBounds();

View File

@ -19,16 +19,23 @@ namespace RR.Game2D.Behaviour
[SerializeField] private float winMultiplier = 1f;
[SerializeField] private float loseMultiplier = 0.6f;
[Header("Environmental Collectibles")]
[SerializeField] private int maxSharedEnvironmentalCollectibles = 50;
public int CollectedCoins { get; private set; }
public int TotalCollectedCoins => CollectedCoins;
public int KilledEnemies { get; private set; }
public int EnvironmentalPoints { get; private set; }
public int SharedEnvironmentalCollectiblesCollected { get; private set; }
public int CurrentScore { get; private set; }
public int FinalScore { get; private set; }
public bool IsFinalized { get; private set; }
public bool HasReachedSharedEnvironmentalCollectibleLimit =>
maxSharedEnvironmentalCollectibles > 0 && SharedEnvironmentalCollectiblesCollected >= maxSharedEnvironmentalCollectibles;
public event Action<int, int> StatsChanged;
public event Action<int> EnvironmentalPointsChanged;
public event Action<int, int> SharedEnvironmentalCollectiblesChanged;
public event Action<int> CurrentScoreChanged;
public event Action<int, float, bool> ScoreCalculated;
@ -100,6 +107,22 @@ namespace RR.Game2D.Behaviour
RefreshCurrentScore();
}
public void RegisterSharedEnvironmentalCollectibleCollected(int points = 1)
{
if (IsFinalized || HasReachedSharedEnvironmentalCollectibleLimit) return;
SharedEnvironmentalCollectiblesCollected++;
SharedEnvironmentalCollectiblesChanged?.Invoke(SharedEnvironmentalCollectiblesCollected, maxSharedEnvironmentalCollectibles);
if (points > 0)
{
EnvironmentalPoints += points;
EnvironmentalPointsChanged?.Invoke(EnvironmentalPoints);
}
RefreshCurrentScore();
}
public int CalculatePreviewScore(float gameTime, bool isWin)
{
float e = isWin ? winMultiplier : loseMultiplier;
@ -124,11 +147,13 @@ namespace RR.Game2D.Behaviour
CollectedCoins = 0;
KilledEnemies = 0;
EnvironmentalPoints = 0;
SharedEnvironmentalCollectiblesCollected = 0;
CurrentScore = 0;
FinalScore = 0;
IsFinalized = false;
StatsChanged?.Invoke(CollectedCoins, KilledEnemies);
EnvironmentalPointsChanged?.Invoke(EnvironmentalPoints);
SharedEnvironmentalCollectiblesChanged?.Invoke(SharedEnvironmentalCollectiblesCollected, maxSharedEnvironmentalCollectibles);
CurrentScoreChanged?.Invoke(CurrentScore);
}

View File

@ -23,6 +23,9 @@ namespace RR.Common.Controls
private const string RequestStandStatus = "25";
private const string OpenBoxPrefix = "2501";
private const string ForceOpenBoxPrefix = "2511";
private const string IdleLightingCommand = "8020";
private const string HighlightBoxLightingPrefix = "8021";
private const float StatusRequestTimeout = 3f;
private const float WaitOpenStatusTimeout = 5f;
@ -59,6 +62,11 @@ namespace RR.Common.Controls
return _boxesCount;
}
public static bool IsReadyToOpenStatus(BoxStatus status)
{
return ReadyToOpenStatuses.Contains(status);
}
public async Task<Dictionary<int, BoxStatus>> GetStatusesAsync(float timeoutSeconds = StatusRequestTimeout)
{
if (_boxesCount <= 0)
@ -106,7 +114,7 @@ namespace RR.Common.Controls
Dictionary<int, BoxStatus> allStatuses = await GetStatusesAsync(timeoutSeconds);
return allStatuses
.Where(kvp => ReadyToOpenStatuses.Contains(kvp.Value))
.Where(kvp => IsReadyToOpenStatus(kvp.Value))
.Select(kvp => kvp.Key)
.OrderBy(boxNumber => boxNumber)
.ToArray();
@ -168,6 +176,68 @@ namespace RR.Common.Controls
}
}
public async Task OpenBoxForcedAsync(int boxNumber)
{
if (!await _lock.WaitAsync(0))
{
OpeningFinished?.Invoke(false, "Выдача уже в процессе");
return;
}
try
{
if (boxNumber <= 0)
{
OpeningFinished?.Invoke(false, "Номер коробки должен быть больше 0");
return;
}
if (_boxesCount > 0 && boxNumber > _boxesCount)
{
OpeningFinished?.Invoke(false, $"Номер коробки={boxNumber} невалидный. Требуется от 1 до {_boxesCount}.");
return;
}
ClearStatusQueue();
SendCommand($"{ForceOpenBoxPrefix}{boxNumber:D2}");
BoxStatus openStatus = await ReadBoxStatusAsync(boxNumber, 1, WaitOpenStatusTimeout);
if (openStatus == BoxStatus.OPENED)
{
OpeningFinished?.Invoke(true, $"Ячейка {boxNumber} успешно открыта");
}
else
{
_log?.Invoke($"[Модуль витрины] Ошибка при принудительном открытии ячейки {boxNumber}. Статус: {openStatus}");
OpeningFinished?.Invoke(false, $"Ошибка при принудительном открытии ячейки номер {boxNumber}");
}
}
catch (Exception ex)
{
_log?.Invoke($"[Модуль витрины] Ошибка при принудительном открытии ячейки {boxNumber}: {ex.Message}");
OpeningFinished?.Invoke(false, ex.Message);
}
finally
{
_lock.Release();
}
}
public bool SetIdleLighting()
{
return TrySendCommand(IdleLightingCommand);
}
public bool HighlightBoxLighting(int boxNumber)
{
if (boxNumber <= 0)
{
return false;
}
return TrySendCommand($"{HighlightBoxLightingPrefix}{boxNumber:D2}");
}
public void HandleCoinAccepted()
{
// Для витрины монеты не обрабатываются.
@ -231,7 +301,7 @@ namespace RR.Common.Controls
int expectedEntriesCount = _boxesCount > 0 ? _boxesCount : 1;
BoxStatus boxStatus = await ReadBoxStatusAsync(boxNumber, expectedEntriesCount, StatusRequestTimeout);
if (!ReadyToOpenStatuses.Contains(boxStatus))
if (!IsReadyToOpenStatus(boxStatus))
{
isOk = false;
sb.AppendLine($"- Статус коробки {boxNumber}: {boxStatus} не позволяет провести открытие.");
@ -293,6 +363,20 @@ namespace RR.Common.Controls
}
}
private bool TrySendCommand(string command)
{
try
{
SendCommand(command);
return true;
}
catch (Exception ex)
{
_log?.Invoke($"[Модуль витрины] Ошибка при отправке команды '{command}': {ex.Message}");
return false;
}
}
private void ClearStatusQueue()
{
while (_statusQueue.TryDequeue(out _))

View File

@ -0,0 +1,250 @@
#if UNITY_EDITOR
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
namespace RR.Common.InspectorOverrides
{
public sealed class HierarchyBulkRenamerWindow : EditorWindow
{
private enum NamingScheme
{
SpaceParenthesis,
Dot,
Underscore
}
private struct NamingSettings
{
public NamingScheme Scheme;
public int Digits;
public bool StartsAtZero;
}
private string _baseName = "GameObject";
private Vector2 _scrollPosition;
[MenuItem("Tools/Hierarchy/Bulk Rename Selected")]
private static void OpenWindow()
{
HierarchyBulkRenamerWindow window = GetWindow<HierarchyBulkRenamerWindow>();
window.titleContent = new GUIContent("Bulk Rename");
window.minSize = new Vector2(360f, 260f);
window.Show();
}
private void OnEnable()
{
Selection.selectionChanged += Repaint;
}
private void OnDisable()
{
Selection.selectionChanged -= Repaint;
}
private void OnGUI()
{
List<GameObject> selectedObjects = GetSelectedHierarchyObjects();
NamingSettings namingSettings = ReadProjectNamingSettings();
EditorGUILayout.LabelField("Mass Rename Hierarchy Objects", EditorStyles.boldLabel);
EditorGUILayout.Space(4f);
using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox))
{
EditorGUILayout.LabelField("Base Name", EditorStyles.miniBoldLabel);
_baseName = EditorGUILayout.TextField(_baseName);
}
using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox))
{
EditorGUILayout.LabelField("Project Numbering Settings", EditorStyles.miniBoldLabel);
EditorGUILayout.LabelField("Scheme", NamingSchemeToText(namingSettings.Scheme));
EditorGUILayout.LabelField("Digits", namingSettings.Digits.ToString());
EditorGUILayout.LabelField("Starts At", namingSettings.StartsAtZero ? "0" : "1");
}
using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox))
{
EditorGUILayout.LabelField("Selection", EditorStyles.miniBoldLabel);
EditorGUILayout.LabelField($"Selected objects: {selectedObjects.Count}");
string previewBaseName = string.IsNullOrWhiteSpace(_baseName) ? "GameObject" : _baseName.Trim();
string previewName = BuildName(previewBaseName, namingSettings, 0);
EditorGUILayout.LabelField("First preview", previewName);
}
EditorGUILayout.Space(4f);
DrawSelectionPreview(selectedObjects, namingSettings);
using (new EditorGUI.DisabledScope(selectedObjects.Count == 0))
{
if (GUILayout.Button("Rename Selected"))
RenameSelected(selectedObjects, namingSettings);
}
}
private void DrawSelectionPreview(List<GameObject> selectedObjects, NamingSettings namingSettings)
{
EditorGUILayout.LabelField("Preview", EditorStyles.boldLabel);
using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox))
{
_scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition, GUILayout.MinHeight(120f));
if (selectedObjects.Count == 0)
{
EditorGUILayout.LabelField("No hierarchy objects selected.");
}
else
{
string normalizedBaseName = string.IsNullOrWhiteSpace(_baseName) ? "GameObject" : _baseName.Trim();
for (int i = 0; i < selectedObjects.Count; i++)
{
string renamed = BuildName(normalizedBaseName, namingSettings, i);
EditorGUILayout.LabelField($"{selectedObjects[i].name} -> {renamed}");
}
}
EditorGUILayout.EndScrollView();
}
}
private void RenameSelected(List<GameObject> selectedObjects, NamingSettings namingSettings)
{
if (selectedObjects.Count == 0)
return;
string normalizedBaseName = string.IsNullOrWhiteSpace(_baseName) ? "GameObject" : _baseName.Trim();
Undo.RecordObjects(selectedObjects.ToArray(), "Bulk Rename Hierarchy Objects");
for (int i = 0; i < selectedObjects.Count; i++)
{
GameObject gameObject = selectedObjects[i];
if (gameObject == null)
continue;
gameObject.name = BuildName(normalizedBaseName, namingSettings, i);
if (gameObject.scene.IsValid())
EditorSceneManager.MarkSceneDirty(gameObject.scene);
}
EditorUtility.DisplayDialog(
"Bulk Rename",
$"Переименовано объектов: {selectedObjects.Count}",
"OK");
}
private static List<GameObject> GetSelectedHierarchyObjects()
{
return Selection.gameObjects
.Where(gameObject => gameObject != null && gameObject.scene.IsValid())
.OrderBy(gameObject => GetHierarchySortKey(gameObject.transform))
.ToList();
}
private static string GetHierarchySortKey(Transform target)
{
List<int> indices = new();
Transform current = target;
while (current != null)
{
indices.Add(current.GetSiblingIndex());
current = current.parent;
}
indices.Reverse();
return string.Join("/", indices.Select(index => index.ToString("D6")));
}
private static NamingSettings ReadProjectNamingSettings()
{
NamingSettings settings = new NamingSettings
{
Scheme = NamingScheme.SpaceParenthesis,
Digits = 1,
StartsAtZero = false
};
Type editorSettingsType = typeof(EditorSettings);
PropertyInfo schemeProperty = editorSettingsType.GetProperty(
"gameObjectNamingScheme",
BindingFlags.Public | BindingFlags.Static);
if (schemeProperty != null)
{
object value = schemeProperty.GetValue(null);
if (value != null)
settings.Scheme = ParseNamingScheme(value.ToString());
}
PropertyInfo digitsProperty = editorSettingsType.GetProperty(
"gameObjectNamingDigits",
BindingFlags.Public | BindingFlags.Static);
if (digitsProperty != null)
{
object value = digitsProperty.GetValue(null);
if (value is int digits)
settings.Digits = Mathf.Max(1, digits);
}
PropertyInfo startsAtZeroProperty = editorSettingsType.GetProperty(
"gameObjectNamingStartsAtZero",
BindingFlags.Public | BindingFlags.Static);
if (startsAtZeroProperty != null)
{
object value = startsAtZeroProperty.GetValue(null);
if (value is bool startsAtZero)
settings.StartsAtZero = startsAtZero;
}
return settings;
}
private static NamingScheme ParseNamingScheme(string rawValue)
{
if (string.IsNullOrEmpty(rawValue))
return NamingScheme.SpaceParenthesis;
if (rawValue.IndexOf("dot", StringComparison.OrdinalIgnoreCase) >= 0)
return NamingScheme.Dot;
if (rawValue.IndexOf("underscore", StringComparison.OrdinalIgnoreCase) >= 0)
return NamingScheme.Underscore;
return NamingScheme.SpaceParenthesis;
}
private static string BuildName(string baseName, NamingSettings namingSettings, int sequenceIndex)
{
int displayIndex = namingSettings.StartsAtZero ? sequenceIndex : sequenceIndex + 1;
string number = displayIndex.ToString($"D{Mathf.Max(1, namingSettings.Digits)}");
return namingSettings.Scheme switch
{
NamingScheme.Dot => $"{baseName}.{number}",
NamingScheme.Underscore => $"{baseName}_{number}",
_ => $"{baseName} ({number})"
};
}
private static string NamingSchemeToText(NamingScheme namingScheme)
{
return namingScheme switch
{
NamingScheme.Dot => "Dot",
NamingScheme.Underscore => "Underscore",
_ => "Space Parenthesis"
};
}
}
}
#endif

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 516b6b2c1d8342eb97498bb4d0f518cf
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,60 @@
#if UNITY_EDITOR && UNITY_2021_2_OR_NEWER
using UnityEditor;
using UnityEditor.Overlays;
using UnityEngine;
using UnityEngine.UIElements;
namespace RR.Common.InspectorOverrides
{
[Overlay(typeof(SceneView), id: "hierarchy-selection-count", displayName: "Hierarchy Selection Count")]
[Icon("d_UnityEditor.SceneHierarchyWindow")]
public sealed class HierarchySelectionCountOverlay : Overlay
{
private Label _countLabel;
public override void OnCreated()
{
Selection.selectionChanged += UpdateSelectionLabel;
EditorApplication.hierarchyChanged += UpdateSelectionLabel;
}
public override void OnWillBeDestroyed()
{
Selection.selectionChanged -= UpdateSelectionLabel;
EditorApplication.hierarchyChanged -= UpdateSelectionLabel;
}
public override VisualElement CreatePanelContent()
{
VisualElement root = new() { style = { minWidth = 180 } };
Label titleLabel = new("Выделение в Hierarchy")
{
style =
{
unityFontStyleAndWeight = FontStyle.Bold,
marginBottom = 4
}
};
root.Add(titleLabel);
_countLabel = new Label();
root.Add(_countLabel);
UpdateSelectionLabel();
return root;
}
private void UpdateSelectionLabel()
{
if (_countLabel == null)
return;
int selectedCount = HierarchySelectionCounter.GetSelectedHierarchyObjectCount();
_countLabel.text = selectedCount == 0
? "Сейчас ничего не выделено"
: $"Выделено объектов: {selectedCount}";
}
}
}
#endif

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 71dcf1a965b74a9eb34892092f54753d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,34 @@
#if UNITY_EDITOR
using System.Linq;
using UnityEditor;
using UnityEngine;
namespace RR.Common.InspectorOverrides
{
public static class HierarchySelectionCounter
{
public static int GetSelectedHierarchyObjectCount()
{
return Selection.gameObjects.Count(gameObject => gameObject != null && gameObject.scene.IsValid());
}
[MenuItem("Tools/Hierarchy/Count Selected Objects %#h")]
private static void CountSelectedObjects()
{
int selectedCount = GetSelectedHierarchyObjectCount();
string message = selectedCount == 0
? "В Hierarchy ничего не выделено."
: $"Выделено объектов в Hierarchy: {selectedCount}";
Debug.Log($"[HierarchySelectionCounter] {message}");
EditorUtility.DisplayDialog("Hierarchy Selection Counter", message, "OK");
}
[MenuItem("Tools/Hierarchy/Count Selected Objects %#h", true)]
private static bool ValidateCountSelectedObjects()
{
return GetSelectedHierarchyObjectCount() > 0;
}
}
}
#endif

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5b5f9f5b1dd7459f8bce20d31a850049
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -45,6 +45,7 @@ namespace RR.Common.InspectorOverrides
var displayAsPercentageProp = property.FindPropertyRelative("displayAsPercentage");
var floatDisplayFormatProp = property.FindPropertyRelative("floatDisplayFormat");
var floatStepProp = property.FindPropertyRelative("floatStep");
var optionPickerDisplayFormatProp = property.FindPropertyRelative("optionPickerDisplayFormat");
var applyProp = property.FindPropertyRelative("applyTarget");
var audioTargetProp = property.FindPropertyRelative("audioTargetType");
@ -142,6 +143,7 @@ namespace RR.Common.InspectorOverrides
DrawProp(ref r, optionsProp, "Options", includeChildren: true);
DrawProp(ref r, defOptionIndexProp, "Default Index");
DrawProp(ref r, optionPickerDisplayFormatProp, "Display Format");
break;
}
@ -264,6 +266,7 @@ namespace RR.Common.InspectorOverrides
var optionsProp = property.FindPropertyRelative("options");
h += HeightOf(optionsProp, true) + space; // options list
h += line + space; // defaultOptionIndex
h += line + space; // optionPickerDisplayFormat
break;
}

View File

@ -4,6 +4,8 @@ namespace RR.Common.Entities.Props
{
public sealed class BatCollectible : EnvironmentalCollectibleBase
{
public override bool CountsTowardsSharedCollectionLimit => true;
[SerializeField] private float moveSpeed = 1.75f;
[SerializeField] private float verticalAmplitude = 0.35f;
[SerializeField] private float verticalFrequency = 2.4f;

View File

@ -24,6 +24,7 @@ namespace RR.Common.Entities.Props
public int Points => points;
public Vector3 SpawnPosition => _spawnPosition;
public virtual bool CountsTowardsSharedCollectionLimit => false;
protected virtual void Awake()
{
@ -95,8 +96,14 @@ namespace RR.Common.Entities.Props
_collected = true;
OnCollected();
if (points > 0)
if (CountsTowardsSharedCollectionLimit)
{
ScoreSystem.Instance?.RegisterSharedEnvironmentalCollectibleCollected(points);
}
else if (points > 0)
{
ScoreSystem.Instance?.RegisterEnvironmentalPoints(points);
}
Collected?.Invoke(this);
Destroy(gameObject);

View File

@ -4,6 +4,8 @@ namespace RR.Common.Entities.Props
{
public sealed class LeafCollectible : EnvironmentalCollectibleBase
{
public override bool CountsTowardsSharedCollectionLimit => true;
[Header("Fall")]
[SerializeField] private float fallSpeed = 1.25f;
[SerializeField] private float horizontalAmplitude = 0.4f;

Some files were not shown because too many files have changed in this diff Show More