chore(project): sync startup and tooling updates

- добавлены проектные инструкции AGENTS.md:
  зафиксированы правила работы с документацией, сообщениями коммитов,
  MCP-инструментами и Unity MCP workflow для дальнейшей разработки
- проверка лицензии вынесена из GameManager в отдельный StartupLicenseManager:
  код WinAPI, запуск RRLauncher.exe, обработка таймаута, возврат фокуса,
  установка fullscreen-режима и клик в центр перенесены в отдельный
  долгоживущий компонент
- обновлена инициализация глобальных сервисов:
  GlobalsManager теперь добавляет и инициализирует StartupLicenseManager,
  а Globals.prefab содержит новый компонент рядом с остальными runtime-сервисами
- обновлены Unity Editor и зависимости проекта:
  версия проекта поднята до 6000.3.14f1, обновлены ai.inference,
  collab-proxy, inputsystem, timeline, visualscripting и связанные lock-записи
- синхронизированы проектные настройки и generated assets после обновления Unity:
  обновлены ProjectSettings, URP global settings, TMP/font assets,
  tile/prefab meta-данные и связанные ресурсы сцен
- скорректирован MainMenu UI:
  символ валюты заменен на текстовое обозначение руб., а также сохранены
  небольшие Unity-сериализованные изменения layout/scrollbar-значений
- добавлены правила .gitignore для локальных служебных артефактов:
  Codex/RAG-индекса, .NET SDK telemetry/cache и Unity recovery-сцен
- удалены из отслеживания ранее попавшие в репозиторий файлы .dotnet и Assets/_Recovery:
  новые служебные файлы этих каталогов больше не будут засорять рабочее дерево
This commit is contained in:
Данил Ярош 2026-05-15 14:27:13 +03:00
parent cb2e83a596
commit 942c5dd9fa
42 changed files with 13102 additions and 641 deletions

View File

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

View File

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

View File

@ -1,5 +0,0 @@
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

@ -1,5 +0,0 @@
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

@ -1,5 +0,0 @@
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

@ -1,5 +0,0 @@
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

@ -1,5 +0,0 @@
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

@ -1,5 +0,0 @@
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

@ -1,5 +0,0 @@
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

@ -1,5 +0,0 @@
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

@ -1,5 +0,0 @@
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

@ -1,5 +0,0 @@
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

@ -1,5 +0,0 @@
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

@ -1,5 +0,0 @@
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

@ -1,5 +0,0 @@
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

@ -1,5 +0,0 @@
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==

9
.gitignore vendored
View File

@ -17,6 +17,15 @@
*.req.json
*.res.json
# Local agent/RAG indexes and tool caches
/.codex/
# Local .NET SDK telemetry/cache created by tool runs
/.dotnet/
# Unity recovery scenes are editor-local crash/autosave artifacts
/[Aa]ssets/_Recovery/
#
## --------------------------------------------

36
AGENTS.md Normal file
View File

@ -0,0 +1,36 @@
# Agent Guidance
## Documentation Language
- Write all project documentation in Russian by default.
- Apply this rule to guides, READMEs, setup notes, conventions, and other repository documentation unless the user explicitly asks for another language.
## Git Commit Messages
- При создании коммитов первая строка сообщения должна быть кратким описанием изменений на английском языке.
- Начиная с третьей строки сообщения коммита следует указывать подробный список изменений на русском языке.
## MCP Tool Preference
- При подходящих сценариях агенту следует по максимуму отдавать приоритет MCP-серверам `claude-core`, `claude-explorer` и `claude-rag` вместо встроенных инструментов.
- `claude-core` следует предпочитать для чтения и редактирования файлов, поиска по проекту, работы с задачами и базовых shell-операций, если его возможностей достаточно.
- `claude-explorer` следует предпочитать для изучения архитектуры, исходников, команд и внутренних инструментов Claude Code.
- `claude-rag` следует предпочитать для семантического поиска по проекту, анализа больших объёмов кода и ситуаций, где локальный индекс даёт преимущество над обычным текстовым поиском.
- Память о проекте, его договорённостях, архитектурных решениях, важных гайдах, кодовой базе и ранее выявленном контексте следует по возможности сохранять и повторно использовать через `claude-rag`.
- Кодовую базу проекта также следует по возможности индексировать и использовать через `claude-rag`, чтобы агент мог опираться на локальную семантическую память о структуре, модулях, связях и ранее изученных участках кода.
- При повторяющихся задачах, исследовании крупных подсистем, возвращении к старым решениям, поиске проектного контекста и анализе существующей кодовой базы агенту следует сначала опираться на `claude-rag`, если для этого подходит локальный индекс.
- Если MCP-инструмент хуже подходит для конкретной задачи, недоступен или создаёт лишние ограничения, агент может использовать встроенные инструменты как запасной вариант.
## Unity MCP Workflow
- При работе с Unity-проектом агенту следует по возможности использовать MCP-сервер `unityMCP` как основной инструмент взаимодействия с Unity Editor.
- `unityMCP` следует предпочитать для задач, связанных со сценами, GameObject, компонентами, prefab, ассетами, материалами, камерами, настройками рендеринга, физикой, Build Settings, Unity Console, тестами и состоянием редактора.
- Перед изменениями внутри Unity желательно читать актуальное состояние редактора через `mcpforunity://editor/state`, а при необходимости также `mcpforunity://project/info`, `mcpforunity://instances`, `mcpforunity://custom-tools` и `mcpforunity://tool-groups`.
- Если доступно несколько Unity Editor-инстансов, агент должен сначала проверить `mcpforunity://instances` и выбрать нужный проект через `set_active_instance`, не выполняя изменения вслепую.
- Для массовых операций в Unity следует предпочитать `batch_execute`, чтобы уменьшать количество отдельных вызовов и сохранять изменения согласованными.
- Для создания, изменения и проверки C#-скриптов в Unity следует предпочитать инструменты `unityMCP` вроде `create_script`, `script_apply_edits`, `apply_text_edits`, `validate_script`, `refresh_unity` и `read_console`, если задача требует реакции Unity Editor или проверки компиляции.
- После изменений в скриптах, сценах, prefab, ассетах или настройках проекта агент должен по возможности обновить Unity через `refresh_unity`, проверить готовность редактора и прочитать `read_console`, чтобы выявить ошибки компиляции или импорта.
- Для проверки Unity API, сигнатур классов, методов и свойств перед написанием кода следует использовать `unity_reflect` и/или `unity_docs`, если соответствующая группа инструментов доступна.
- Для запуска EditMode/PlayMode-проверок следует использовать `run_tests` и `get_test_job`, если тестовая группа `unityMCP` доступна и это уместно для задачи.
- Если нужная группа возможностей `unityMCP` отключена, агент может включить её через `manage_tools`, когда это оправдано задачей.
- Если `unityMCP` недоступен, не видит активный Unity Editor, возвращает ошибку или хуже подходит для конкретной операции, агент может использовать файловые инструменты и обычные shell-команды как запасной путь, явно учитывая риск отсутствия проверки внутри Unity.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -10,6 +10,7 @@ GameObject:
m_Component:
- component: {fileID: 6708844088101150}
- component: {fileID: -6830167632558745604}
- component: {fileID: -7355179224228813161}
- component: {fileID: 7290507550622501242}
- component: {fileID: -3401184227323537348}
- component: {fileID: -6245296037342915518}
@ -52,6 +53,18 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: e679be5faf94f304d8251931f02c036a, type: 3}
m_Name:
m_EditorClassIdentifier: '::'
--- !u!114 &-7355179224228813161
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4763496076470024150}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c35b5d0979bb4ff8b1b62da9d44ebf25, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::RR.Game2D.Core.Managers.StartupLicenseManager
--- !u!114 &7290507550622501242
MonoBehaviour:
m_ObjectHideFlags: 0

View File

@ -211,8 +211,8 @@ MonoBehaviour:
m_GameObject: {fileID: 0}
m_MinAnimationSpeed: 1
m_MaxAnimationSpeed: 1
m_PerlinScale: 0.5
m_Output: 0
m_PerlinScale: 0.506
m_Output: 1
m_ColliderType: 1
m_RandomTransform: 0
m_Neighbors: 01000000010000000100000001000000

View File

@ -430,6 +430,7 @@ Tilemap:
e33: 1
--- !u!483693784 &6972310934434671365
TilemapRenderer:
serializedVersion: 2
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
@ -475,6 +476,7 @@ TilemapRenderer:
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_MaskInteraction: 0
m_ChunkSize: {x: 32, y: 32, z: 32}
m_ChunkCullingBounds: {x: 0, y: 0, z: 0}
m_MaxChunkCount: 16
@ -482,7 +484,6 @@ TilemapRenderer:
m_SortOrder: 0
m_Mode: 0
m_DetectChunkCullingBounds: 0
m_MaskInteraction: 0
--- !u!114 &5529654987520353606
MonoBehaviour:
m_ObjectHideFlags: 0

View File

@ -37,7 +37,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -48,7 +48,7 @@ TextureImporter:
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
spriteMeshType: 0
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 256
@ -75,7 +75,7 @@ TextureImporter:
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0

View File

@ -37,7 +37,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
filterMode: 0
aniso: 1
mipBias: 0
wrapU: 1
@ -48,7 +48,7 @@ TextureImporter:
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
spriteMeshType: 0
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
@ -75,7 +75,7 @@ TextureImporter:
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
@ -130,11 +130,11 @@ TextureImporter:
rect:
serializedVersion: 2
x: 0
y: 5
width: 1792
height: 1531
y: 1280
width: 256
height: 256
alignment: 0
pivot: {x: 0, y: 0}
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
@ -147,11 +147,847 @@ TextureImporter:
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_1
rect:
serializedVersion: 2
x: 256
y: 1280
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 8d5d632a13b5f1247bdfdf42c015b4db
internalID: -1608601578
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_2
rect:
serializedVersion: 2
x: 512
y: 1280
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 67f30d51802b704468f90d93abe08386
internalID: -1370314462
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_3
rect:
serializedVersion: 2
x: 768
y: 1280
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 1193a9b6b3f275f41af26d9a91bd1799
internalID: 278802906
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_4
rect:
serializedVersion: 2
x: 1024
y: 1280
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 6ff18bac83e31a34aafbcabb87172ef3
internalID: -837230164
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_5
rect:
serializedVersion: 2
x: 1280
y: 1280
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 9cbb7f989d1779b47b0e7fdfaca4d3d0
internalID: -608911867
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_6
rect:
serializedVersion: 2
x: 1536
y: 1280
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: bf1a8e293024c5548bd337a8e44d7d2a
internalID: 1996641130
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_7
rect:
serializedVersion: 2
x: 0
y: 1024
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 6a42c633543a94a42b5b6f316b1e64a5
internalID: 376241231
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_8
rect:
serializedVersion: 2
x: 256
y: 1024
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 0f1fd887341feb043a62be1420717e25
internalID: 566602086
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_9
rect:
serializedVersion: 2
x: 512
y: 1024
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: fb0a35a4c00015a4f97dfa004b48a706
internalID: -1026027896
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_10
rect:
serializedVersion: 2
x: 768
y: 1024
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 2140c85cee7d4fc4a9f34b6c8f764dff
internalID: -2122941138
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_11
rect:
serializedVersion: 2
x: 1024
y: 1024
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: d43cd6da4bdb1964aa1eacc53fa5fa93
internalID: -375884924
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_12
rect:
serializedVersion: 2
x: 1280
y: 1024
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 9e691f751d15eaf46bb2f01a860d562d
internalID: -427802510
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_13
rect:
serializedVersion: 2
x: 1536
y: 1024
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: f579e0365e5daa240b3d81e02759797a
internalID: 1910012740
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_14
rect:
serializedVersion: 2
x: 0
y: 768
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: e7437b3dbf29bd941aebc689d7e29a52
internalID: -1427976571
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_15
rect:
serializedVersion: 2
x: 256
y: 768
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 73e03874529f90b4f9a16b2ce879efde
internalID: -12274565
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_16
rect:
serializedVersion: 2
x: 512
y: 768
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 643995077126ec84f864f7846f3439fc
internalID: 921372340
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_17
rect:
serializedVersion: 2
x: 768
y: 768
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 055ccfe581bcbd344859d4d8c234068e
internalID: -1219460144
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_18
rect:
serializedVersion: 2
x: 1024
y: 768
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: d235bbd472699e94aa83d1a05b47942a
internalID: -361044423
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_19
rect:
serializedVersion: 2
x: 1280
y: 768
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 068e12ebcbb81c74495c3fa01d2d7280
internalID: 510701577
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_20
rect:
serializedVersion: 2
x: 1536
y: 768
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 440db1be57448694c8575ff0c94ba458
internalID: -79327215
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_21
rect:
serializedVersion: 2
x: 0
y: 512
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 06a4a367bd9019d449a2209ab0364e4e
internalID: 1381712740
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_22
rect:
serializedVersion: 2
x: 256
y: 512
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 3ee3a80e29b1e024c9ab72073a401486
internalID: -1004148726
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_23
rect:
serializedVersion: 2
x: 512
y: 512
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 611ff42793111cb4dbfb6715f6d5fc01
internalID: 460325217
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_24
rect:
serializedVersion: 2
x: 768
y: 512
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 3d778b998ebdddb489733b9820a9e8b5
internalID: 1664779085
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_25
rect:
serializedVersion: 2
x: 1024
y: 512
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: b8d304fd39fad124d8fcb0210f772ba4
internalID: 1180118557
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_26
rect:
serializedVersion: 2
x: 1280
y: 512
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: da7ecf012ef11bc4392d7f1e73a9f733
internalID: 523911355
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_27
rect:
serializedVersion: 2
x: 1536
y: 512
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 93badb68bb813ec4d94e5969a89d2cc8
internalID: -1560850667
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_28
rect:
serializedVersion: 2
x: 0
y: 256
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 8063288705fcbf1488ec22db3929efef
internalID: -2072276093
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_29
rect:
serializedVersion: 2
x: 256
y: 256
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 7abe1f7ba6d7a244c8432325aaa2f253
internalID: -1431171273
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_30
rect:
serializedVersion: 2
x: 512
y: 256
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 981cc6330f1f5cc46954eb69198a44d1
internalID: 1060209914
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_31
rect:
serializedVersion: 2
x: 768
y: 256
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: c303dc25529ab0a46a243c7601a2c017
internalID: 2114356743
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_32
rect:
serializedVersion: 2
x: 1024
y: 256
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 8088d953c868fbb4e9acc6563fe88aef
internalID: 1546023537
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_33
rect:
serializedVersion: 2
x: 1280
y: 256
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 0e23fc523dd295341b2cc4e9e1732969
internalID: -900687120
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_34
rect:
serializedVersion: 2
x: 1536
y: 256
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 1d21318f6a8d8094b9f73e0e813c03e9
internalID: -1226819572
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_35
rect:
serializedVersion: 2
x: 0
y: 0
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: deeebcb5482f8e447bb65cb5f08bed02
internalID: 1195237641
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_36
rect:
serializedVersion: 2
x: 256
y: 0
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 85a9044f2dd88444f9809501cb666aea
internalID: 1802237477
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_37
rect:
serializedVersion: 2
x: 512
y: 0
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 9bb9aa1005f41b843b2fe7d82f0c9966
internalID: 1491325928
vertices: []
indices:
edges: []
weights: []
- serializedVersion: 2
name: Level_3_256x256_v2_38
rect:
serializedVersion: 2
x: 1536
y: 0
width: 256
height: 256
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 1eabeec7b3f8a9a499f868280941ad65
internalID: -593130101
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
spriteID: dee7b4af98a962145bfcebba1d6c4872
internalID: 0
vertices: []
indices:
@ -159,9 +995,49 @@ TextureImporter:
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
entries:
- key: SpriteEditor.SliceSettings
value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":256.0,"y":256.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}'
nameFileIdTable:
Level_3_256x256_v2_0: -3142202629690266425
Level_3_256x256_v2_1: -1608601578
Level_3_256x256_v2_10: -2122941138
Level_3_256x256_v2_11: -375884924
Level_3_256x256_v2_12: -427802510
Level_3_256x256_v2_13: 1910012740
Level_3_256x256_v2_14: -1427976571
Level_3_256x256_v2_15: -12274565
Level_3_256x256_v2_16: 921372340
Level_3_256x256_v2_17: -1219460144
Level_3_256x256_v2_18: -361044423
Level_3_256x256_v2_19: 510701577
Level_3_256x256_v2_2: -1370314462
Level_3_256x256_v2_20: -79327215
Level_3_256x256_v2_21: 1381712740
Level_3_256x256_v2_22: -1004148726
Level_3_256x256_v2_23: 460325217
Level_3_256x256_v2_24: 1664779085
Level_3_256x256_v2_25: 1180118557
Level_3_256x256_v2_26: 523911355
Level_3_256x256_v2_27: -1560850667
Level_3_256x256_v2_28: -2072276093
Level_3_256x256_v2_29: -1431171273
Level_3_256x256_v2_3: 278802906
Level_3_256x256_v2_30: 1060209914
Level_3_256x256_v2_31: 2114356743
Level_3_256x256_v2_32: 1546023537
Level_3_256x256_v2_33: -900687120
Level_3_256x256_v2_34: -1226819572
Level_3_256x256_v2_35: 1195237641
Level_3_256x256_v2_36: 1802237477
Level_3_256x256_v2_37: 1491325928
Level_3_256x256_v2_38: -593130101
Level_3_256x256_v2_4: -837230164
Level_3_256x256_v2_5: -608911867
Level_3_256x256_v2_6: 1996641130
Level_3_256x256_v2_7: 376241231
Level_3_256x256_v2_8: 566602086
Level_3_256x256_v2_9: -1026027896
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:

View File

@ -11250,7 +11250,7 @@ MonoBehaviour:
m_HandleRect: {fileID: 2095324742}
m_Direction: 2
m_Value: 0
m_Size: 0.99999815
m_Size: 0.9999984
m_NumberOfSteps: 0
m_OnValueChanged:
m_PersistentCalls:
@ -13870,7 +13870,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0.0008981459}
m_AnchoredPosition: {x: 0, y: 0.00094690814}
m_SizeDelta: {x: 0, y: 300}
m_Pivot: {x: 0, y: 1}
--- !u!1 &356011273
@ -17689,7 +17689,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "\u20BD"
m_text: "\u0440\u0443\u0431."
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 4ef792f79e96f814cac2dd9b8734773d, type: 2}
m_sharedMaterial: {fileID: 2036267684637915601, guid: 4ef792f79e96f814cac2dd9b8734773d, type: 2}
@ -27163,7 +27163,6 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::RR.Common.UI.RulesPrizeListPage
targetText: {fileID: 1161291309}
enableTextAutoSize: 1
title: "\u041F\u0440\u0438\u0437\u044B \u0437\u0430 \u0443\u0440\u043E\u0432\u043D\u0438"
emptyPrizeText: "\u0431\u0435\u0437 \u043F\u0440\u0438\u0437\u0430"
noLevelsText: "\u0423\u0440\u043E\u0432\u043D\u0438 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u044B."
@ -34958,7 +34957,7 @@ MonoBehaviour:
m_HandleRect: {fileID: 2020837601}
m_Direction: 2
m_Value: 0
m_Size: 0.9999985
m_Size: 0.99999857
m_NumberOfSteps: 0
m_OnValueChanged:
m_PersistentCalls:
@ -48090,7 +48089,7 @@ MonoBehaviour:
m_HandleRect: {fileID: 1610175936}
m_Direction: 2
m_Value: 0
m_Size: 0.9999985
m_Size: 0.99999857
m_NumberOfSteps: 0
m_OnValueChanged:
m_PersistentCalls:
@ -50359,7 +50358,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0.0008981459}
m_AnchoredPosition: {x: 0, y: 0.00094690814}
m_SizeDelta: {x: 0, y: 300}
m_Pivot: {x: 0, y: 1}
--- !u!1 &1650228246
@ -55216,7 +55215,7 @@ MonoBehaviour:
m_HandleRect: {fileID: 893290822}
m_Direction: 2
m_Value: 0
m_Size: 0.9999985
m_Size: 0.99999857
m_NumberOfSteps: 0
m_OnValueChanged:
m_PersistentCalls:
@ -57603,7 +57602,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0.0008981459}
m_AnchoredPosition: {x: 0, y: 0.00094690814}
m_SizeDelta: {x: 0, y: 300}
m_Pivot: {x: 0, y: 1}
--- !u!114 &1960579128
@ -58347,7 +58346,7 @@ MonoBehaviour:
m_HandleRect: {fileID: 971448637}
m_Direction: 2
m_Value: 0
m_Size: 0.9999985
m_Size: 0.99999857
m_NumberOfSteps: 0
m_OnValueChanged:
m_PersistentCalls:
@ -59613,7 +59612,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0.0009161392}
m_AnchoredPosition: {x: 0, y: 0.0009469454}
m_SizeDelta: {x: 0, y: 300}
m_Pivot: {x: 0, y: 1}
--- !u!1 &2052527768
@ -59649,7 +59648,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0.0008981459}
m_AnchoredPosition: {x: 0, y: 0.00094690814}
m_SizeDelta: {x: 0, y: 300}
m_Pivot: {x: 0, y: 1}
--- !u!114 &2052527770

View File

@ -1,6 +1,5 @@
using System;
using System.IO;
using System.Runtime.InteropServices;
using RR.Common.Controls;
using UnityEngine;
using UnityEngine.Audio;
@ -11,9 +10,6 @@ using RR.Common.Settings;
using RR.Common.Utility;
using RR.Game2D.Behaviour;
using RR.Game2D.Entities;
#if UNITY_EDITOR
using UnityEditor;
#endif
namespace RR.Game2D.Core.Managers
{
@ -34,7 +30,6 @@ namespace RR.Game2D.Core.Managers
public BalanceManager Balance {get; private set;}
// Inactivity control for game
public InactivityManager Inactivity {get; private set;}
// Plate control for game
public ComSystemManager Plate { get; private set; }
// Light control for game
@ -77,7 +72,7 @@ namespace RR.Game2D.Core.Managers
// События менеджера
public event Action<bool> PauseStateChanged; // Когда меняется состояние паузы
public event Action<GameObject> PlayerSpawned; // Когда игрос спавнится на сцене
public event Action<GameObject> PlayerSpawned; // Когда игрок спавнится на сцене
public event Action<int> CoinsChanged; // Когда меняется кол-во монет
public event Action<int> MaxLivesChanged; // Когда меняется максимальное кол-во жизней
public event Action<int> LivesChanged; // Когда меняется кол-во жизней
@ -110,12 +105,6 @@ namespace RR.Game2D.Core.Managers
DontDestroyOnLoad(gameObject);
// -------------------
#if UNITY_EDITOR
Debug.Log("[License] Unity Editor detected. License check skipped.");
#else
StartCoroutine(CheckLicenseCoroutine());
#endif
// Initialize Logger
if (Logger == null)
{
@ -756,310 +745,5 @@ public void TogglePause() => SetPause(!IsPaused);
#endregion
#region DEFENCE
[StructLayout(LayoutKind.Sequential)]
private struct PROCESS_INFORMATION
{
public IntPtr hProcess;
public IntPtr hThread;
public int dwProcessId;
public int dwThreadId;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
private struct STARTUPINFO
{
public int cb;
public string lpReserved;
public string lpDesktop;
public string lpTitle;
public int dwX;
public int dwY;
public int dwXSize;
public int dwYSize;
public int dwXCountChars;
public int dwYCountChars;
public int dwFillAttribute;
public int dwFlags;
public short wShowWindow;
public short cbReserved2;
public IntPtr lpReserved2;
public IntPtr hStdInput;
public IntPtr hStdOutput;
public IntPtr hStdError;
}
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern bool CreateProcess(
string lpApplicationName,
string lpCommandLine,
IntPtr lpProcessAttributes,
IntPtr lpThreadAttributes,
bool bInheritHandles,
uint dwCreationFlags,
IntPtr lpEnvironment,
string lpCurrentDirectory,
ref STARTUPINFO lpStartupInfo,
out PROCESS_INFORMATION lpProcessInformation);
[DllImport("kernel32.dll", SetLastError = true)]
private static extern uint WaitForSingleObject(IntPtr hHandle, uint dwMilliseconds);
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool GetExitCodeProcess(IntPtr hProcess, out uint lpExitCode);
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool CloseHandle(IntPtr hObject);
private const uint WAIT_TIMEOUT = 0x00000102;
private const uint WAIT_OBJECT_0 = 0x00000000;
private System.Collections.IEnumerator CheckLicenseCoroutine()
{
// Ждём один кадр, чтобы Unity завершил инициализацию
yield return null;
bool licenseValid = false;
bool checkCompleted = false;
//bool licenseValid = true;
//bool checkCompleted = true;
string errorMessage = "";
// Запускаем проверку в отдельном потоке (совместимо с IL2CPP)
System.Threading.Thread thread = new System.Threading.Thread(() =>
{
try
{
licenseValid = CheckLicense();
}
catch (Exception ex)
{
errorMessage = ex.Message;
}
finally
{
checkCompleted = true;
}
});
thread.IsBackground = true;
thread.Start();
float timerest = 30f;
while (!checkCompleted && timerest > 0)
{
timerest -= Time.deltaTime;
yield return null;
}
if (!checkCompleted) licenseValid = false;
if (!licenseValid)
{
yield return new WaitForSeconds(3f);
#if UNITY_EDITOR
EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
}
else
{
//exclusive
Screen.fullScreenMode = FullScreenMode.ExclusiveFullScreen;
Screen.SetResolution(1920, 1080, true);
ClickCenter();
}
}
private bool CheckLicense()
{
try
{
string launcherName = "RRLauncher.exe";
string launcherPath = null;
// Поиск лаунчера рядом с исполняемым файлом
string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
string pathInBase = Path.Combine(baseDirectory, launcherName);
if (File.Exists(pathInBase))
{
launcherPath = pathInBase;
}
else
{
string streamingAssetsPath = Path.Combine(Application.streamingAssetsPath, launcherName);
if (File.Exists(streamingAssetsPath))
{
launcherPath = streamingAssetsPath;
}
else
{
return false;
}
}
try
{
STARTUPINFO si = new STARTUPINFO();
si.cb = Marshal.SizeOf(si);
PROCESS_INFORMATION pi;
string workingDir = Path.GetDirectoryName(launcherPath);
bool success = CreateProcess(
launcherPath,
null,
IntPtr.Zero,
IntPtr.Zero,
false,
0,
IntPtr.Zero,
workingDir,
ref si,
out pi);
if (!success) return false;
uint waitResult = WaitForSingleObject(pi.hProcess, 30000);
if (waitResult == WAIT_TIMEOUT)
{
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return false;
}
// Получение кода возврата
uint exitCode;
if (!GetExitCodeProcess(pi.hProcess, out exitCode))
{
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return false;
}
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
if (exitCode == 0)
{
ForceToFront();
return true;
}
return false;
}
catch
{
return false;
}
}
catch (Exception outerEx)
{
Debug.LogError($"[License] CRITICAL ERROR in CheckLicense: {outerEx.Message}");
Debug.LogError($"[License] Stack trace: {outerEx.StackTrace}");
return false;
}
}
#region FORCE TO FRONT
[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hwnd);
[DllImport("user32.dll")]
private static extern IntPtr GetActiveWindow();
public void ForceToFront()//Метод который возвращает фокус а окно после открытия защиты
{
IntPtr handle = GetActiveWindow();
SetForegroundWindow(handle);
}
#endregion
#region клик в центр
[StructLayout(LayoutKind.Sequential)]
public struct INPUT
{
public uint type;
public MOUSEINPUT mi;
}
[StructLayout(LayoutKind.Sequential)]
public struct MOUSEINPUT
{
public int dx;
public int dy;
public uint mouseData;
public uint dwFlags;
public uint time;
public IntPtr dwExtraInfo;
}
private const uint INPUT_MOUSE = 0;
private const uint MOUSEEVENTF_MOVE = 0x0001;
private const uint MOUSEEVENTF_ABSOLUTE = 0x8000;
private const uint MOUSEEVENTF_LEFTDOWN = 0x0002;
private const uint MOUSEEVENTF_LEFTUP = 0x0004;
[DllImport("user32.dll")]
static extern uint SendInput(uint nInputs, INPUT[] pInputs, int cbSize);
public static void ClickCenter()
{
int screenX = Screen.currentResolution.width / 2;
int screenY = Screen.currentResolution.height / 2;
// WinAPI использует координаты 0–65535
int absoluteX = (int)(screenX * 65535 / Screen.currentResolution.width);
int absoluteY = (int)(screenY * 65535 / Screen.currentResolution.height);
INPUT[] inputs = new INPUT[3];
// движение мыши
inputs[0] = new INPUT
{
type = INPUT_MOUSE,
mi = new MOUSEINPUT
{
dx = absoluteX,
dy = absoluteY,
dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE,
}
};
// нажатие
inputs[1] = new INPUT
{
type = INPUT_MOUSE,
mi = new MOUSEINPUT
{
dwFlags = MOUSEEVENTF_LEFTDOWN
}
};
// отпускание
inputs[2] = new INPUT
{
type = INPUT_MOUSE,
mi = new MOUSEINPUT
{
dwFlags = MOUSEEVENTF_LEFTUP
}
};
SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(typeof(INPUT)));
}
#endregion
#endregion
}
}

View File

@ -13,6 +13,7 @@ namespace RR.Common.Managers
private PrizeSystem _prizeSystem;
private PrizeSystemManager _prizeSystemManager;
private PaymentManager _paymentManager;
private StartupLicenseManager _startupLicenseManager;
private ComInputToInputSystemAdapter _adapter;
private void Awake()
@ -24,6 +25,7 @@ namespace RR.Common.Managers
_prizeSystem = GetComponent<PrizeSystem>();
_prizeSystemManager = GetComponent<PrizeSystemManager>();
_paymentManager = GetComponent<PaymentManager>();
_startupLicenseManager = GetComponent<StartupLicenseManager>();
_adapter = GetComponent<ComInputToInputSystemAdapter>();
if (_settingsManager == null) _settingsManager = gameObject.AddComponent<SettingsManager>();
@ -32,6 +34,7 @@ namespace RR.Common.Managers
if (_prizeSystem == null) _prizeSystem = gameObject.AddComponent<PrizeSystem>();
if (_prizeSystemManager == null) _prizeSystemManager = gameObject.AddComponent<PrizeSystemManager>();
if (_paymentManager == null) _paymentManager = gameObject.AddComponent<PaymentManager>();
if (_startupLicenseManager == null) _startupLicenseManager = gameObject.AddComponent<StartupLicenseManager>();
if (_adapter == null) _adapter = gameObject.AddComponent<ComInputToInputSystemAdapter>();
_settingsManager.Initialize();
@ -51,6 +54,9 @@ namespace RR.Common.Managers
_paymentManager.Initialize();
GameManager.Logger.Log(name, "PaymentManager successfully initialized.");
_startupLicenseManager.Initialize();
GameManager.Logger.Log(name, "StartupLicenseManager successfully initialized.");
_adapter.Initialize();
GameManager.Logger.Log(name, "InputAdapter successfully initialized.");

View File

@ -0,0 +1,338 @@
using System;
using System.Collections;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
namespace RR.Game2D.Core.Managers
{
/// <summary>
/// Выполняет проверку лицензии при запуске приложения и пропускает ее в dev-среде.
/// </summary>
public class StartupLicenseManager : MonoBehaviour
{
private const string LauncherName = "RRLauncher.exe";
private const float CheckTimeoutSeconds = 30f;
private const float QuitDelaySeconds = 3f;
private const uint WaitTimeout = 0x00000102;
private bool _isInitialized;
public void Initialize()
{
if (_isInitialized) return;
_isInitialized = true;
StartCoroutine(CheckLicenseCoroutine());
}
private IEnumerator CheckLicenseCoroutine()
{
// Ждем один кадр, чтобы Unity завершил базовую инициализацию.
yield return null;
if (ShouldSkipLicenseCheck())
{
ApplyLicensedStartupState();
yield break;
}
bool licenseValid = false;
bool checkCompleted = false;
Exception licenseCheckException = null;
Thread thread = new Thread(() =>
{
try
{
licenseValid = CheckLicense();
}
catch (Exception ex)
{
licenseCheckException = ex;
}
finally
{
checkCompleted = true;
}
})
{
IsBackground = true
};
thread.Start();
float timeLeft = CheckTimeoutSeconds;
while (!checkCompleted && timeLeft > 0f)
{
timeLeft -= Time.deltaTime;
yield return null;
}
if (!checkCompleted)
{
Debug.LogError("[License] License check timed out.");
licenseValid = false;
}
if (licenseCheckException != null)
{
Debug.LogError($"[License] License check failed: {licenseCheckException.Message}");
Debug.LogError($"[License] Stack trace: {licenseCheckException.StackTrace}");
licenseValid = false;
}
if (!licenseValid)
{
yield return new WaitForSeconds(QuitDelaySeconds);
QuitApplication();
yield break;
}
ApplyLicensedStartupState();
}
private bool ShouldSkipLicenseCheck()
{
if (Application.isEditor)
{
Debug.Log("[License] Unity Editor detected. License check skipped.");
return true;
}
if (Debug.isDebugBuild)
{
Debug.Log("[License] Development build detected. License check skipped.");
return true;
}
return false;
}
private void ApplyLicensedStartupState()
{
Screen.fullScreenMode = FullScreenMode.ExclusiveFullScreen;
Screen.SetResolution(1920, 1080, true);
ClickCenter();
}
private void QuitApplication()
{
#if UNITY_EDITOR
EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
}
private bool CheckLicense()
{
try
{
string launcherPath = FindLauncherPath();
if (string.IsNullOrEmpty(launcherPath))
{
Debug.LogError("[License] RRLauncher.exe not found.");
return false;
}
STARTUPINFO startupInfo = new STARTUPINFO
{
cb = Marshal.SizeOf<STARTUPINFO>()
};
bool success = CreateProcess(
launcherPath,
null,
IntPtr.Zero,
IntPtr.Zero,
false,
0,
IntPtr.Zero,
Path.GetDirectoryName(launcherPath),
ref startupInfo,
out PROCESS_INFORMATION processInfo);
if (!success) return false;
try
{
uint waitResult = WaitForSingleObject(processInfo.hProcess, (uint)(CheckTimeoutSeconds * 1000f));
if (waitResult == WaitTimeout) return false;
if (!GetExitCodeProcess(processInfo.hProcess, out uint exitCode)) return false;
if (exitCode == 0)
{
ForceToFront();
return true;
}
return false;
}
finally
{
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
}
}
catch (Exception outerEx)
{
Debug.LogError($"[License] Critical error in CheckLicense: {outerEx.Message}");
Debug.LogError($"[License] Stack trace: {outerEx.StackTrace}");
return false;
}
}
private static string FindLauncherPath()
{
string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
string pathInBase = Path.Combine(baseDirectory, LauncherName);
if (File.Exists(pathInBase)) return pathInBase;
string pathInStreamingAssets = Path.Combine(Application.streamingAssetsPath, LauncherName);
if (File.Exists(pathInStreamingAssets)) return pathInStreamingAssets;
return null;
}
private void ForceToFront()
{
IntPtr handle = GetActiveWindow();
SetForegroundWindow(handle);
}
private static void ClickCenter()
{
int screenWidth = Screen.currentResolution.width;
int screenHeight = Screen.currentResolution.height;
if (screenWidth <= 0 || screenHeight <= 0) return;
int absoluteX = (int)(screenWidth * 0.5f * 65535 / screenWidth);
int absoluteY = (int)(screenHeight * 0.5f * 65535 / screenHeight);
INPUT[] inputs =
{
new INPUT
{
type = InputMouse,
mi = new MOUSEINPUT
{
dx = absoluteX,
dy = absoluteY,
dwFlags = MouseEventfMove | MouseEventfAbsolute
}
},
new INPUT
{
type = InputMouse,
mi = new MOUSEINPUT
{
dwFlags = MouseEventfLeftDown
}
},
new INPUT
{
type = InputMouse,
mi = new MOUSEINPUT
{
dwFlags = MouseEventfLeftUp
}
}
};
SendInput((uint)inputs.Length, inputs, Marshal.SizeOf<INPUT>());
}
[StructLayout(LayoutKind.Sequential)]
private struct PROCESS_INFORMATION
{
public IntPtr hProcess;
public IntPtr hThread;
public int dwProcessId;
public int dwThreadId;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
private struct STARTUPINFO
{
public int cb;
public string lpReserved;
public string lpDesktop;
public string lpTitle;
public int dwX;
public int dwY;
public int dwXSize;
public int dwYSize;
public int dwXCountChars;
public int dwYCountChars;
public int dwFillAttribute;
public int dwFlags;
public short wShowWindow;
public short cbReserved2;
public IntPtr lpReserved2;
public IntPtr hStdInput;
public IntPtr hStdOutput;
public IntPtr hStdError;
}
[StructLayout(LayoutKind.Sequential)]
private struct INPUT
{
public uint type;
public MOUSEINPUT mi;
}
[StructLayout(LayoutKind.Sequential)]
private struct MOUSEINPUT
{
public int dx;
public int dy;
public uint mouseData;
public uint dwFlags;
public uint time;
public IntPtr dwExtraInfo;
}
private const uint InputMouse = 0;
private const uint MouseEventfMove = 0x0001;
private const uint MouseEventfAbsolute = 0x8000;
private const uint MouseEventfLeftDown = 0x0002;
private const uint MouseEventfLeftUp = 0x0004;
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern bool CreateProcess(
string lpApplicationName,
string lpCommandLine,
IntPtr lpProcessAttributes,
IntPtr lpThreadAttributes,
bool bInheritHandles,
uint dwCreationFlags,
IntPtr lpEnvironment,
string lpCurrentDirectory,
ref STARTUPINFO lpStartupInfo,
out PROCESS_INFORMATION lpProcessInformation);
[DllImport("kernel32.dll", SetLastError = true)]
private static extern uint WaitForSingleObject(IntPtr hHandle, uint dwMilliseconds);
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool GetExitCodeProcess(IntPtr hProcess, out uint lpExitCode);
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool CloseHandle(IntPtr hObject);
[DllImport("user32.dll")]
private static extern bool SetForegroundWindow(IntPtr hwnd);
[DllImport("user32.dll")]
private static extern IntPtr GetActiveWindow();
[DllImport("user32.dll")]
private static extern uint SendInput(uint nInputs, INPUT[] pInputs, int cbSize);
}
}

View File

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

View File

@ -65,6 +65,8 @@ MonoBehaviour:
- rid: 1880696068032167936
- rid: 1880696068032167937
- rid: 1880696068032167938
- rid: 4973897132540428288
- rid: 4973897132540428289
m_RuntimeSettings:
m_List:
- rid: 7752762179098771456
@ -79,7 +81,9 @@ MonoBehaviour:
- rid: 7752762179098771476
- rid: 4931727606779215873
- rid: 4931727606779215874
m_AssetVersion: 9
- rid: 1880696068032167937
- rid: 4973897132540428289
m_AssetVersion: 10
m_ObsoleteDefaultVolumeProfile: {fileID: 0}
m_RenderingLayerNames:
- Default
@ -252,6 +256,18 @@ MonoBehaviour:
data:
m_Version: 1
m_UseBicubicLightmapSampling: 0
- rid: 4973897132540428288
type: {class: URPTerrainShaderSetting, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
data:
m_Version: 0
m_IncludeTerrainShaders: 1
- rid: 4973897132540428289
type: {class: UniversalRenderPipelineRuntimeTerrainShaders, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
data:
m_Version: 0
m_TerrainDetailLit: {fileID: 4800000, guid: f6783ab646d374f94b199774402a5144, type: 3}
m_TerrainDetailGrassBillboard: {fileID: 4800000, guid: 29868e73b638e48ca99a19ea58c48d90, type: 3}
m_TerrainDetailGrass: {fileID: 4800000, guid: e507fdfead5ca47e8b9a768b51c291a1, type: 3}
- rid: 7752762179098771456
type: {class: UniversalRenderPipelineRuntimeTextures, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
data:
@ -340,9 +356,9 @@ MonoBehaviour:
m_CoreBlitPS: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3}
m_CoreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3}
m_SamplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3}
m_TerrainDetailLit: {fileID: 4800000, guid: f6783ab646d374f94b199774402a5144, type: 3}
m_TerrainDetailGrassBillboard: {fileID: 4800000, guid: 29868e73b638e48ca99a19ea58c48d90, type: 3}
m_TerrainDetailGrass: {fileID: 4800000, guid: e507fdfead5ca47e8b9a768b51c291a1, type: 3}
m_TerrainDetailLit: {fileID: 0}
m_TerrainDetailGrassBillboard: {fileID: 0}
m_TerrainDetailGrass: {fileID: 0}
- rid: 7752762179098771467
type: {class: GPUResidentDrawerResources, ns: UnityEngine.Rendering, asm: Unity.RenderPipelines.GPUDriven.Runtime}
data:

View File

@ -1,125 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 10
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 3
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 13
m_BakeOnSceneLoad: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 0
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 2
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 256
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 1
m_PVRDenoiserTypeDirect: 1
m_PVRDenoiserTypeIndirect: 1
m_PVRDenoiserTypeAO: 1
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 1
m_PVRFilteringGaussRadiusAO: 1
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
m_LightingSettings: {fileID: 0}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 3
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
buildHeightMesh: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
m_Roots: []

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: eab343b37579cb143a674154e9210b3f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,20 +1,20 @@
{
"dependencies": {
"com.github-glitchenzo.nugetforunity": "https://github.com/GlitchEnzo/NuGetForUnity.git?path=/src/NuGetForUnity",
"com.unity.ai.inference": "2.5.0",
"com.unity.ai.inference": "2.6.1",
"com.unity.cinemachine": "3.1.5",
"com.unity.collab-proxy": "2.11.3",
"com.unity.collab-proxy": "2.12.4",
"com.unity.feature.2d": "2.0.2",
"com.unity.ide.rider": "3.0.39",
"com.unity.ide.visualstudio": "2.0.26",
"com.unity.inputsystem": "1.18.0",
"com.unity.inputsystem": "1.19.0",
"com.unity.multiplayer.center": "1.0.1",
"com.unity.render-pipelines.universal": "17.3.0",
"com.unity.test-framework": "1.6.0",
"com.unity.timeline": "1.8.10",
"com.unity.timeline": "1.8.12",
"com.unity.ugui": "2.0.0",
"com.unity.visualeffectgraph": "17.3.0",
"com.unity.visualscripting": "1.9.9",
"com.unity.visualscripting": "1.9.11",
"com.unity.modules.accessibility": "1.0.0",
"com.unity.modules.adaptiveperformance": "1.0.0",
"com.unity.modules.ai": "1.0.0",

View File

@ -116,12 +116,12 @@
"url": "https://packages.unity.com"
},
"com.unity.ai.inference": {
"version": "2.5.0",
"version": "2.6.1",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.burst": "1.8.17",
"com.unity.dt.app-ui": "1.3.3",
"com.unity.dt.app-ui": "1.3.6",
"com.unity.collections": "2.4.3",
"com.unity.nuget.newtonsoft-json": "3.2.1",
"com.unity.modules.imageconversion": "1.0.0"
@ -129,7 +129,7 @@
"url": "https://packages.unity.com"
},
"com.unity.burst": {
"version": "1.8.27",
"version": "1.8.29",
"depth": 1,
"source": "registry",
"dependencies": {
@ -149,21 +149,21 @@
"url": "https://packages.unity.com"
},
"com.unity.collab-proxy": {
"version": "2.11.3",
"version": "2.12.4",
"depth": 0,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.collections": {
"version": "2.6.2",
"version": "2.6.5",
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.burst": "1.8.23",
"com.unity.burst": "1.8.27",
"com.unity.mathematics": "1.3.2",
"com.unity.test-framework": "1.4.6",
"com.unity.nuget.mono-cecil": "1.11.5",
"com.unity.nuget.mono-cecil": "1.11.6",
"com.unity.test-framework.performance": "3.0.3"
},
"url": "https://packages.unity.com"
@ -221,7 +221,7 @@
"url": "https://packages.unity.com"
},
"com.unity.inputsystem": {
"version": "1.18.0",
"version": "1.19.0",
"depth": 0,
"source": "registry",
"dependencies": {
@ -314,7 +314,7 @@
}
},
"com.unity.splines": {
"version": "2.8.2",
"version": "2.8.4",
"depth": 1,
"source": "registry",
"dependencies": {
@ -335,7 +335,7 @@
}
},
"com.unity.test-framework.performance": {
"version": "3.2.0",
"version": "3.4.0",
"depth": 2,
"source": "registry",
"dependencies": {
@ -345,7 +345,7 @@
"url": "https://packages.unity.com"
},
"com.unity.timeline": {
"version": "1.8.10",
"version": "1.8.12",
"depth": 0,
"source": "registry",
"dependencies": {
@ -375,7 +375,7 @@
}
},
"com.unity.visualscripting": {
"version": "1.9.9",
"version": "1.9.11",
"depth": 0,
"source": "registry",
"dependencies": {

View File

@ -116,6 +116,7 @@ PlayerSettings:
xboxEnableGuest: 0
xboxEnablePIXSampling: 0
metalFramebufferOnly: 0
metalUseMetalDisplayLink: 0
xboxOneResolution: 0
xboxOneSResolution: 0
xboxOneXResolution: 3
@ -600,7 +601,7 @@ PlayerSettings:
webWasm2023: 0
webEnableSubmoduleStrippingCompatibility: 0
scriptingDefineSymbols:
Standalone: APP_UI_EDITOR_ONLY
Standalone: APP_UI_EDITOR_ONLY;SENTIS_ANALYTICS_ENABLED
additionalCompilerArguments: {}
platformArchitecture: {}
scriptingBackend:

View File

@ -1,2 +1,2 @@
m_EditorVersion: 6000.3.8f1
m_EditorVersionWithRevision: 6000.3.8f1 (1c7db571dde0)
m_EditorVersion: 6000.3.14f1
m_EditorVersionWithRevision: 6000.3.14f1 (d68c3f99a318)