Compare commits
4 Commits
b52e1df9f8
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| df7dc04cf1 | |||
| 4f782a638e | |||
| 9336ed0d6f | |||
| 0da10d3e7c |
8
Assets/ExternalDependencyManager.meta
Normal file
8
Assets/ExternalDependencyManager.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b90734360169d4f6e9a0d45c7e68b868
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/ExternalDependencyManager/Editor.meta
Normal file
8
Assets/ExternalDependencyManager/Editor.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 00ae6535975cc4831b66a2a9668ff033
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/ExternalDependencyManager/Editor/1.2.186.meta
Normal file
8
Assets/ExternalDependencyManager/Editor/1.2.186.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bf62de139853544faadf65eb92d0d55d
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
@ -0,0 +1,38 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e2d7ea0845de4cf984265d2a444b7aa4
|
||||||
|
labels:
|
||||||
|
- gvh
|
||||||
|
- gvh_version-1.2.186
|
||||||
|
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.186/Google.IOSResolver.dll
|
||||||
|
- gvhp_targets-editor
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 0
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: baf24db2bf904e729e7796721c09e8ad
|
||||||
|
labels:
|
||||||
|
- gvh
|
||||||
|
- gvh_rename_to_disable
|
||||||
|
- gvh_version-1.2.186
|
||||||
|
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.186/Google.IOSResolver.pdb
|
||||||
|
- gvhp_targets-editor
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
@ -0,0 +1,38 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fa49a85d4ba140a0ae21528ed12d174c
|
||||||
|
labels:
|
||||||
|
- gvh
|
||||||
|
- gvh_version-1.2.186
|
||||||
|
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.186/Google.JarResolver.dll
|
||||||
|
- gvhp_targets-editor
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d13c8602d5e14e43b0e92459754c4315
|
||||||
|
labels:
|
||||||
|
- gvh
|
||||||
|
- gvh_rename_to_disable
|
||||||
|
- gvh_version-1.2.186
|
||||||
|
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.186/Google.JarResolver.pdb
|
||||||
|
- gvhp_targets-editor
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
@ -0,0 +1,38 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d8bb10c56a0147bc855a6296778e025e
|
||||||
|
labels:
|
||||||
|
- gvh
|
||||||
|
- gvh_version-1.2.186
|
||||||
|
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.186/Google.PackageManagerResolver.dll
|
||||||
|
- gvhp_targets-editor
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a695eb9f64fe49569a2db0c4246c877d
|
||||||
|
labels:
|
||||||
|
- gvh
|
||||||
|
- gvh_rename_to_disable
|
||||||
|
- gvh_version-1.2.186
|
||||||
|
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.186/Google.PackageManagerResolver.pdb
|
||||||
|
- gvhp_targets-editor
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
@ -0,0 +1,38 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5980a684c61d42fbb6b74e2eb3477016
|
||||||
|
labels:
|
||||||
|
- gvh
|
||||||
|
- gvh_version-1.2.186
|
||||||
|
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.186/Google.VersionHandlerImpl.dll
|
||||||
|
- gvhp_targets-editor
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
defineConstraints: []
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
isExplicitlyReferenced: 0
|
||||||
|
validateReferences: 1
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9f56badf3ca84753b00163c3b632d4e5
|
||||||
|
labels:
|
||||||
|
- gvh
|
||||||
|
- gvh_rename_to_disable
|
||||||
|
- gvh_version-1.2.186
|
||||||
|
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.186/Google.VersionHandlerImpl.pdb
|
||||||
|
- gvhp_targets-editor
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
1430
Assets/ExternalDependencyManager/Editor/CHANGELOG.md
Normal file
1430
Assets/ExternalDependencyManager/Editor/CHANGELOG.md
Normal file
File diff suppressed because it is too large
Load Diff
12
Assets/ExternalDependencyManager/Editor/CHANGELOG.md.meta
Normal file
12
Assets/ExternalDependencyManager/Editor/CHANGELOG.md.meta
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: aba4ee01c6d145f7bf2d944d892f709a
|
||||||
|
labels:
|
||||||
|
- gvh
|
||||||
|
- gvh_version-1.2.186
|
||||||
|
- gvhp_exportpath-ExternalDependencyManager/Editor/CHANGELOG.md
|
||||||
|
timeCreated: 1584567712
|
||||||
|
licenseType: Store
|
||||||
|
TextScriptImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Binary file not shown.
@ -0,0 +1,36 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f7632a50b10045458c53a5ddf7b6d238
|
||||||
|
labels:
|
||||||
|
- gvh
|
||||||
|
- gvh_version-1.2.186
|
||||||
|
- gvhp_exportpath-ExternalDependencyManager/Editor/Google.VersionHandler.dll
|
||||||
|
- gvhp_targets-editor
|
||||||
|
timeCreated: 1480838400
|
||||||
|
PluginImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
iconMap: {}
|
||||||
|
executionOrder: {}
|
||||||
|
isPreloaded: 0
|
||||||
|
isOverridable: 0
|
||||||
|
platformData:
|
||||||
|
- first:
|
||||||
|
Any:
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings: {}
|
||||||
|
- first:
|
||||||
|
Editor: Editor
|
||||||
|
second:
|
||||||
|
enabled: 1
|
||||||
|
settings:
|
||||||
|
DefaultValueInitialized: true
|
||||||
|
- first:
|
||||||
|
Windows Store Apps: WindowsStoreApps
|
||||||
|
second:
|
||||||
|
enabled: 0
|
||||||
|
settings:
|
||||||
|
CPU: AnyCPU
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 57f5a82a79ab4b098f09326c8f3c73a6
|
||||||
|
labels:
|
||||||
|
- gvh
|
||||||
|
- gvh_version-1.2.186
|
||||||
|
- gvhp_exportpath-ExternalDependencyManager/Editor/Google.VersionHandler.pdb
|
||||||
|
timeCreated: 1538009133
|
||||||
|
licenseType: Store
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
245
Assets/ExternalDependencyManager/Editor/LICENSE
Normal file
245
Assets/ExternalDependencyManager/Editor/LICENSE
Normal file
@ -0,0 +1,245 @@
|
|||||||
|
Copyright (C) 2014 Google Inc.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
====================================================================================================
|
||||||
|
This package uses MiniJSON
|
||||||
|
|
||||||
|
Copyright (c) 2013 Calvin Rien
|
||||||
|
|
||||||
|
Based on the JSON parser by Patrick van Bergen
|
||||||
|
http://techblog.procurios.nl/k/618/news/view/14605/14863/How-do-I-write-my-own-parser-for-JSON.html
|
||||||
|
|
||||||
|
Simplified it so that it doesn't throw exceptions
|
||||||
|
and can be used in Unity iPhone with maximum code stripping.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
12
Assets/ExternalDependencyManager/Editor/LICENSE.meta
Normal file
12
Assets/ExternalDependencyManager/Editor/LICENSE.meta
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ae8b2bc8d1ac4ad48f0ab2b2e7ac75fb
|
||||||
|
labels:
|
||||||
|
- gvh
|
||||||
|
- gvh_version-1.2.186
|
||||||
|
- gvhp_exportpath-ExternalDependencyManager/Editor/LICENSE
|
||||||
|
timeCreated: 1584567712
|
||||||
|
licenseType: Store
|
||||||
|
TextScriptImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
903
Assets/ExternalDependencyManager/Editor/README.md
Normal file
903
Assets/ExternalDependencyManager/Editor/README.md
Normal file
@ -0,0 +1,903 @@
|
|||||||
|
# External Dependency Manager for Unity
|
||||||
|
|
||||||
|
[](https://openupm.com/packages/com.google.external-dependency-manager/)
|
||||||
|
[](https://openupm.com/packages/com.google.external-dependency-manager/)
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
The External Dependency Manager for Unity (EDM4U) (formerly Play Services
|
||||||
|
Resolver/Jar Resolver) is intended to be used by any Unity package or user that
|
||||||
|
requires:
|
||||||
|
|
||||||
|
* Android specific libraries (e.g
|
||||||
|
[AARs](https://developer.android.com/studio/projects/android-library.html))
|
||||||
|
|
||||||
|
* iOS [CocoaPods](https://cocoapods.org/)
|
||||||
|
|
||||||
|
* Version management of transitive dependencies
|
||||||
|
|
||||||
|
* Management of Package Manager (PM) Registries
|
||||||
|
|
||||||
|
If you want to add and use iOS/Android dependencies directly in your project,
|
||||||
|
then you should to install EDM4U in your project.
|
||||||
|
|
||||||
|
If you are a package user and the plugin you are using depends on EDM4U, *and*
|
||||||
|
the package does not include EDM4U as a package dependency already, then you
|
||||||
|
should to install EDM4U in your project.
|
||||||
|
|
||||||
|
If you are a UPM package maintainer and your package requires EDM4U, then you
|
||||||
|
should add EDM4U as a
|
||||||
|
[package dependency](https://docs.unity3d.com/2019.3/Documentation/Manual/upm-dependencies.html)
|
||||||
|
in your package manifest (`package.json`):
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"com.google.external-dependency-manager": "1.2.178"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
You should still install EDM4U to test out the package during development.
|
||||||
|
|
||||||
|
If you are a legacy `.unitypackage` package maintainer and your package requires
|
||||||
|
EDM4U, please ask the user to install EDM4U separately. You should install EDM4U
|
||||||
|
to test out the package during development.
|
||||||
|
|
||||||
|
Updated releases are available on
|
||||||
|
[GitHub](https://github.com/googlesamples/unity-jar-resolver)
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
The *Android Resolver* and *iOS Resolver* components of the plugin only work
|
||||||
|
with Unity version 4.6.8 or higher.
|
||||||
|
|
||||||
|
The *Version Handler* component only works with Unity 5.x or higher as it
|
||||||
|
depends upon the `PluginImporter` UnityEditor API.
|
||||||
|
|
||||||
|
The *Package Manager Resolver* component only works with Unity 2018.4 or above,
|
||||||
|
when [scoped registry](https://docs.unity3d.com/Manual/upm-scoped.html) support
|
||||||
|
was added to the Package Manager.
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
Check out [troubleshooting](troubleshooting-faq.md) if you need help.
|
||||||
|
|
||||||
|
### Install via OpenUPM
|
||||||
|
|
||||||
|
EDM4U is available on
|
||||||
|
[OpenUPM](https://openupm.com/packages/com.google.external-dependency-manager/):
|
||||||
|
|
||||||
|
```shell
|
||||||
|
openupm add com.google.external-dependency-manager
|
||||||
|
```
|
||||||
|
|
||||||
|
### Install via git URL
|
||||||
|
1. Open Package Manager
|
||||||
|
2. Click on the + icon on the top left corner of the "Package Manager" screen
|
||||||
|
3. Click on "Install package from git url..."
|
||||||
|
4. Paste: https://github.com/googlesamples/unity-jar-resolver.git?path=upm
|
||||||
|
|
||||||
|
### Install via Google APIs for Unity
|
||||||
|
|
||||||
|
EDM4U is available both in UPM and legacy `.unitypackage` formats on
|
||||||
|
[Google APIs for Unity](https://developers.google.com/unity/archive#external_dependency_manager_for_unity).
|
||||||
|
|
||||||
|
You may install the UPM version (.tgz) as a
|
||||||
|
[local UPM package](https://docs.unity3d.com/Manual/upm-ui-local.html).
|
||||||
|
|
||||||
|
You can also install EDM4U in your project as a `.unitypackage`. This is not
|
||||||
|
recommended due to potential conflicts.
|
||||||
|
|
||||||
|
### Conflict Resolution
|
||||||
|
|
||||||
|
For historical reasons, a package maintainer may choose to embed EDM4U in their
|
||||||
|
package for ease of installation. This will create a conflict when you try to
|
||||||
|
install EDM4U with the steps above, or with another package with embedded EDM4U.
|
||||||
|
If your project imported a `.unitypackage` that has a copy of EDM4U embedded in
|
||||||
|
it, you may safely delete it from your Assets folder. If your project depends on
|
||||||
|
another UPM package with EDM4U, please reach out to the package maintainer and
|
||||||
|
ask them to replace it with a dependency to this package. In the meantime, you
|
||||||
|
can workaround the issue by copying the package to your Packages folder (to
|
||||||
|
create an
|
||||||
|
[embedded package](https://docs.unity3d.com/Manual/upm-concepts.html#Embedded))
|
||||||
|
and perform the steps yourself to avoid a dependency conflict.
|
||||||
|
|
||||||
|
### Config file
|
||||||
|
|
||||||
|
To start adding dependencies to your project, copy and rename the
|
||||||
|
[SampleDependencies.xml](https://github.com/googlesamples/unity-jar-resolver/blob/master/sample/Assets/ExternalDependencyManager/Editor/SampleDependencies.xml)
|
||||||
|
file into your plugin and add the dependencies your project requires.
|
||||||
|
|
||||||
|
The XML file needs to be under an `Editor` directory and match the name
|
||||||
|
`*Dependencies.xml`. For example, `MyPlugin/Editor/MyPluginDependencies.xml`.
|
||||||
|
|
||||||
|
## Usages
|
||||||
|
|
||||||
|
### Android Resolver
|
||||||
|
|
||||||
|
The Android Resolver copies specified dependencies from local or remote Maven
|
||||||
|
repositories into the Unity project when a user selects Android as the build
|
||||||
|
target in the Unity editor.
|
||||||
|
|
||||||
|
For example, to add the Google Play Games library
|
||||||
|
(`com.google.android.gms:play-services-games` package) at version `9.8.0` to the
|
||||||
|
set of a plugin's Android dependencies:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<dependencies>
|
||||||
|
<androidPackages>
|
||||||
|
<androidPackage spec="com.google.android.gms:play-services-games:9.8.0">
|
||||||
|
<androidSdkPackageIds>
|
||||||
|
<androidSdkPackageId>extra-google-m2repository</androidSdkPackageId>
|
||||||
|
</androidSdkPackageIds>
|
||||||
|
</androidPackage>
|
||||||
|
</androidPackages>
|
||||||
|
</dependencies>
|
||||||
|
```
|
||||||
|
|
||||||
|
The version specification (last component) supports:
|
||||||
|
|
||||||
|
* Specific versions e.g `9.8.0`
|
||||||
|
|
||||||
|
* Partial matches e.g `9.8.+` would match 9.8.0, 9.8.1 etc. choosing the most
|
||||||
|
recent version
|
||||||
|
|
||||||
|
* Latest version using `LATEST` or `+`. We do *not* recommend using this
|
||||||
|
unless you're 100% sure the library you depend upon will not break your
|
||||||
|
Unity plugin in future
|
||||||
|
|
||||||
|
The above example specifies the dependency as a component of the Android SDK
|
||||||
|
manager such that the Android SDK manager will be executed to install the
|
||||||
|
package if it's not found. If your Android dependency is located on Maven
|
||||||
|
central it's possible to specify the package simply using the `androidPackage`
|
||||||
|
element:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<dependencies>
|
||||||
|
<androidPackages>
|
||||||
|
<androidPackage spec="com.google.api-client:google-api-client-android:1.22.0" />
|
||||||
|
</androidPackages>
|
||||||
|
</dependencies>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Auto-resolution
|
||||||
|
|
||||||
|
By default the Android Resolver automatically monitors the dependencies you have
|
||||||
|
specified and the `Plugins/Android` folder of your Unity project. The resolution
|
||||||
|
process runs when the specified dependencies are not present in your project.
|
||||||
|
|
||||||
|
The *auto-resolution* process can be disabled via the `Assets > External
|
||||||
|
Dependency Manager > Android Resolver > Settings` menu.
|
||||||
|
|
||||||
|
Manual resolution can be performed using the following menu options:
|
||||||
|
|
||||||
|
* `Assets > External Dependency Manager > Android Resolver > Resolve`
|
||||||
|
|
||||||
|
* `Assets > External Dependency Manager > Android Resolver > Force Resolve`
|
||||||
|
|
||||||
|
#### Deleting libraries
|
||||||
|
|
||||||
|
Resolved packages are tracked via asset labels by the Android Resolver. They can
|
||||||
|
easily be deleted using the `Assets > External Dependency Manager > Android
|
||||||
|
Resolver > Delete Resolved Libraries` menu item.
|
||||||
|
|
||||||
|
#### Android Manifest Variable Processing
|
||||||
|
|
||||||
|
Some AAR files (for example play-services-measurement) contain variables that
|
||||||
|
are processed by the Android Gradle plugin. Unfortunately, Unity does not
|
||||||
|
perform the same processing when using Unity's Internal Build System, so the
|
||||||
|
Android Resolver plugin handles known cases of this variable substitution by
|
||||||
|
exploding the AAR into a folder and replacing `${applicationId}` with the
|
||||||
|
`bundleID`.
|
||||||
|
|
||||||
|
Disabling AAR explosion and therefore Android manifest processing can be done
|
||||||
|
via the `Assets > External Dependency Manager > Android Resolver > Settings`
|
||||||
|
menu. You may want to disable explosion of AARs if you're exporting a project to
|
||||||
|
be built with Gradle/Android Studio.
|
||||||
|
|
||||||
|
#### ABI Stripping
|
||||||
|
|
||||||
|
Some AAR files contain native libraries (.so files) for each ABI supported by
|
||||||
|
Android. Unfortunately, when targeting a single ABI (e.g x86), Unity does not
|
||||||
|
strip native libraries for unused ABIs. To strip unused ABIs, the Android
|
||||||
|
Resolver plugin explodes an AAR into a folder and removes unused ABIs to reduce
|
||||||
|
the built APK size. Furthermore, if native libraries are not stripped from an
|
||||||
|
APK (e.g you have a mix of Unity's x86 library and some armeabi-v7a libraries)
|
||||||
|
Android may attempt to load the wrong library for the current runtime ABI
|
||||||
|
completely breaking your plugin when targeting some architectures.
|
||||||
|
|
||||||
|
AAR explosion and therefore ABI stripping can be disabled via the `Assets >
|
||||||
|
External Dependency Manager > Android Resolver > Settings` menu. You may want to
|
||||||
|
disable explosion of AARs if you're exporting a project to be built with
|
||||||
|
Gradle/Android Studio.
|
||||||
|
|
||||||
|
#### Resolution Strategies
|
||||||
|
|
||||||
|
By default the Android Resolver will use Gradle to download dependencies prior
|
||||||
|
to integrating them into a Unity project. This works with Unity's internal build
|
||||||
|
system and Gradle/Android Studio project export.
|
||||||
|
|
||||||
|
It's possible to change the resolution strategy via the `Assets > External
|
||||||
|
Dependency Manager > Android Resolver > Settings` menu.
|
||||||
|
|
||||||
|
##### Download Artifacts with Gradle
|
||||||
|
|
||||||
|
Using the default resolution strategy, the Android resolver executes the
|
||||||
|
following operations:
|
||||||
|
|
||||||
|
- Remove the result of previous Android resolutions. E.g Delete all files and
|
||||||
|
directories labeled with "gpsr" under `Plugins/Android` from the project.
|
||||||
|
|
||||||
|
- Collect the set of Android dependencies (libraries) specified by a project's
|
||||||
|
`*Dependencies.xml` files.
|
||||||
|
|
||||||
|
- Run `download_artifacts.gradle` with Gradle to resolve conflicts and, if
|
||||||
|
successful, download the set of resolved Android libraries (AARs, JARs).
|
||||||
|
|
||||||
|
- Process each AAR/JAR so that it can be used with the currently selected
|
||||||
|
Unity build system (e.g Internal vs. Gradle, Export vs. No Export). This
|
||||||
|
involves patching each reference to `applicationId` in the
|
||||||
|
`AndroidManifest.xml` with the project's bundle ID. This means resolution
|
||||||
|
must be run again if the bundle ID has changed.
|
||||||
|
|
||||||
|
- Move the processed AARs to `Plugins/Android` so they will be included when
|
||||||
|
Unity invokes the Android build.
|
||||||
|
|
||||||
|
##### Integrate into mainTemplate.gradle
|
||||||
|
|
||||||
|
Unity 5.6 introduced support for customizing the `build.gradle` used to build
|
||||||
|
Unity projects with Gradle. When the *Patch mainTemplate.gradle* setting is
|
||||||
|
enabled, rather than downloading artifacts before the build, Android resolution
|
||||||
|
results in the execution of the following operations:
|
||||||
|
|
||||||
|
- Remove the result of previous Android resolutions. E.g Delete all files and
|
||||||
|
directories labeled with "gpsr" under `Plugins/Android` from the project and
|
||||||
|
remove sections delimited with `// Android Resolver * Start` and `// Android
|
||||||
|
Resolver * End` lines.
|
||||||
|
|
||||||
|
- Collect the set of Android dependencies (libraries) specified by a project's
|
||||||
|
`*Dependencies.xml` files.
|
||||||
|
|
||||||
|
- Rename any `.srcaar` files in the build to `.aar` and exclude them from
|
||||||
|
being included directly by Unity in the Android build as
|
||||||
|
`mainTemplate.gradle` will be patched to include them instead from their
|
||||||
|
local maven repositories.
|
||||||
|
|
||||||
|
- Inject the required Gradle repositories into `mainTemplate.gradle` at the
|
||||||
|
line matching the pattern `.*apply plugin:
|
||||||
|
'com\.android\.(application|library)'.*` or the section starting at the line
|
||||||
|
`// Android Resolver Repos Start`. If you want to control the injection
|
||||||
|
point in the file, the section delimited by the lines `// Android Resolver
|
||||||
|
Repos Start` and `// Android Resolver Repos End` should be placed in the
|
||||||
|
global scope before the `dependencies` section.
|
||||||
|
|
||||||
|
- Inject the required Android dependencies (libraries) into
|
||||||
|
`mainTemplate.gradle` at the line matching the pattern `***DEPS***` or the
|
||||||
|
section starting at the line `// Android Resolver Dependencies Start`. If
|
||||||
|
you want to control the injection point in the file, the section delimited
|
||||||
|
by the lines `// Android Resolver Dependencies Start` and `// Android
|
||||||
|
Resolver Dependencies End` should be placed in the `dependencies` section.
|
||||||
|
|
||||||
|
- Inject the packaging options logic, which excludes architecture specific
|
||||||
|
libraries based upon the selected build target, into `mainTemplate.gradle`
|
||||||
|
at the line matching the pattern `android +{` or the section starting at the
|
||||||
|
line `// Android Resolver Exclusions Start`. If you want to control the
|
||||||
|
injection point in the file, the section delimited by the lines `// Android
|
||||||
|
Resolver Exclusions Start` and `// Android Resolver Exclusions End` should
|
||||||
|
be placed in the global scope before the `android` section.
|
||||||
|
|
||||||
|
#### Dependency Tracking
|
||||||
|
|
||||||
|
The Android Resolver creates the
|
||||||
|
`ProjectSettings/AndroidResolverDependencies.xml` to quickly determine the set
|
||||||
|
of resolved dependencies in a project. This is used by the auto-resolution
|
||||||
|
process to only run the expensive resolution process when necessary.
|
||||||
|
|
||||||
|
#### Displaying Dependencies
|
||||||
|
|
||||||
|
It's possible to display the set of dependencies the Android Resolver would
|
||||||
|
download and process in your project via the `Assets > External Dependency
|
||||||
|
Manager > Android Resolver > Display Libraries` menu item.
|
||||||
|
|
||||||
|
### iOS Resolver
|
||||||
|
|
||||||
|
The iOS resolver component of this plugin manages
|
||||||
|
[CocoaPods](https://cocoapods.org/). A CocoaPods `Podfile` is generated and the
|
||||||
|
`pod` tool is executed as a post build process step to add dependencies to the
|
||||||
|
Xcode project exported by Unity.
|
||||||
|
|
||||||
|
Dependencies for iOS are added by referring to CocoaPods.
|
||||||
|
|
||||||
|
For example, to add the AdMob pod, version 7.0 or greater with bitcode enabled:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<dependencies>
|
||||||
|
<iosPods>
|
||||||
|
<iosPod name="Google-Mobile-Ads-SDK" version="~> 7.0" bitcodeEnabled="true"
|
||||||
|
minTargetSdk="6.0" addToAllTargets="false" />
|
||||||
|
</iosPods>
|
||||||
|
</dependencies>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Integration Strategies
|
||||||
|
|
||||||
|
The `CocoaPods` are either:
|
||||||
|
|
||||||
|
* Downloaded and injected into the Xcode project file directly, rather than
|
||||||
|
creating a separate xcworkspace. We call this `Xcode project` integration.
|
||||||
|
|
||||||
|
* If the Unity version supports opening a xcworkspace file, the `pod` tool is
|
||||||
|
used as intended to generate a xcworkspace which references the CocoaPods.
|
||||||
|
We call this `Xcode workspace` integration.
|
||||||
|
|
||||||
|
The resolution strategy can be changed via the `Assets > External Dependency
|
||||||
|
Manager > iOS Resolver > Settings` menu.
|
||||||
|
|
||||||
|
##### Appending text to generated Podfile
|
||||||
|
|
||||||
|
In order to modify the generated Podfile you can create a script like this:
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEditor.Callbacks;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class PostProcessIOS : MonoBehaviour
|
||||||
|
{
|
||||||
|
// Must be between 40 and 50 to ensure that it's not overriden by Podfile generation (40) and
|
||||||
|
// that it's added before "pod install" (50).
|
||||||
|
[PostProcessBuildAttribute(45)]
|
||||||
|
private static void PostProcessBuild_iOS(BuildTarget target, string buildPath)
|
||||||
|
{
|
||||||
|
if (target == BuildTarget.iOS)
|
||||||
|
{
|
||||||
|
using (StreamWriter sw = File.AppendText(buildPath + "/Podfile"))
|
||||||
|
{
|
||||||
|
// E.g. add an app extension
|
||||||
|
sw.WriteLine("\ntarget 'NSExtension' do\n pod 'Firebase/Messaging', '6.6.0'\nend");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Package Manager Resolver
|
||||||
|
|
||||||
|
Adding registries to the
|
||||||
|
[Package Manager](https://docs.unity3d.com/Manual/Packages.html) (PM) is a
|
||||||
|
manual process. The Package Manager Resolver (PMR) component of this plugin
|
||||||
|
makes it easy for plugin maintainers to distribute new PM registry servers and
|
||||||
|
easy for plugin users to manage PM registry servers.
|
||||||
|
|
||||||
|
#### Adding Registries
|
||||||
|
|
||||||
|
For example, to add a registry for plugins in the scope `com.coolstuff`:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<registries>
|
||||||
|
<registry name="Cool Stuff"
|
||||||
|
url="https://unityregistry.coolstuff.com"
|
||||||
|
termsOfService="https://coolstuff.com/unityregistry/terms"
|
||||||
|
privacyPolicy="https://coolstuff.com/unityregistry/privacy">
|
||||||
|
<scopes>
|
||||||
|
<scope>com.coolstuff</scope>
|
||||||
|
</scopes>
|
||||||
|
</registry>
|
||||||
|
</registries>
|
||||||
|
```
|
||||||
|
|
||||||
|
When PMR is loaded it will prompt the developer to add the registry to their
|
||||||
|
project if it isn't already present in the `Packages/manifest.json` file.
|
||||||
|
|
||||||
|
For more information, see Unity's documentation on
|
||||||
|
[scoped package registries](https://docs.unity3d.com/Manual/upm-scoped.html).
|
||||||
|
|
||||||
|
#### Managing Registries
|
||||||
|
|
||||||
|
It's possible to add and remove registries that are specified via PMR XML
|
||||||
|
configuration files via the following menu options:
|
||||||
|
|
||||||
|
* `Assets > External Dependency Manager > Package Manager Resolver > Add
|
||||||
|
Registries` will prompt the user with a window which allows them to add
|
||||||
|
registries discovered in the project to the Package Manager.
|
||||||
|
|
||||||
|
* `Assets > External Dependency Manager > Package Manager Resolver > Remove
|
||||||
|
Registries` will prompt the user with a window which allows them to remove
|
||||||
|
registries discovered in the project from the Package Manager.
|
||||||
|
|
||||||
|
* `Assets > External Dependency Manager > Package Manager Resolver > Modify
|
||||||
|
Registries` will prompt the user with a window which allows them to add or
|
||||||
|
remove registries discovered in the project.
|
||||||
|
|
||||||
|
#### Migration
|
||||||
|
|
||||||
|
PMR can migrate Version Handler packages installed in the `Assets` folder to PM
|
||||||
|
packages. This requires the plugins to implement the following:
|
||||||
|
|
||||||
|
* `.unitypackage` must include a Version Handler manifests that describes the
|
||||||
|
components of the plugin. If the plugin has no dependencies the manifest
|
||||||
|
would just include the files in the plugin.
|
||||||
|
|
||||||
|
* The PM package JSON provided by the registry must include a keyword (in the
|
||||||
|
`versions.VERSION.keyword` list) that maps the PM package to a Version
|
||||||
|
Handler package using the format `vh-name:VERSION_HANDLER_MANIFEST_NAME`
|
||||||
|
where `VERSION_HANDLER_MANIFEST_NAME` is the name of the manifest defined in
|
||||||
|
the `.unitypackage`. For more information see the description of the
|
||||||
|
`gvhp_manifestname` asset label in the [Version Handler](#version-handler)
|
||||||
|
section.
|
||||||
|
|
||||||
|
When using the `Assets > External Dependency Manager > Package Manager
|
||||||
|
Resolver > Migrate Packages` menu option, PMR then will:
|
||||||
|
|
||||||
|
* List all Version Handler manager packages in the project.
|
||||||
|
|
||||||
|
* Search all available packages in the PM registries and fetch keywords
|
||||||
|
associated with each package parsing the Version Handler manifest names for
|
||||||
|
each package.
|
||||||
|
|
||||||
|
* Map each installed Version Handler package to a PM package.
|
||||||
|
|
||||||
|
* Prompt the user to migrate the discovered packages.
|
||||||
|
|
||||||
|
* Perform package migration for all selected packages if the user clicks the
|
||||||
|
`Apply` button.
|
||||||
|
|
||||||
|
#### Configuration
|
||||||
|
|
||||||
|
PMR can be configured via the `Assets > External Dependency Manager > Package
|
||||||
|
Manager Resolver > Settings` menu option:
|
||||||
|
|
||||||
|
* `Add package registries` when enabled, when the plugin loads or registry
|
||||||
|
configuration files change, this will prompt the user to add registries that
|
||||||
|
are not present in the Package Manager.
|
||||||
|
|
||||||
|
* `Prompt to add package registries` will cause a developer to be prompted
|
||||||
|
with a window that will ask for confirmation before adding registries. When
|
||||||
|
this is disabled registries are added silently to the project.
|
||||||
|
|
||||||
|
* `Prompt to migrate packages` will cause a developer to be prompted with a
|
||||||
|
window that will ask for confirmation before migrating packages installed in
|
||||||
|
the `Assets` directory to PM packages.
|
||||||
|
|
||||||
|
* `Enable Analytics Reporting` when enabled, reports the use of the plugin to
|
||||||
|
the developers so they can make imrpovements.
|
||||||
|
|
||||||
|
* `Verbose logging` when enabled prints debug information to the console which
|
||||||
|
can be useful when filing bug reports.
|
||||||
|
|
||||||
|
### Version Handler
|
||||||
|
|
||||||
|
The Version Handler component of this plugin manages:
|
||||||
|
|
||||||
|
* Shared Unity plugin dependencies.
|
||||||
|
|
||||||
|
* Upgrading Unity plugins by cleaning up old files from previous versions.
|
||||||
|
|
||||||
|
* Uninstallation of plugins that are distributed with manifest files.
|
||||||
|
|
||||||
|
* Restoration of plugin assets to their original install locations if assets
|
||||||
|
are tagged with the `exportpath` label.
|
||||||
|
|
||||||
|
Since the Version Handler needs to modify Unity asset metadata (`.meta` files),
|
||||||
|
to enable/disable components, rename and delete asset files it does not work
|
||||||
|
with Package Manager installed packages. It's still possible to include EDM4U in
|
||||||
|
Package Manager packages, the Version Handler component simply won't do anything
|
||||||
|
to PM plugins in this case.
|
||||||
|
|
||||||
|
#### Using Version Handler Managed Plugins
|
||||||
|
|
||||||
|
If a plugin is imported at multiple different versions into a project, if the
|
||||||
|
Version Handler is enabled, it will automatically check all managed assets to
|
||||||
|
determine the set of assets that are out of date and assets that should be
|
||||||
|
removed. To disable automatic checking managed assets disable the `Enable
|
||||||
|
version management` option in the `Assets > External Dependency Manager >
|
||||||
|
Version Handler > Settings` menu.
|
||||||
|
|
||||||
|
If version management is disabled, it's possible to check managed assets
|
||||||
|
manually using the `Assets > External Dependency Manager > Version Handler >
|
||||||
|
Update` menu option.
|
||||||
|
|
||||||
|
##### Listing Managed Plugins
|
||||||
|
|
||||||
|
Plugins managed by the Version Handler, those that ship with manifest files, can
|
||||||
|
displayed using the `Assets > External Dependency Manager > Version Handler >
|
||||||
|
Display Managed Packages` menu option. The list of plugins are written to the
|
||||||
|
console window along with the set of files used by each plugin.
|
||||||
|
|
||||||
|
##### Uninstalling Managed Plugins
|
||||||
|
|
||||||
|
Plugins managed by the Version Handler, those that ship with manifest files, can
|
||||||
|
be removed using the `Assets > External Dependency Manager > Version Handler >
|
||||||
|
Uninstall Managed Packages` menu option. This operation will display a window
|
||||||
|
that allows a developer to select a set of plugins to remove which will remove
|
||||||
|
all files owned by each plugin excluding those that are in use by other
|
||||||
|
installed plugins.
|
||||||
|
|
||||||
|
Files managed by the Version Handler, those labeled with the `gvh` asset label,
|
||||||
|
can be checked to see whether anything needs to be upgraded, disabled or removed
|
||||||
|
using the `Assets > External Dependency Manager > Version Handler > Update` menu
|
||||||
|
option.
|
||||||
|
|
||||||
|
##### Restore Install Paths
|
||||||
|
|
||||||
|
Some developers move assets around in their project which can make it harder for
|
||||||
|
plugin maintainers to debug issues if this breaks Unity's
|
||||||
|
[special folders](https://docs.unity3d.com/Manual/SpecialFolders.html) rules. If
|
||||||
|
assets are labeled with their original install/export path (see
|
||||||
|
`gvhp_exportpath` below), Version Handler can restore assets to their original
|
||||||
|
locations when using the `Assets > External Dependency Manager > Version
|
||||||
|
Handler > Move Files To Install Locations` menu option.
|
||||||
|
|
||||||
|
##### Settings
|
||||||
|
|
||||||
|
Some behavior of the Version Handler can be configured via the `Assets >
|
||||||
|
External Dependency Manager > Version Handler > Settings` menu option.
|
||||||
|
|
||||||
|
* `Enable version management` controls whether the plugin should automatically
|
||||||
|
check asset versions and apply changes. If this is disabled the process
|
||||||
|
should be run manually when installing or upgrading managed plugins using
|
||||||
|
`Assets > External Dependency Manager > Version Handler > Update`.
|
||||||
|
|
||||||
|
* `Rename to canonical filenames` is a legacy option that will rename files to
|
||||||
|
remove version numbers and other labels from filenames.
|
||||||
|
|
||||||
|
* `Prompt for obsolete file deletion` enables the display of a window when
|
||||||
|
obsolete files are deleted allowing the developer to select which files to
|
||||||
|
delete and those to keep.
|
||||||
|
|
||||||
|
* `Allow disabling files via renaming` controls whether obsolete or disabled
|
||||||
|
files should be disabled by renaming them to `myfilename_DISABLED`. Renaming
|
||||||
|
to disable files is required in some scenarios where Unity doesn't support
|
||||||
|
removing files from the build via the PluginImporter.
|
||||||
|
|
||||||
|
* `Enable Analytics Reporting` enables/disables usage reporting to plugin
|
||||||
|
developers to improve the product.
|
||||||
|
|
||||||
|
* `Verbose logging` enables *very* noisy log output that is useful for
|
||||||
|
debugging while filing a bug report or building a new managed plugin.
|
||||||
|
|
||||||
|
* `Use project settings` saves settings for the plugin in the project rather
|
||||||
|
than system-wide.
|
||||||
|
|
||||||
|
#### Redistributing a Managed Plugin
|
||||||
|
|
||||||
|
The Version Handler employs a couple of methods for managing version selection,
|
||||||
|
upgrade and removal of plugins.
|
||||||
|
|
||||||
|
* Each plugin can ship with a manifest file that lists the files it includes.
|
||||||
|
This makes it possible for Version Handler to calculate the difference in
|
||||||
|
assets between the most recent release of a plugin and the previous release
|
||||||
|
installed in a project. If a files are removed the Version Handler will
|
||||||
|
prompt the user to clean up obsolete files.
|
||||||
|
|
||||||
|
* Plugins can ship using assets with unique names, unique GUIDs and version
|
||||||
|
number labels. Version numbers can be attached to assets using labels or
|
||||||
|
added to the filename (e.g `myfile.txt` would be `myfile_version-x.y.z.txt).
|
||||||
|
This allows the Version Handler to determine which set of files are the same
|
||||||
|
file at different versions, select the most recent version and prompt the
|
||||||
|
developer to clean up old versions.
|
||||||
|
|
||||||
|
Unity plugins can be managed by the Version Handler using the following steps:
|
||||||
|
|
||||||
|
1. Add the `gvh` asset label to each asset (file) you want Version Handler to
|
||||||
|
manage.
|
||||||
|
|
||||||
|
1. Add the `gvh_version-VERSION` label to each asset where `VERSION` is the
|
||||||
|
version of the plugin you're releasing (e.g 1.2.3).
|
||||||
|
|
||||||
|
1. Add the `gvhp_exportpath-PATH` label to each asset where `PATH` is the
|
||||||
|
export path of the file when the `.unitypackage` is created. This is used to
|
||||||
|
track files if they're moved around in a project by developers.
|
||||||
|
|
||||||
|
1. Optional: Add `gvh_targets-editor` label to each editor DLL in your plugin
|
||||||
|
and disable `editor` as a target platform for the DLL. The Version Handler
|
||||||
|
will enable the most recent version of this DLL when the plugin is imported.
|
||||||
|
|
||||||
|
1. Optional: If your plugin is included in other Unity plugins, you should add
|
||||||
|
the version number to each filename and change the GUID of each asset. This
|
||||||
|
allows multiple versions of your plugin to be imported into a Unity project,
|
||||||
|
with the Version Handler component activating only the most recent version.
|
||||||
|
|
||||||
|
1. Create a manifest text file named `MY_UNIQUE_PLUGIN_NAME_VERSION.txt` that
|
||||||
|
lists all the files in your plugin relative to the project root. Then add
|
||||||
|
the `gvh_manifest` label to the asset to indicate this file is a plugin
|
||||||
|
manifest.
|
||||||
|
|
||||||
|
1. Optional: Add a `gvhp_manifestname-NAME` label to your manifest file to
|
||||||
|
provide a human readable name for your package. If this isn't provided the
|
||||||
|
name of the manifest file will be used as the package name. NAME can match
|
||||||
|
the pattern `[0-9]+[a-zA-Z -]` where a leading integer will set the priority
|
||||||
|
of the name where `0` is the highest priority and preferably used as the
|
||||||
|
display name. The lowest value (i.e highest priority name) will be used as
|
||||||
|
the display name and all other specified names will be aliases of the
|
||||||
|
display name. Aliases can refer to previous names of the package allowing
|
||||||
|
renaming across published versions.
|
||||||
|
|
||||||
|
1. Redistribute EDM4U Unity plugin with your plugin. See the
|
||||||
|
[Plugin Redistribution](#plugin-redistribution) section for details.
|
||||||
|
|
||||||
|
If you follow these steps:
|
||||||
|
|
||||||
|
* When users import a newer version of your plugin, files referenced by the
|
||||||
|
older version's manifest are cleaned up.
|
||||||
|
|
||||||
|
* The latest version of the plugin will be selected when users import multiple
|
||||||
|
packages that include your plugin, assuming the steps in
|
||||||
|
[Plugin Redistribution](#plugin-redistribution) are followed.
|
||||||
|
|
||||||
|
## Background
|
||||||
|
|
||||||
|
Many Unity plugins have dependencies upon Android specific libraries, iOS
|
||||||
|
CocoaPods, and sometimes have transitive dependencies upon other Unity plugins.
|
||||||
|
This causes the following problems:
|
||||||
|
|
||||||
|
* Integrating platform specific (e.g Android and iOS) libraries within a Unity
|
||||||
|
project can be complex and a burden on a Unity plugin maintainer.
|
||||||
|
* The process of resolving conflicting dependencies on platform specific
|
||||||
|
libraries is pushed to the developer attempting to use a Unity plugin. The
|
||||||
|
developer trying to use your plugin is very likely to give up when faced
|
||||||
|
with Android or iOS specific build errors.
|
||||||
|
* The process of resolving conflicting Unity plugins (due to shared Unity
|
||||||
|
plugin components) is pushed to the developer attempting to use your Unity
|
||||||
|
plugin. In an effort to resolve conflicts, the developer will very likely
|
||||||
|
attempt to resolve problems by deleting random files in your plugin, report
|
||||||
|
bugs when that doesn't work and finally give up.
|
||||||
|
|
||||||
|
EDM4U provides solutions for each of these problems.
|
||||||
|
|
||||||
|
### Android Dependency Management
|
||||||
|
|
||||||
|
The *Android Resolver* component of this plugin will download and integrate
|
||||||
|
Android library dependencies and handle any conflicts between plugins that share
|
||||||
|
the same dependencies.
|
||||||
|
|
||||||
|
Without the Android Resolver, typically Unity plugins bundle their AAR and JAR
|
||||||
|
dependencies, e.g. a Unity plugin `SomePlugin` that requires the Google Play
|
||||||
|
Games Android library would redistribute the library and its transitive
|
||||||
|
dependencies in the folder `SomePlugin/Android/`. When a user imports
|
||||||
|
`SomeOtherPlugin` that includes the same libraries (potentially at different
|
||||||
|
versions) in `SomeOtherPlugin/Android/`, the developer using `SomePlugin` and
|
||||||
|
`SomeOtherPlugin` will see an error when building for Android that can be hard
|
||||||
|
to interpret.
|
||||||
|
|
||||||
|
Using the Android Resolver to manage Android library dependencies:
|
||||||
|
|
||||||
|
* Solves Android library conflicts between plugins.
|
||||||
|
* Handles all of the various processing steps required to use Android
|
||||||
|
libraries (AARs, JARs) in Unity 4.x and above projects. Almost all versions
|
||||||
|
of Unity have - at best - partial support for AARs.
|
||||||
|
* (Experimental) Supports minification of included Java components without
|
||||||
|
exporting a project.
|
||||||
|
|
||||||
|
### iOS Dependency Management
|
||||||
|
|
||||||
|
The *iOS Resolver* component of this plugin integrates with
|
||||||
|
[CocoaPods](https://cocoapods.org/) to download and integrate iOS libraries and
|
||||||
|
frameworks into the Xcode project Unity generates when building for iOS. Using
|
||||||
|
CocoaPods allows multiple plugins to utilize shared components without forcing
|
||||||
|
developers to fix either duplicate or incompatible versions of libraries
|
||||||
|
included through multiple Unity plugins in their project.
|
||||||
|
|
||||||
|
### Package Manager Registry Setup
|
||||||
|
|
||||||
|
The [Package Manager](https://docs.unity3d.com/Manual/Packages.html) (PM) makes
|
||||||
|
use of [NPM](https://www.npmjs.com/) registry servers for package hosting and
|
||||||
|
provides ways to discover, install, upgrade and uninstall packages. This makes
|
||||||
|
it easier for developers to manage plugins within their projects.
|
||||||
|
|
||||||
|
However, installing additional package registries requires a few manual steps
|
||||||
|
that can potentially be error prone. The *Package Manager Resolver* component of
|
||||||
|
this plugin integrates with [PM](https://docs.unity3d.com/Manual/Packages.html)
|
||||||
|
to provide a way to auto-install PM package registries when a `.unitypackage` is
|
||||||
|
installed which allows plugin maintainers to ship a `.unitypackage` that can
|
||||||
|
provide access to their own PM registry server to make it easier for developers
|
||||||
|
to manage their plugins.
|
||||||
|
|
||||||
|
### Unity Plugin Version Management
|
||||||
|
|
||||||
|
Finally, the *Version Handler* component of this plugin simplifies the process
|
||||||
|
of managing transitive dependencies of Unity plugins and each plugin's upgrade
|
||||||
|
process.
|
||||||
|
|
||||||
|
For example, without the Version Handler plugin, if:
|
||||||
|
|
||||||
|
* Unity plugin `SomePlugin` includes `EDM4U` plugin at version 1.1.
|
||||||
|
* Unity plugin `SomeOtherPlugin` includes `EDM4U` plugin at version 1.2.
|
||||||
|
|
||||||
|
The version of `EDM4U` included in the developer's project depends upon the
|
||||||
|
order the developer imports `SomePlugin` or `SomeOtherPlugin`.
|
||||||
|
|
||||||
|
This results in:
|
||||||
|
|
||||||
|
* `EDM4U` at version 1.2, if `SomePlugin` is imported then `SomeOtherPlugin`
|
||||||
|
is imported.
|
||||||
|
* `EDM4U` at version 1.1, if `SomeOtherPlugin` is imported then `SomePlugin`
|
||||||
|
is imported.
|
||||||
|
|
||||||
|
The Version Handler solves the problem of managing transitive dependencies by:
|
||||||
|
|
||||||
|
* Specifying a set of packaging requirements that enable a plugin at different
|
||||||
|
versions to be imported into a Unity project.
|
||||||
|
* Providing activation logic that selects the latest version of a plugin
|
||||||
|
within a project.
|
||||||
|
|
||||||
|
When using the Version Handler to manage `EDM4U` included in `SomePlugin` and
|
||||||
|
`SomeOtherPlugin`, from the prior example, version 1.2 will always be the
|
||||||
|
version activated in a developer's Unity project.
|
||||||
|
|
||||||
|
Plugin creators are encouraged to adopt this library to ease integration for
|
||||||
|
their customers. For more information about integrating EDM4U into your own
|
||||||
|
plugin, see the [Plugin Redistribution](#plugin-redistribution) section of this
|
||||||
|
document.
|
||||||
|
|
||||||
|
## Analytics
|
||||||
|
|
||||||
|
The External Dependency Manager for Unity plugin by default logs usage to Google
|
||||||
|
Analytics. The purpose of the logging is to quantitatively measure the usage of
|
||||||
|
functionality, to gather reports on integration failures and to inform future
|
||||||
|
improvements to the developer experience of the External Dependency Manager
|
||||||
|
plugin. Note that the analytics collected are limited to the scope of the EDM4U
|
||||||
|
plugin’s usage.
|
||||||
|
|
||||||
|
For details of what is logged, please refer to the usage of
|
||||||
|
`EditorMeasurement.Report()` in the source code.
|
||||||
|
|
||||||
|
## Plugin Redistribution
|
||||||
|
|
||||||
|
If you are a package maintainer and your package depends on EDM4U, it is highly
|
||||||
|
recommended to use the UPM format and add EDM4U as a dependency. If you must
|
||||||
|
include it in your `.unitypackage`, redistributing `EDM4U` inside your own
|
||||||
|
plugin might ease the integration process for your users.
|
||||||
|
|
||||||
|
If you wish to redistribute `EDM4U` inside your plugin, you **must** follow
|
||||||
|
these steps when importing the `external-dependency-manager-*.unitypackage`, and
|
||||||
|
when exporting your own plugin package:
|
||||||
|
|
||||||
|
1. Import the `external-dependency-manager-*.unitypackage` into your plugin
|
||||||
|
project by
|
||||||
|
[running Unity from the command line](https://docs.unity3d.com/Manual/CommandLineArguments.html),
|
||||||
|
ensuring that you add the `-gvh_disable` option.
|
||||||
|
1. Export your plugin by
|
||||||
|
[running Unity from the command line](https://docs.unity3d.com/Manual/CommandLineArguments.html),
|
||||||
|
ensuring that you:
|
||||||
|
- Include the contents of the `Assets/PlayServicesResolver` and
|
||||||
|
`Assets/ExternalDependencyManager` directory.
|
||||||
|
- Add the `-gvh_disable` option.
|
||||||
|
|
||||||
|
You **must** specify the `-gvh_disable` option in order for the Version Handler
|
||||||
|
to work correctly!
|
||||||
|
|
||||||
|
For example, the following command will import the
|
||||||
|
`external-dependency-manager-1.2.46.0.unitypackage` into the project
|
||||||
|
`MyPluginProject` and export the entire Assets folder to
|
||||||
|
`MyPlugin.unitypackage`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
Unity -gvh_disable \
|
||||||
|
-batchmode \
|
||||||
|
-importPackage external-dependency-manager-1.2.46.0.unitypackage \
|
||||||
|
-projectPath MyPluginProject \
|
||||||
|
-exportPackage Assets MyPlugin.unitypackage \
|
||||||
|
-quit
|
||||||
|
```
|
||||||
|
|
||||||
|
### Background
|
||||||
|
|
||||||
|
The *Version Handler* component relies upon deferring the load of editor DLLs so
|
||||||
|
that it can run first and determine the latest version of a plugin component to
|
||||||
|
activate. The build of `EDM4U` plugin has Unity asset metadata that is
|
||||||
|
configured so that the editor components are not initially enabled when it's
|
||||||
|
imported into a Unity project. To maintain this configuration when importing the
|
||||||
|
`external-dependency-manager.unitypackage` into a Unity plugin project, you
|
||||||
|
*must* specify the command line option `-gvh_disable` which will prevent the
|
||||||
|
Version Handler component from running and changing the Unity asset metadata.
|
||||||
|
|
||||||
|
## Building from Source
|
||||||
|
|
||||||
|
To build this plugin from source you need the following tools installed: * Unity
|
||||||
|
2021 and below (with iOS and Android modules installed) * Java 11
|
||||||
|
|
||||||
|
You can build the plugin by running the following from your shell (Linux / OSX):
|
||||||
|
|
||||||
|
```shell
|
||||||
|
./gradlew build
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
or Windows:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
./gradlew.bat build
|
||||||
|
```
|
||||||
|
|
||||||
|
If Java 11 is not your default Java command, add
|
||||||
|
`-Dorg.gradle.java.home=<PATH_TO_JAVA_HOME>` to the command above.
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
You can run the tests by running the following from your shell (Linux / OSX):
|
||||||
|
|
||||||
|
```shell
|
||||||
|
./gradlew test
|
||||||
|
```
|
||||||
|
|
||||||
|
or Windows:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
./gradlew.bat test
|
||||||
|
```
|
||||||
|
|
||||||
|
The following properties can be set to narrow down the tests to run or change
|
||||||
|
the test run behavior.
|
||||||
|
|
||||||
|
* `INTERACTIVE_MODE_TESTS_ENABLED` - Default to `1`. Set to `1` to enable
|
||||||
|
interactive mode tests, which requires GPU on the machine. Otherwise, only
|
||||||
|
run tests in the batch mode.
|
||||||
|
* `INCLUDE_TEST_TYPES` - Default to empty string, which means to include every
|
||||||
|
type of the test. To narrow down the types of test to run, set this
|
||||||
|
properties with a list of case-insensitive type strings separated by comma.
|
||||||
|
For instance, `-PINCLUDE_TEST_TYPES="Python,NUnit"` means to include only
|
||||||
|
Python tests and NUnit tests. See `TestTypeEnum` in `build.gradle` for
|
||||||
|
available options.
|
||||||
|
* `EXCLUDE_TEST_TYPES` - Default to empty string, which means to exclude none.
|
||||||
|
To add types of tests to exclude, set this properties with a list of
|
||||||
|
case-insensitive type strings separated by comma. For instance,
|
||||||
|
`-PEXCLUDE_TEST_TYPES="Python,NUnit"` means to exclude Python tests and
|
||||||
|
NUnit tests. See `TestTypeEnum` in `build.gradle` for available options.
|
||||||
|
* `INCLUDE_TEST_MODULES` - Default to empty string, which means to include the
|
||||||
|
tests for every modules. To narrow down modules to test, set this properties
|
||||||
|
with a list of case-insensitive module strings separated by comma. For
|
||||||
|
instance, `-PINCLUDE_TEST_MODULES="Tool,AndroidResolver"` means to run tests
|
||||||
|
for tools and Android Resolver only. See `TestModuleEnum` in `build.gradle`
|
||||||
|
for available options.
|
||||||
|
* `EXCLUDE_TEST_MODULES` - Default to empty string, which means to exclude
|
||||||
|
none. To add modules to exclude, set this properties with a list of
|
||||||
|
case-insensitive module strings separated by comma. For instance,
|
||||||
|
`-PEXCLUDE_TEST_MODULES="Tool,AndroidResolver"` means to run tests for any
|
||||||
|
modules other than tools and Android Resolver. See `TestModuleEnum` in
|
||||||
|
`build.gradle` for available options.
|
||||||
|
* `EXCLUDE_TESTS` - Default to empty string, which means to exclude none. To
|
||||||
|
add tests to exclude, set this properties with a list of case-insensitive
|
||||||
|
test names separated by comma. For instance,
|
||||||
|
`-PEXCLUDE_TESTS="testGenGuids,testDownloadArtifacts"` means to run tests
|
||||||
|
except the tests with name of `testGenGuids` and `testDownloadArtifacts`.
|
||||||
|
* `CONTINUE_ON_FAIL_FOR_TESTS_ENABLED` - Default to `1`. Set to `1` to
|
||||||
|
continue running the next test when the current one fails. Otherwise, the
|
||||||
|
build script stops whenever any test fails.
|
||||||
|
|
||||||
|
For instance, by running the following command, it only runs the Unity
|
||||||
|
integration tests that does not requires GPU, but exclude tests for Android
|
||||||
|
Resolver module and iOS Resolver module.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
./gradlew test \
|
||||||
|
-PINTERACTIVE_MODE_TESTS_ENABLED=0 \
|
||||||
|
-PINCLUDE_TEST_TYPES="Integration" \
|
||||||
|
-PEXCLUDE_TEST_MODULES="AndroidResolver,iOSResolver"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Releasing
|
||||||
|
|
||||||
|
Each time a new build of this plugin is checked into the source tree you need to
|
||||||
|
do the following:
|
||||||
|
|
||||||
|
* Bump the plugin version variable `pluginVersion` in `build.gradle`
|
||||||
|
* Update `CHANGELOG.md` with the new version number and changes included in
|
||||||
|
the release.
|
||||||
|
* Build the release using `./gradlew release` which performs the following:
|
||||||
|
* Updates `external-dependency-manager-*.unitypackage`
|
||||||
|
* Copies the unpacked plugin to the `exploded` directory.
|
||||||
|
* Updates template metadata files in the `plugin` directory. The GUIDs of
|
||||||
|
all asset metadata is modified due to the version number change. Each
|
||||||
|
file within the plugin is versioned to allow multiple versions of the
|
||||||
|
plugin to be imported into a Unity project which allows the most recent
|
||||||
|
version to be activated by the Version Handler component.
|
||||||
|
* Create release commit using `./gradlew gitCreateReleaseCommit` which
|
||||||
|
performs `git commit -a -m "description from CHANGELOG.md"`
|
||||||
|
* Once the release commit is merge, tag the release using `./gradlew
|
||||||
|
gitTagRelease` which performs the following:
|
||||||
|
* `git tag -a pluginVersion -m "version RELEASE"` to tag the release.
|
||||||
|
* Update tags on remote branch using `git push --tag REMOTE HEAD:master`
|
||||||
12
Assets/ExternalDependencyManager/Editor/README.md.meta
Normal file
12
Assets/ExternalDependencyManager/Editor/README.md.meta
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 77919e84cef8419ab4b725fc16e83d52
|
||||||
|
labels:
|
||||||
|
- gvh
|
||||||
|
- gvh_version-1.2.186
|
||||||
|
- gvhp_exportpath-ExternalDependencyManager/Editor/README.md
|
||||||
|
timeCreated: 1584567712
|
||||||
|
licenseType: Store
|
||||||
|
TextScriptImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
Assets/ExternalDependencyManager/Editor/1.2.186/Google.IOSResolver.dll
|
||||||
|
Assets/ExternalDependencyManager/Editor/1.2.186/Google.IOSResolver.pdb
|
||||||
|
Assets/ExternalDependencyManager/Editor/1.2.186/Google.JarResolver.dll
|
||||||
|
Assets/ExternalDependencyManager/Editor/1.2.186/Google.JarResolver.pdb
|
||||||
|
Assets/ExternalDependencyManager/Editor/1.2.186/Google.PackageManagerResolver.dll
|
||||||
|
Assets/ExternalDependencyManager/Editor/1.2.186/Google.PackageManagerResolver.pdb
|
||||||
|
Assets/ExternalDependencyManager/Editor/1.2.186/Google.VersionHandlerImpl.dll
|
||||||
|
Assets/ExternalDependencyManager/Editor/1.2.186/Google.VersionHandlerImpl.pdb
|
||||||
|
Assets/ExternalDependencyManager/Editor/CHANGELOG.md
|
||||||
|
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll
|
||||||
|
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.pdb
|
||||||
|
Assets/ExternalDependencyManager/Editor/LICENSE
|
||||||
|
Assets/ExternalDependencyManager/Editor/README.md
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c9a3138961c74d99b7046b783112fceb
|
||||||
|
labels:
|
||||||
|
- gvh
|
||||||
|
- gvh_manifest
|
||||||
|
- gvh_version-1.2.186
|
||||||
|
- gvhp_exportpath-ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.186_manifest.txt
|
||||||
|
- gvhp_manifestname-0External Dependency Manager
|
||||||
|
- gvhp_manifestname-play-services-resolver
|
||||||
|
timeCreated: 1474401009
|
||||||
|
licenseType: Store
|
||||||
|
TextScriptImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
8
Assets/WordConnectGameToolkit/Editor.meta
Normal file
8
Assets/WordConnectGameToolkit/Editor.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 333c08c9aed6c4f9cb7b1d08c7b23dd2
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,106 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using UnityEditor;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace WordsToolkit.Editor
|
||||||
|
{
|
||||||
|
[InitializeOnLoad]
|
||||||
|
public static class SentisToInferenceEngineMigrator
|
||||||
|
{
|
||||||
|
private const string MIGRATION_KEY = "SentisToInferenceEngineMigrated";
|
||||||
|
|
||||||
|
static SentisToInferenceEngineMigrator()
|
||||||
|
{
|
||||||
|
if (!SessionState.GetBool(MIGRATION_KEY, false))
|
||||||
|
{
|
||||||
|
EditorApplication.delayCall += PerformMigration;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void PerformMigration()
|
||||||
|
{
|
||||||
|
bool migrationPerformed = false;
|
||||||
|
|
||||||
|
// Force remove any Sentis references from PackageCache
|
||||||
|
string packageCachePath = Path.Combine(Application.dataPath, "..", "Library", "PackageCache");
|
||||||
|
if (Directory.Exists(packageCachePath))
|
||||||
|
{
|
||||||
|
var sentisDirectories = Directory.GetDirectories(packageCachePath, "com.unity.sentis*");
|
||||||
|
foreach (var dir in sentisDirectories)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Directory.Delete(dir, true);
|
||||||
|
Debug.Log($"Removed Sentis package cache: {dir}");
|
||||||
|
migrationPerformed = true;
|
||||||
|
}
|
||||||
|
catch (System.Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"Could not remove Sentis cache directory {dir}: {e.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clean up any remaining Sentis meta files
|
||||||
|
CleanupMetaFiles();
|
||||||
|
|
||||||
|
if (migrationPerformed)
|
||||||
|
{
|
||||||
|
Debug.Log("Sentis to Inference Engine migration completed automatically. Restarting Unity...");
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
|
||||||
|
// Restart Unity to ensure clean state
|
||||||
|
EditorApplication.delayCall += () => {
|
||||||
|
EditorApplication.OpenProject(System.IO.Path.GetDirectoryName(Application.dataPath));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
SessionState.SetBool(MIGRATION_KEY, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ForceMigrationAndRestart()
|
||||||
|
{
|
||||||
|
SessionState.SetBool(MIGRATION_KEY, false);
|
||||||
|
PerformMigration();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void RestartUnity()
|
||||||
|
{
|
||||||
|
Debug.Log("Restarting Unity...");
|
||||||
|
EditorApplication.OpenProject(System.IO.Path.GetDirectoryName(Application.dataPath));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void CleanupMetaFiles()
|
||||||
|
{
|
||||||
|
string[] searchPaths = {
|
||||||
|
Path.Combine(Application.dataPath, "Scripts"),
|
||||||
|
Path.Combine(Application.dataPath, "WordConnectGameToolkit")
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (string searchPath in searchPaths)
|
||||||
|
{
|
||||||
|
if (Directory.Exists(searchPath))
|
||||||
|
{
|
||||||
|
var metaFiles = Directory.GetFiles(searchPath, "*.meta", SearchOption.AllDirectories);
|
||||||
|
foreach (var metaFile in metaFiles)
|
||||||
|
{
|
||||||
|
string content = File.ReadAllText(metaFile);
|
||||||
|
if (content.Contains("com.unity.sentis"))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
content = content.Replace("com.unity.sentis", "com.unity.ai.inference");
|
||||||
|
File.WriteAllText(metaFile, content);
|
||||||
|
Debug.Log($"Updated meta file: {metaFile}");
|
||||||
|
}
|
||||||
|
catch (System.Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"Could not update meta file {metaFile}: {e.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b732c2cfd0cf0433a85b0cd7e48d100c
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
BIN
Assets/WordConnectGameToolkit/Font/BalooBhai-Regular.ttf
Normal file
BIN
Assets/WordConnectGameToolkit/Font/BalooBhai-Regular.ttf
Normal file
Binary file not shown.
@ -0,0 +1,21 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 06fea1744dabf414c8bdadfe687197d6
|
||||||
|
TrueTypeFontImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 4
|
||||||
|
fontSize: 16
|
||||||
|
forceTextureCase: -2
|
||||||
|
characterSpacing: 0
|
||||||
|
characterPadding: 1
|
||||||
|
includeFontData: 1
|
||||||
|
fontNames:
|
||||||
|
- Baloo Bhai
|
||||||
|
fallbackFontReferences: []
|
||||||
|
customCharacters:
|
||||||
|
fontRenderingMode: 0
|
||||||
|
ascentCalculationMode: 1
|
||||||
|
useLegacyBoundsCalculation: 0
|
||||||
|
shouldRoundAdvanceValue: 1
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -6882,6 +6882,7 @@ MonoBehaviour:
|
|||||||
m_GlyphPairAdjustmentRecords: []
|
m_GlyphPairAdjustmentRecords: []
|
||||||
fallbackFontAssets: []
|
fallbackFontAssets: []
|
||||||
m_FallbackFontAssetTable:
|
m_FallbackFontAssetTable:
|
||||||
|
- {fileID: 11400000, guid: cdb8507d60e4b4e5fadb9b1825d39fb0, type: 2}
|
||||||
- {fileID: 11400000, guid: 0dfe64dccfb1419084fb31e94bf08869, type: 2}
|
- {fileID: 11400000, guid: 0dfe64dccfb1419084fb31e94bf08869, type: 2}
|
||||||
- {fileID: 11400000, guid: f18c6f2f696cf48b2a4e92b7f29b7fc3, type: 2}
|
- {fileID: 11400000, guid: f18c6f2f696cf48b2a4e92b7f29b7fc3, type: 2}
|
||||||
m_CreationSettings:
|
m_CreationSettings:
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
2363
Assets/WordConnectGameToolkit/Font/turkish_font.asset
Normal file
2363
Assets/WordConnectGameToolkit/Font/turkish_font.asset
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cdb8507d60e4b4e5fadb9b1825d39fb0
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -88,6 +88,7 @@ GameObject:
|
|||||||
- component: {fileID: 4245167539472542765}
|
- component: {fileID: 4245167539472542765}
|
||||||
- component: {fileID: 4013824183019657187}
|
- component: {fileID: 4013824183019657187}
|
||||||
- component: {fileID: 8023491363183538939}
|
- component: {fileID: 8023491363183538939}
|
||||||
|
- component: {fileID: 1068866132162880213}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Coins
|
m_Name: Coins
|
||||||
m_TagString: Coins
|
m_TagString: Coins
|
||||||
@ -202,6 +203,7 @@ MonoBehaviour:
|
|||||||
onClick:
|
onClick:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
|
noSound: 0
|
||||||
--- !u!114 &8023491363183538939
|
--- !u!114 &8023491363183538939
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -219,6 +221,21 @@ MonoBehaviour:
|
|||||||
associatedResource: {fileID: 11400000, guid: 05af233fe9cfa409abb37d57d2cceaea, type: 2}
|
associatedResource: {fileID: 11400000, guid: 05af233fe9cfa409abb37d57d2cceaea, type: 2}
|
||||||
fxPrefab: {fileID: 7046139580850344571, guid: 3372b6fd62f2b4e058c6757fe9d4afd3, type: 3}
|
fxPrefab: {fileID: 7046139580850344571, guid: 3372b6fd62f2b4e058c6757fe9d4afd3, type: 3}
|
||||||
coinsTextPrefab: {fileID: 6331716406342226620, guid: 4dedea56b3321416b95d34dc8b7efba5, type: 3}
|
coinsTextPrefab: {fileID: 6331716406342226620, guid: 4dedea56b3321416b95d34dc8b7efba5, type: 3}
|
||||||
|
OnAnimationComplete:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
--- !u!114 &1068866132162880213
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1287760599166922580}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c9c6b14262f434e07ad593f7b28fbfba, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
--- !u!1 &4301976480888807572
|
--- !u!1 &4301976480888807572
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@ -222,6 +222,7 @@ GameObject:
|
|||||||
- component: {fileID: 4094651174836377014}
|
- component: {fileID: 4094651174836377014}
|
||||||
- component: {fileID: 5140382344608309896}
|
- component: {fileID: 5140382344608309896}
|
||||||
- component: {fileID: 3974817099587506368}
|
- component: {fileID: 3974817099587506368}
|
||||||
|
- component: {fileID: 7945160288457162381}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Gems
|
m_Name: Gems
|
||||||
m_TagString: Gems
|
m_TagString: Gems
|
||||||
@ -336,6 +337,7 @@ MonoBehaviour:
|
|||||||
onClick:
|
onClick:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
|
noSound: 0
|
||||||
--- !u!114 &3974817099587506368
|
--- !u!114 &3974817099587506368
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -356,6 +358,18 @@ MonoBehaviour:
|
|||||||
OnAnimationComplete:
|
OnAnimationComplete:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
|
--- !u!114 &7945160288457162381
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8282061143723735201}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c9c6b14262f434e07ad593f7b28fbfba, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
--- !u!1 &8288800362416271104
|
--- !u!1 &8288800362416271104
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@ -0,0 +1,14 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 229059528153459db318609c350eea5f, type: 3}
|
||||||
|
m_Name: IronsourceBannerHandler
|
||||||
|
m_EditorClassIdentifier:
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 796df1b72912f46b09a0545be43c896e
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -15,3 +15,6 @@ MonoBehaviour:
|
|||||||
bannedWordsByLanguage:
|
bannedWordsByLanguage:
|
||||||
- languageCode: en
|
- languageCode: en
|
||||||
bannedWords: []
|
bannedWords: []
|
||||||
|
- languageCode: tr
|
||||||
|
bannedWords:
|
||||||
|
- "\xFCre"
|
||||||
|
|||||||
@ -36,5 +36,10 @@ MonoBehaviour:
|
|||||||
- language: fr
|
- language: fr
|
||||||
title:
|
title:
|
||||||
text:
|
text:
|
||||||
|
- language: tr
|
||||||
|
title: "\u015Eelaleler"
|
||||||
|
text: "D\xFCnyan\u0131n en y\xFCksek \u015Felalesi Venezuela'daki Angel \u015Eelalesi
|
||||||
|
Dir. Su 979 metre y\xFCkseklikten d\xFC\u015Fer ve ak\u0131nt\u0131n\u0131n
|
||||||
|
bir k\u0131sm\u0131 yere ula\u015Fmadan buharla\u015F\u0131r!"
|
||||||
colorsTile: {fileID: 11400000, guid: 63f1377c90d84ec478676a869dc2a2c1, type: 2}
|
colorsTile: {fileID: 11400000, guid: 63f1377c90d84ec478676a869dc2a2c1, type: 2}
|
||||||
targetExtraWords: 8
|
targetExtraWords: 8
|
||||||
|
|||||||
@ -77,9 +77,10 @@ MonoBehaviour:
|
|||||||
rows: 7
|
rows: 7
|
||||||
placements: []
|
placements: []
|
||||||
specialItems: []
|
specialItems: []
|
||||||
minBounds: {x: 0, y: 0}
|
minBounds: {x: 5, y: 3}
|
||||||
maxBounds: {x: 9, y: 6}
|
maxBounds: {x: 5, y: 3}
|
||||||
serializedGrid:
|
serializedGrid: ' | | | | |
|
||||||
|
| '
|
||||||
- language: fr
|
- language: fr
|
||||||
letters:
|
letters:
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
|
|||||||
@ -84,9 +84,10 @@ MonoBehaviour:
|
|||||||
rows: 7
|
rows: 7
|
||||||
placements: []
|
placements: []
|
||||||
specialItems: []
|
specialItems: []
|
||||||
minBounds: {x: 0, y: 0}
|
minBounds: {x: 5, y: 3}
|
||||||
maxBounds: {x: 9, y: 6}
|
maxBounds: {x: 5, y: 3}
|
||||||
serializedGrid:
|
serializedGrid: ' | | | | |
|
||||||
|
| '
|
||||||
- language: fr
|
- language: fr
|
||||||
letters:
|
letters:
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
|
|||||||
@ -98,9 +98,10 @@ MonoBehaviour:
|
|||||||
rows: 7
|
rows: 7
|
||||||
placements: []
|
placements: []
|
||||||
specialItems: []
|
specialItems: []
|
||||||
minBounds: {x: 0, y: 0}
|
minBounds: {x: 5, y: 3}
|
||||||
maxBounds: {x: 9, y: 6}
|
maxBounds: {x: 5, y: 3}
|
||||||
serializedGrid:
|
serializedGrid: ' | | | | |
|
||||||
|
| '
|
||||||
- language: fr
|
- language: fr
|
||||||
letters:
|
letters:
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
|
|||||||
@ -120,6 +120,18 @@ MonoBehaviour:
|
|||||||
minBounds: {x: 0, y: 0}
|
minBounds: {x: 0, y: 0}
|
||||||
maxBounds: {x: 9, y: 6}
|
maxBounds: {x: 9, y: 6}
|
||||||
serializedGrid:
|
serializedGrid:
|
||||||
|
- language: tr
|
||||||
|
letters:
|
||||||
|
wordsAmount: 5
|
||||||
|
words: []
|
||||||
|
crosswordData:
|
||||||
|
columns: 0
|
||||||
|
rows: 0
|
||||||
|
placements: []
|
||||||
|
specialItems: []
|
||||||
|
minBounds: {x: 0, y: 0}
|
||||||
|
maxBounds: {x: 0, y: 0}
|
||||||
|
serializedGrid:
|
||||||
colorsTile: {fileID: 11400000, guid: 530ee400bda75ad44bcc4067e5f57ab8, type: 2}
|
colorsTile: {fileID: 11400000, guid: 530ee400bda75ad44bcc4067e5f57ab8, type: 2}
|
||||||
words: 5
|
words: 5
|
||||||
letters: 7
|
letters: 7
|
||||||
|
|||||||
@ -70,9 +70,10 @@ MonoBehaviour:
|
|||||||
rows: 7
|
rows: 7
|
||||||
placements: []
|
placements: []
|
||||||
specialItems: []
|
specialItems: []
|
||||||
minBounds: {x: 0, y: 0}
|
minBounds: {x: 5, y: 3}
|
||||||
maxBounds: {x: 9, y: 6}
|
maxBounds: {x: 5, y: 3}
|
||||||
serializedGrid:
|
serializedGrid: ' | | | | |
|
||||||
|
| '
|
||||||
- language: fr
|
- language: fr
|
||||||
letters:
|
letters:
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
|
|||||||
@ -94,37 +94,16 @@ MonoBehaviour:
|
|||||||
- language: es
|
- language: es
|
||||||
letters: citar
|
letters: citar
|
||||||
wordsAmount: 4
|
wordsAmount: 4
|
||||||
words:
|
words: []
|
||||||
- citar
|
|
||||||
- ira
|
|
||||||
- cat
|
|
||||||
crosswordData:
|
crosswordData:
|
||||||
columns: 10
|
columns: 10
|
||||||
rows: 7
|
rows: 7
|
||||||
placements:
|
placements: []
|
||||||
- word: citar
|
|
||||||
wordNumber: 1
|
|
||||||
startPosition: {x: 3, y: 3}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: ira
|
|
||||||
wordNumber: 2
|
|
||||||
startPosition: {x: 4, y: 3}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: cat
|
|
||||||
wordNumber: 3
|
|
||||||
startPosition: {x: 3, y: 5}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
specialItems: []
|
specialItems: []
|
||||||
minBounds: {x: 3, y: 3}
|
minBounds: {x: 5, y: 3}
|
||||||
maxBounds: {x: 7, y: 5}
|
maxBounds: {x: 5, y: 3}
|
||||||
serializedGrid: ' | | | citar | r |
|
serializedGrid: ' | | | | |
|
||||||
cat | '
|
| '
|
||||||
- language: fr
|
- language: fr
|
||||||
letters:
|
letters:
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
@ -137,9 +116,36 @@ MonoBehaviour:
|
|||||||
minBounds: {x: 0, y: 0}
|
minBounds: {x: 0, y: 0}
|
||||||
maxBounds: {x: 9, y: 6}
|
maxBounds: {x: 9, y: 6}
|
||||||
serializedGrid:
|
serializedGrid:
|
||||||
|
- language: tr
|
||||||
|
letters: ask
|
||||||
|
wordsAmount: 5
|
||||||
|
words:
|
||||||
|
- ask
|
||||||
|
- sak
|
||||||
|
crosswordData:
|
||||||
|
columns: 10
|
||||||
|
rows: 7
|
||||||
|
placements:
|
||||||
|
- word: ask
|
||||||
|
wordNumber: 1
|
||||||
|
startPosition: {x: 3, y: 1}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: sAK
|
||||||
|
wordNumber: 2
|
||||||
|
startPosition: {x: 4, y: 1}
|
||||||
|
isHorizontal: 0
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
specialItems: []
|
||||||
|
minBounds: {x: 3, y: 1}
|
||||||
|
maxBounds: {x: 5, y: 3}
|
||||||
|
serializedGrid: ' | ask | A | K | |
|
||||||
|
| '
|
||||||
colorsTile: {fileID: 11400000, guid: 63f1377c90d84ec478676a869dc2a2c1, type: 2}
|
colorsTile: {fileID: 11400000, guid: 63f1377c90d84ec478676a869dc2a2c1, type: 2}
|
||||||
words: 5
|
words: 5
|
||||||
letters: 5
|
letters: 3
|
||||||
min: 3
|
min: 3
|
||||||
max: 6
|
max: 6
|
||||||
difficulty: 0
|
difficulty: 0
|
||||||
|
|||||||
@ -100,51 +100,16 @@ MonoBehaviour:
|
|||||||
- language: es
|
- language: es
|
||||||
letters: cabra
|
letters: cabra
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
words:
|
words: []
|
||||||
- cabra
|
|
||||||
- cara
|
|
||||||
- bar
|
|
||||||
- barca
|
|
||||||
- arca
|
|
||||||
crosswordData:
|
crosswordData:
|
||||||
columns: 10
|
columns: 10
|
||||||
rows: 7
|
rows: 7
|
||||||
placements:
|
placements: []
|
||||||
- word: cabra
|
|
||||||
wordNumber: 1
|
|
||||||
startPosition: {x: 3, y: 0}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: cara
|
|
||||||
wordNumber: 2
|
|
||||||
startPosition: {x: 3, y: 0}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: bar
|
|
||||||
wordNumber: 3
|
|
||||||
startPosition: {x: 1, y: 2}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: barca
|
|
||||||
wordNumber: 4
|
|
||||||
startPosition: {x: 1, y: 2}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: arca
|
|
||||||
wordNumber: 5
|
|
||||||
startPosition: {x: 3, y: 3}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
specialItems: []
|
specialItems: []
|
||||||
minBounds: {x: 1, y: 0}
|
minBounds: {x: 5, y: 3}
|
||||||
maxBounds: {x: 7, y: 6}
|
maxBounds: {x: 5, y: 3}
|
||||||
serializedGrid: ' cabra | a | bar | a arca | r | c
|
serializedGrid: ' | | | | |
|
||||||
| a '
|
| '
|
||||||
- language: fr
|
- language: fr
|
||||||
letters:
|
letters:
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
@ -157,9 +122,43 @@ MonoBehaviour:
|
|||||||
minBounds: {x: 0, y: 0}
|
minBounds: {x: 0, y: 0}
|
||||||
maxBounds: {x: 0, y: 0}
|
maxBounds: {x: 0, y: 0}
|
||||||
serializedGrid:
|
serializedGrid:
|
||||||
|
- language: tr
|
||||||
|
letters: suz
|
||||||
|
wordsAmount: 5
|
||||||
|
words:
|
||||||
|
- suz
|
||||||
|
- us
|
||||||
|
- uz
|
||||||
|
crosswordData:
|
||||||
|
columns: 10
|
||||||
|
rows: 7
|
||||||
|
placements:
|
||||||
|
- word: suz
|
||||||
|
wordNumber: 1
|
||||||
|
startPosition: {x: 3, y: 2}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: uS
|
||||||
|
wordNumber: 2
|
||||||
|
startPosition: {x: 4, y: 2}
|
||||||
|
isHorizontal: 0
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: Uz
|
||||||
|
wordNumber: 3
|
||||||
|
startPosition: {x: 5, y: 1}
|
||||||
|
isHorizontal: 0
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
specialItems: []
|
||||||
|
minBounds: {x: 3, y: 1}
|
||||||
|
maxBounds: {x: 5, y: 3}
|
||||||
|
serializedGrid: ' | U | suz | S | |
|
||||||
|
| '
|
||||||
colorsTile: {fileID: 11400000, guid: 63f1377c90d84ec478676a869dc2a2c1, type: 2}
|
colorsTile: {fileID: 11400000, guid: 63f1377c90d84ec478676a869dc2a2c1, type: 2}
|
||||||
words: 5
|
words: 5
|
||||||
letters: 5
|
letters: 3
|
||||||
min: 3
|
min: 3
|
||||||
max: 6
|
max: 6
|
||||||
difficulty: 0
|
difficulty: 0
|
||||||
|
|||||||
@ -101,50 +101,15 @@ MonoBehaviour:
|
|||||||
- language: es
|
- language: es
|
||||||
letters: saldo
|
letters: saldo
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
words:
|
words: []
|
||||||
- sol
|
|
||||||
- sal
|
|
||||||
- ola
|
|
||||||
- oda
|
|
||||||
- osa
|
|
||||||
crosswordData:
|
crosswordData:
|
||||||
columns: 10
|
columns: 10
|
||||||
rows: 7
|
rows: 7
|
||||||
placements:
|
placements: []
|
||||||
- word: sol
|
|
||||||
wordNumber: 1
|
|
||||||
startPosition: {x: 5, y: 1}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: sal
|
|
||||||
wordNumber: 2
|
|
||||||
startPosition: {x: 5, y: 1}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: ola
|
|
||||||
wordNumber: 3
|
|
||||||
startPosition: {x: 4, y: 3}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: oda
|
|
||||||
wordNumber: 4
|
|
||||||
startPosition: {x: 4, y: 3}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: osa
|
|
||||||
wordNumber: 5
|
|
||||||
startPosition: {x: 2, y: 5}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
specialItems: []
|
specialItems: []
|
||||||
minBounds: {x: 2, y: 1}
|
minBounds: {x: 5, y: 3}
|
||||||
maxBounds: {x: 7, y: 5}
|
maxBounds: {x: 5, y: 3}
|
||||||
serializedGrid: ' | sol | a | ola | d | osa
|
serializedGrid: ' | | | | |
|
||||||
| '
|
| '
|
||||||
- language: fr
|
- language: fr
|
||||||
letters:
|
letters:
|
||||||
@ -158,6 +123,40 @@ MonoBehaviour:
|
|||||||
minBounds: {x: 0, y: 0}
|
minBounds: {x: 0, y: 0}
|
||||||
maxBounds: {x: 0, y: 0}
|
maxBounds: {x: 0, y: 0}
|
||||||
serializedGrid:
|
serializedGrid:
|
||||||
|
- language: tr
|
||||||
|
letters: "k\xFCre"
|
||||||
|
wordsAmount: 5
|
||||||
|
words:
|
||||||
|
- "k\xFCre"
|
||||||
|
- "k\xFCr"
|
||||||
|
- ek
|
||||||
|
crosswordData:
|
||||||
|
columns: 10
|
||||||
|
rows: 7
|
||||||
|
placements:
|
||||||
|
- word: ek
|
||||||
|
wordNumber: 3
|
||||||
|
startPosition: {x: 4, y: 2}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: "k\xFCre"
|
||||||
|
wordNumber: 2
|
||||||
|
startPosition: {x: 3, y: 4}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: "k\xFCr"
|
||||||
|
wordNumber: 1
|
||||||
|
startPosition: {x: 5, y: 2}
|
||||||
|
isHorizontal: 0
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
specialItems: []
|
||||||
|
minBounds: {x: 3, y: 2}
|
||||||
|
maxBounds: {x: 6, y: 4}
|
||||||
|
serializedGrid: " | | ek | \xFC | k\xFCre
|
||||||
|
| | "
|
||||||
colorsTile: {fileID: 11400000, guid: 63f1377c90d84ec478676a869dc2a2c1, type: 2}
|
colorsTile: {fileID: 11400000, guid: 63f1377c90d84ec478676a869dc2a2c1, type: 2}
|
||||||
words: 5
|
words: 5
|
||||||
letters: 4
|
letters: 4
|
||||||
|
|||||||
@ -114,51 +114,16 @@ MonoBehaviour:
|
|||||||
- language: es
|
- language: es
|
||||||
letters: radio
|
letters: radio
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
words:
|
words: []
|
||||||
- ira
|
|
||||||
- ida
|
|
||||||
- aro
|
|
||||||
- oda
|
|
||||||
- dar
|
|
||||||
crosswordData:
|
crosswordData:
|
||||||
columns: 10
|
columns: 10
|
||||||
rows: 7
|
rows: 7
|
||||||
placements:
|
placements: []
|
||||||
- word: ira
|
|
||||||
wordNumber: 1
|
|
||||||
startPosition: {x: 4, y: 1}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: ida
|
|
||||||
wordNumber: 2
|
|
||||||
startPosition: {x: 4, y: 1}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: aro
|
|
||||||
wordNumber: 3
|
|
||||||
startPosition: {x: 4, y: 3}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: oda
|
|
||||||
wordNumber: 4
|
|
||||||
startPosition: {x: 6, y: 3}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: dar
|
|
||||||
wordNumber: 5
|
|
||||||
startPosition: {x: 6, y: 4}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
specialItems: []
|
specialItems: []
|
||||||
minBounds: {x: 4, y: 1}
|
minBounds: {x: 5, y: 3}
|
||||||
maxBounds: {x: 8, y: 5}
|
maxBounds: {x: 5, y: 3}
|
||||||
serializedGrid: ' | ira | d | aro | dar |
|
serializedGrid: ' | | | | |
|
||||||
a | '
|
| '
|
||||||
- language: fr
|
- language: fr
|
||||||
letters:
|
letters:
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
@ -171,9 +136,43 @@ MonoBehaviour:
|
|||||||
minBounds: {x: 0, y: 0}
|
minBounds: {x: 0, y: 0}
|
||||||
maxBounds: {x: 0, y: 0}
|
maxBounds: {x: 0, y: 0}
|
||||||
serializedGrid:
|
serializedGrid:
|
||||||
|
- language: tr
|
||||||
|
letters: geri
|
||||||
|
wordsAmount: 5
|
||||||
|
words:
|
||||||
|
- geri
|
||||||
|
- gir
|
||||||
|
- eri
|
||||||
|
crosswordData:
|
||||||
|
columns: 10
|
||||||
|
rows: 7
|
||||||
|
placements:
|
||||||
|
- word: geri
|
||||||
|
wordNumber: 1
|
||||||
|
startPosition: {x: 3, y: 3}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: gir
|
||||||
|
wordNumber: 3
|
||||||
|
startPosition: {x: 3, y: 5}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: eri
|
||||||
|
wordNumber: 2
|
||||||
|
startPosition: {x: 4, y: 3}
|
||||||
|
isHorizontal: 0
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
specialItems: []
|
||||||
|
minBounds: {x: 3, y: 3}
|
||||||
|
maxBounds: {x: 6, y: 5}
|
||||||
|
serializedGrid: ' | | | geri | r |
|
||||||
|
gir | '
|
||||||
colorsTile: {fileID: 11400000, guid: 63f1377c90d84ec478676a869dc2a2c1, type: 2}
|
colorsTile: {fileID: 11400000, guid: 63f1377c90d84ec478676a869dc2a2c1, type: 2}
|
||||||
words: 5
|
words: 5
|
||||||
letters: 5
|
letters: 4
|
||||||
min: 3
|
min: 3
|
||||||
max: 6
|
max: 6
|
||||||
difficulty: 0
|
difficulty: 0
|
||||||
|
|||||||
@ -109,44 +109,16 @@ MonoBehaviour:
|
|||||||
- language: es
|
- language: es
|
||||||
letters: motor
|
letters: motor
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
words:
|
words: []
|
||||||
- specialitem
|
|
||||||
- motor
|
|
||||||
- moro
|
|
||||||
- toro
|
|
||||||
crosswordData:
|
crosswordData:
|
||||||
columns: 10
|
columns: 10
|
||||||
rows: 7
|
rows: 7
|
||||||
placements:
|
placements: []
|
||||||
- word: Motor
|
|
||||||
wordNumber: 1
|
|
||||||
startPosition: {x: 3, y: 3}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: Moro
|
|
||||||
wordNumber: 2
|
|
||||||
startPosition: {x: 3, y: 3}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: toro
|
|
||||||
wordNumber: 3
|
|
||||||
startPosition: {x: 0, y: 4}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: SpecialItem
|
|
||||||
wordNumber: -1
|
|
||||||
startPosition: {x: 3, y: 3}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 1
|
|
||||||
specialItemPath: Assets/WordConnectGameToolkit/Sprites/game_ui/in-game-item-1.png
|
|
||||||
specialItems: []
|
specialItems: []
|
||||||
minBounds: {x: 0, y: 3}
|
minBounds: {x: 5, y: 3}
|
||||||
maxBounds: {x: 7, y: 6}
|
maxBounds: {x: 5, y: 3}
|
||||||
serializedGrid: ' | | | Motor |toro |
|
serializedGrid: ' | | | | |
|
||||||
r | o '
|
| '
|
||||||
- language: fr
|
- language: fr
|
||||||
letters:
|
letters:
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
@ -159,9 +131,50 @@ MonoBehaviour:
|
|||||||
minBounds: {x: 0, y: 0}
|
minBounds: {x: 0, y: 0}
|
||||||
maxBounds: {x: 0, y: 0}
|
maxBounds: {x: 0, y: 0}
|
||||||
serializedGrid:
|
serializedGrid:
|
||||||
|
- language: tr
|
||||||
|
letters: "ko\u015Fa"
|
||||||
|
wordsAmount: 5
|
||||||
|
words:
|
||||||
|
- ok
|
||||||
|
- "ko\u015Fa"
|
||||||
|
- ak
|
||||||
|
- "ka\u015F"
|
||||||
|
crosswordData:
|
||||||
|
columns: 10
|
||||||
|
rows: 7
|
||||||
|
placements:
|
||||||
|
- word: Ok
|
||||||
|
wordNumber: 1
|
||||||
|
startPosition: {x: 4, y: 1}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: "ko\u015Fa"
|
||||||
|
wordNumber: 2
|
||||||
|
startPosition: {x: 3, y: 3}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: ak
|
||||||
|
wordNumber: 3
|
||||||
|
startPosition: {x: 3, y: 2}
|
||||||
|
isHorizontal: 0
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: "ka\u015F"
|
||||||
|
wordNumber: 4
|
||||||
|
startPosition: {x: 5, y: 1}
|
||||||
|
isHorizontal: 0
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
specialItems: []
|
||||||
|
minBounds: {x: 3, y: 1}
|
||||||
|
maxBounds: {x: 6, y: 3}
|
||||||
|
serializedGrid: " | Ok | a a | ko\u015Fa |
|
||||||
|
| | "
|
||||||
colorsTile: {fileID: 11400000, guid: 63f1377c90d84ec478676a869dc2a2c1, type: 2}
|
colorsTile: {fileID: 11400000, guid: 63f1377c90d84ec478676a869dc2a2c1, type: 2}
|
||||||
words: 5
|
words: 5
|
||||||
letters: 5
|
letters: 4
|
||||||
min: 3
|
min: 3
|
||||||
max: 6
|
max: 6
|
||||||
difficulty: 0
|
difficulty: 0
|
||||||
|
|||||||
@ -115,51 +115,15 @@ MonoBehaviour:
|
|||||||
- language: es
|
- language: es
|
||||||
letters: salir
|
letters: salir
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
words:
|
words: []
|
||||||
- sal
|
|
||||||
- liar
|
|
||||||
- ira
|
|
||||||
- risa
|
|
||||||
- asir
|
|
||||||
crosswordData:
|
crosswordData:
|
||||||
columns: 10
|
columns: 10
|
||||||
rows: 7
|
rows: 7
|
||||||
placements:
|
placements: []
|
||||||
- word: sal
|
|
||||||
wordNumber: 1
|
|
||||||
startPosition: {x: 1, y: 0}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: liar
|
|
||||||
wordNumber: 2
|
|
||||||
startPosition: {x: 3, y: 0}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: ira
|
|
||||||
wordNumber: 3
|
|
||||||
startPosition: {x: 3, y: 1}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: risa
|
|
||||||
wordNumber: 4
|
|
||||||
startPosition: {x: 3, y: 3}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: asir
|
|
||||||
wordNumber: 5
|
|
||||||
startPosition: {x: 6, y: 3}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
specialItems: []
|
specialItems: []
|
||||||
minBounds: {x: 1, y: 0}
|
minBounds: {x: 0, y: 0}
|
||||||
maxBounds: {x: 6, y: 6}
|
maxBounds: {x: 9, y: 6}
|
||||||
serializedGrid: ' sal | ira | a | risa | s |
|
serializedGrid:
|
||||||
i | r '
|
|
||||||
- language: fr
|
- language: fr
|
||||||
letters:
|
letters:
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
@ -172,9 +136,50 @@ MonoBehaviour:
|
|||||||
minBounds: {x: 0, y: 0}
|
minBounds: {x: 0, y: 0}
|
||||||
maxBounds: {x: 0, y: 0}
|
maxBounds: {x: 0, y: 0}
|
||||||
serializedGrid:
|
serializedGrid:
|
||||||
|
- language: tr
|
||||||
|
letters: "\xE7al\u0131"
|
||||||
|
wordsAmount: 5
|
||||||
|
words:
|
||||||
|
- al
|
||||||
|
- "a\xE7"
|
||||||
|
- "a\xE7\u0131"
|
||||||
|
- "\xE7al\u0131"
|
||||||
|
crosswordData:
|
||||||
|
columns: 10
|
||||||
|
rows: 7
|
||||||
|
placements:
|
||||||
|
- word: al
|
||||||
|
wordNumber: 2
|
||||||
|
startPosition: {x: 5, y: 2}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: "\xE7al\u0131"
|
||||||
|
wordNumber: 3
|
||||||
|
startPosition: {x: 2, y: 4}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: "a\xE7"
|
||||||
|
wordNumber: 4
|
||||||
|
startPosition: {x: 2, y: 3}
|
||||||
|
isHorizontal: 0
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: "a\xE7\u0131"
|
||||||
|
wordNumber: 1
|
||||||
|
startPosition: {x: 5, y: 2}
|
||||||
|
isHorizontal: 0
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
specialItems: []
|
||||||
|
minBounds: {x: 2, y: 2}
|
||||||
|
maxBounds: {x: 6, y: 4}
|
||||||
|
serializedGrid: " | | al | a \xE7 | \xE7al\u0131
|
||||||
|
| | "
|
||||||
colorsTile: {fileID: 11400000, guid: e8a60425bb67f42618a943883b553d29, type: 2}
|
colorsTile: {fileID: 11400000, guid: e8a60425bb67f42618a943883b553d29, type: 2}
|
||||||
words: 5
|
words: 5
|
||||||
letters: 5
|
letters: 4
|
||||||
min: 3
|
min: 3
|
||||||
max: 4
|
max: 4
|
||||||
difficulty: 0
|
difficulty: 0
|
||||||
|
|||||||
@ -121,51 +121,16 @@ MonoBehaviour:
|
|||||||
- language: es
|
- language: es
|
||||||
letters: torpe
|
letters: torpe
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
words:
|
words: []
|
||||||
- porte
|
|
||||||
- tope
|
|
||||||
- torpe
|
|
||||||
- reto
|
|
||||||
- peor
|
|
||||||
crosswordData:
|
crosswordData:
|
||||||
columns: 10
|
columns: 10
|
||||||
rows: 7
|
rows: 7
|
||||||
placements:
|
placements: []
|
||||||
- word: porte
|
|
||||||
wordNumber: 1
|
|
||||||
startPosition: {x: 1, y: 0}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: tope
|
|
||||||
wordNumber: 2
|
|
||||||
startPosition: {x: 4, y: 0}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: torpe
|
|
||||||
wordNumber: 3
|
|
||||||
startPosition: {x: 6, y: 2}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: reto
|
|
||||||
wordNumber: 4
|
|
||||||
startPosition: {x: 3, y: 3}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: peor
|
|
||||||
wordNumber: 5
|
|
||||||
startPosition: {x: 6, y: 5}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
specialItems: []
|
specialItems: []
|
||||||
minBounds: {x: 1, y: 0}
|
minBounds: {x: 5, y: 3}
|
||||||
maxBounds: {x: 9, y: 6}
|
maxBounds: {x: 5, y: 3}
|
||||||
serializedGrid: ' porte | o | p t | reto | r |
|
serializedGrid: ' | | | | |
|
||||||
peor| e '
|
| '
|
||||||
- language: fr
|
- language: fr
|
||||||
letters:
|
letters:
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
@ -178,6 +143,18 @@ MonoBehaviour:
|
|||||||
minBounds: {x: 0, y: 0}
|
minBounds: {x: 0, y: 0}
|
||||||
maxBounds: {x: 0, y: 0}
|
maxBounds: {x: 0, y: 0}
|
||||||
serializedGrid:
|
serializedGrid:
|
||||||
|
- language: tr
|
||||||
|
letters:
|
||||||
|
wordsAmount: 5
|
||||||
|
words: []
|
||||||
|
crosswordData:
|
||||||
|
columns: 0
|
||||||
|
rows: 0
|
||||||
|
placements: []
|
||||||
|
specialItems: []
|
||||||
|
minBounds: {x: 0, y: 0}
|
||||||
|
maxBounds: {x: 0, y: 0}
|
||||||
|
serializedGrid:
|
||||||
colorsTile: {fileID: 11400000, guid: e8a60425bb67f42618a943883b553d29, type: 2}
|
colorsTile: {fileID: 11400000, guid: e8a60425bb67f42618a943883b553d29, type: 2}
|
||||||
words: 5
|
words: 5
|
||||||
letters: 5
|
letters: 5
|
||||||
|
|||||||
@ -107,50 +107,15 @@ MonoBehaviour:
|
|||||||
- language: es
|
- language: es
|
||||||
letters: coste
|
letters: coste
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
words:
|
words: []
|
||||||
- set
|
|
||||||
- tos
|
|
||||||
- seco
|
|
||||||
- eco
|
|
||||||
- seto
|
|
||||||
crosswordData:
|
crosswordData:
|
||||||
columns: 10
|
columns: 10
|
||||||
rows: 7
|
rows: 7
|
||||||
placements:
|
placements: []
|
||||||
- word: set
|
|
||||||
wordNumber: 1
|
|
||||||
startPosition: {x: 1, y: 1}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: tos
|
|
||||||
wordNumber: 2
|
|
||||||
startPosition: {x: 3, y: 1}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: seco
|
|
||||||
wordNumber: 3
|
|
||||||
startPosition: {x: 3, y: 3}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: eco
|
|
||||||
wordNumber: 4
|
|
||||||
startPosition: {x: 4, y: 3}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: seto
|
|
||||||
wordNumber: 5
|
|
||||||
startPosition: {x: 1, y: 5}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
specialItems: []
|
specialItems: []
|
||||||
minBounds: {x: 1, y: 1}
|
minBounds: {x: 5, y: 3}
|
||||||
maxBounds: {x: 6, y: 5}
|
maxBounds: {x: 5, y: 3}
|
||||||
serializedGrid: ' | set | o | seco | c | seto
|
serializedGrid: ' | | | | |
|
||||||
| '
|
| '
|
||||||
- language: fr
|
- language: fr
|
||||||
letters:
|
letters:
|
||||||
@ -164,9 +129,50 @@ MonoBehaviour:
|
|||||||
minBounds: {x: 0, y: 0}
|
minBounds: {x: 0, y: 0}
|
||||||
maxBounds: {x: 0, y: 0}
|
maxBounds: {x: 0, y: 0}
|
||||||
serializedGrid:
|
serializedGrid:
|
||||||
|
- language: tr
|
||||||
|
letters: arka
|
||||||
|
wordsAmount: 5
|
||||||
|
words:
|
||||||
|
- arka
|
||||||
|
- ara
|
||||||
|
- ark
|
||||||
|
- kar
|
||||||
|
crosswordData:
|
||||||
|
columns: 10
|
||||||
|
rows: 7
|
||||||
|
placements:
|
||||||
|
- word: arka
|
||||||
|
wordNumber: 4
|
||||||
|
startPosition: {x: 4, y: 1}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: kar
|
||||||
|
wordNumber: 3
|
||||||
|
startPosition: {x: 2, y: 2}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: ark
|
||||||
|
wordNumber: 1
|
||||||
|
startPosition: {x: 4, y: 3}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: ara
|
||||||
|
wordNumber: 2
|
||||||
|
startPosition: {x: 4, y: 1}
|
||||||
|
isHorizontal: 0
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
specialItems: []
|
||||||
|
minBounds: {x: 2, y: 1}
|
||||||
|
maxBounds: {x: 7, y: 3}
|
||||||
|
serializedGrid: ' | arka | kar | ark | |
|
||||||
|
| '
|
||||||
colorsTile: {fileID: 11400000, guid: e8a60425bb67f42618a943883b553d29, type: 2}
|
colorsTile: {fileID: 11400000, guid: e8a60425bb67f42618a943883b553d29, type: 2}
|
||||||
words: 5
|
words: 5
|
||||||
letters: 5
|
letters: 4
|
||||||
min: 3
|
min: 3
|
||||||
max: 6
|
max: 6
|
||||||
difficulty: 0
|
difficulty: 0
|
||||||
|
|||||||
@ -107,50 +107,15 @@ MonoBehaviour:
|
|||||||
- language: es
|
- language: es
|
||||||
letters: abuso
|
letters: abuso
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
words:
|
words: []
|
||||||
- bus
|
|
||||||
- boa
|
|
||||||
- uso
|
|
||||||
- osa
|
|
||||||
- abuso
|
|
||||||
crosswordData:
|
crosswordData:
|
||||||
columns: 10
|
columns: 10
|
||||||
rows: 7
|
rows: 7
|
||||||
placements:
|
placements: []
|
||||||
- word: bus
|
|
||||||
wordNumber: 1
|
|
||||||
startPosition: {x: 3, y: 1}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: boa
|
|
||||||
wordNumber: 2
|
|
||||||
startPosition: {x: 3, y: 1}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: uso
|
|
||||||
wordNumber: 3
|
|
||||||
startPosition: {x: 1, y: 2}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: osa
|
|
||||||
wordNumber: 4
|
|
||||||
startPosition: {x: 6, y: 2}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: abuso
|
|
||||||
wordNumber: 5
|
|
||||||
startPosition: {x: 3, y: 3}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
specialItems: []
|
specialItems: []
|
||||||
minBounds: {x: 1, y: 1}
|
minBounds: {x: 5, y: 3}
|
||||||
maxBounds: {x: 7, y: 4}
|
maxBounds: {x: 5, y: 3}
|
||||||
serializedGrid: ' | bus | uso o | abuso | a |
|
serializedGrid: ' | | | | |
|
||||||
| '
|
| '
|
||||||
- language: fr
|
- language: fr
|
||||||
letters:
|
letters:
|
||||||
@ -164,9 +129,51 @@ MonoBehaviour:
|
|||||||
minBounds: {x: 0, y: 0}
|
minBounds: {x: 0, y: 0}
|
||||||
maxBounds: {x: 0, y: 0}
|
maxBounds: {x: 0, y: 0}
|
||||||
serializedGrid:
|
serializedGrid:
|
||||||
|
- language: tr
|
||||||
|
letters: faiz
|
||||||
|
wordsAmount: 5
|
||||||
|
words:
|
||||||
|
- faiz
|
||||||
|
- faz
|
||||||
|
- iz
|
||||||
|
- az
|
||||||
|
- af
|
||||||
|
crosswordData:
|
||||||
|
columns: 10
|
||||||
|
rows: 7
|
||||||
|
placements:
|
||||||
|
- word: af
|
||||||
|
wordNumber: 1
|
||||||
|
startPosition: {x: 4, y: 1}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: az
|
||||||
|
wordNumber: 2
|
||||||
|
startPosition: {x: 5, y: 2}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: faiz
|
||||||
|
wordNumber: 3
|
||||||
|
startPosition: {x: 2, y: 3}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: faz
|
||||||
|
wordNumber: 4
|
||||||
|
startPosition: {x: 5, y: 1}
|
||||||
|
isHorizontal: 0
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
specialItems: []
|
||||||
|
minBounds: {x: 2, y: 1}
|
||||||
|
maxBounds: {x: 6, y: 3}
|
||||||
|
serializedGrid: ' | af | az | faiz | |
|
||||||
|
| '
|
||||||
colorsTile: {fileID: 11400000, guid: e8a60425bb67f42618a943883b553d29, type: 2}
|
colorsTile: {fileID: 11400000, guid: e8a60425bb67f42618a943883b553d29, type: 2}
|
||||||
words: 5
|
words: 5
|
||||||
letters: 5
|
letters: 4
|
||||||
min: 3
|
min: 3
|
||||||
max: 6
|
max: 6
|
||||||
difficulty: 0
|
difficulty: 0
|
||||||
|
|||||||
@ -110,51 +110,16 @@ MonoBehaviour:
|
|||||||
- language: es
|
- language: es
|
||||||
letters: piano
|
letters: piano
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
words:
|
words: []
|
||||||
- pan
|
|
||||||
- piano
|
|
||||||
- pino
|
|
||||||
- poni
|
|
||||||
- apio
|
|
||||||
crosswordData:
|
crosswordData:
|
||||||
columns: 10
|
columns: 10
|
||||||
rows: 7
|
rows: 7
|
||||||
placements:
|
placements: []
|
||||||
- word: pan
|
|
||||||
wordNumber: 1
|
|
||||||
startPosition: {x: 5, y: 2}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: piano
|
|
||||||
wordNumber: 2
|
|
||||||
startPosition: {x: 3, y: 3}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: pino
|
|
||||||
wordNumber: 3
|
|
||||||
startPosition: {x: 3, y: 3}
|
|
||||||
isHorizontal: 0
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: poni
|
|
||||||
wordNumber: 4
|
|
||||||
startPosition: {x: 0, y: 4}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
- word: apio
|
|
||||||
wordNumber: 5
|
|
||||||
startPosition: {x: 0, y: 6}
|
|
||||||
isHorizontal: 1
|
|
||||||
isSpecialItem: 0
|
|
||||||
specialItemPath:
|
|
||||||
specialItems: []
|
specialItems: []
|
||||||
minBounds: {x: 0, y: 2}
|
minBounds: {x: 5, y: 3}
|
||||||
maxBounds: {x: 7, y: 6}
|
maxBounds: {x: 5, y: 3}
|
||||||
serializedGrid: ' | | p | piano |poni n |
|
serializedGrid: ' | | | | |
|
||||||
n |apio '
|
| '
|
||||||
- language: fr
|
- language: fr
|
||||||
letters:
|
letters:
|
||||||
wordsAmount: 5
|
wordsAmount: 5
|
||||||
@ -167,9 +132,70 @@ MonoBehaviour:
|
|||||||
minBounds: {x: 0, y: 0}
|
minBounds: {x: 0, y: 0}
|
||||||
maxBounds: {x: 0, y: 0}
|
maxBounds: {x: 0, y: 0}
|
||||||
serializedGrid:
|
serializedGrid:
|
||||||
|
- language: tr
|
||||||
|
letters: "ayn\u0131"
|
||||||
|
wordsAmount: 5
|
||||||
|
words:
|
||||||
|
- "ayn\u0131"
|
||||||
|
- an
|
||||||
|
- "an\u0131"
|
||||||
|
- "ay\u0131"
|
||||||
|
- yan
|
||||||
|
crosswordData:
|
||||||
|
columns: 10
|
||||||
|
rows: 7
|
||||||
|
placements:
|
||||||
|
- word: an
|
||||||
|
wordNumber: 3
|
||||||
|
startPosition: {x: 5, y: 2}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: yan
|
||||||
|
wordNumber: 2
|
||||||
|
startPosition: {x: 3, y: 3}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: "ay\u0131"
|
||||||
|
wordNumber: 5
|
||||||
|
startPosition: {x: 1, y: 5}
|
||||||
|
isHorizontal: 1
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: "ayn\u0131"
|
||||||
|
wordNumber: 4
|
||||||
|
startPosition: {x: 3, y: 2}
|
||||||
|
isHorizontal: 0
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
- word: "an\u0131"
|
||||||
|
wordNumber: 1
|
||||||
|
startPosition: {x: 5, y: 2}
|
||||||
|
isHorizontal: 0
|
||||||
|
isSpecialItem: 0
|
||||||
|
specialItemPath:
|
||||||
|
specialItems: []
|
||||||
|
minBounds: {x: 1, y: 2}
|
||||||
|
maxBounds: {x: 6, y: 5}
|
||||||
|
serializedGrid: " | | a an | yan | n \u0131
|
||||||
|
| ay\u0131 | "
|
||||||
|
- language: new
|
||||||
|
letters:
|
||||||
|
wordsAmount: 5
|
||||||
|
words: []
|
||||||
|
crosswordData:
|
||||||
|
columns: 10
|
||||||
|
rows: 7
|
||||||
|
placements: []
|
||||||
|
specialItems: []
|
||||||
|
minBounds: {x: 5, y: 3}
|
||||||
|
maxBounds: {x: 5, y: 3}
|
||||||
|
serializedGrid: ' | | | | |
|
||||||
|
| '
|
||||||
colorsTile: {fileID: 11400000, guid: e8a60425bb67f42618a943883b553d29, type: 2}
|
colorsTile: {fileID: 11400000, guid: e8a60425bb67f42618a943883b553d29, type: 2}
|
||||||
words: 5
|
words: 5
|
||||||
letters: 5
|
letters: 4
|
||||||
min: 3
|
min: 3
|
||||||
max: 6
|
max: 6
|
||||||
difficulty: 0
|
difficulty: 0
|
||||||
|
|||||||
@ -7,7 +7,6 @@ DAY : Day
|
|||||||
THANKS : Thanks!
|
THANKS : Thanks!
|
||||||
LOADING : Loading...
|
LOADING : Loading...
|
||||||
LUCKYSPIN : Lucky Spin
|
LUCKYSPIN : Lucky Spin
|
||||||
OK : OK
|
|
||||||
NOADSLABEL1 : Play without ads!
|
NOADSLABEL1 : Play without ads!
|
||||||
NOADSLABEL2 : Reward videos are optional and available for viewing after purchase
|
NOADSLABEL2 : Reward videos are optional and available for viewing after purchase
|
||||||
BUY : BUY
|
BUY : BUY
|
||||||
|
|||||||
@ -7,7 +7,6 @@ DAY : Jour
|
|||||||
THANKS : Merci !
|
THANKS : Merci !
|
||||||
LOADING : Chargement...
|
LOADING : Chargement...
|
||||||
LUCKYSPIN : Roue de la Fortune
|
LUCKYSPIN : Roue de la Fortune
|
||||||
OK : OK
|
|
||||||
NOADSLABEL1 : Jouez sans publicit<69>s !
|
NOADSLABEL1 : Jouez sans publicit<69>s !
|
||||||
NOADSLABEL2 : Les vid<69>os de r<>compense sont optionnelles et disponibles apr<70>s l'achat
|
NOADSLABEL2 : Les vid<69>os de r<>compense sont optionnelles et disponibles apr<70>s l'achat
|
||||||
BUY : ACHETER
|
BUY : ACHETER
|
||||||
|
|||||||
@ -0,0 +1,77 @@
|
|||||||
|
COINSSHOP : Κατάστημα Νομισμάτων
|
||||||
|
FREE : ΔΩΡΕΑΝ
|
||||||
|
BUYTIPS : Αγόρασε Βοήθειες (Tips)
|
||||||
|
GETFREE : Λάβε Δωρεάν
|
||||||
|
DAILYREWARD : Καθημερινές Ανταμοιβές
|
||||||
|
DAY : Ημέρα
|
||||||
|
THANKS : Ευχαριστούμε!
|
||||||
|
LOADING : Φορτώνει...
|
||||||
|
LUCKYSPIN : Τυχερή Περιστροφή
|
||||||
|
NOADSLABEL1 : Παίξε χωρίς διαφημίσεις!
|
||||||
|
NOADSLABEL2 : Τα βίντεο ανταμοιβής είναι προαιρετικά και διαθέσιμα για προβολή μετά την αγορά
|
||||||
|
BUY : ΑΓΟΡΑ
|
||||||
|
OUTOFLIVES : ΕΞΑΝΤΛΗΘΗΚΑΝ ΟΙ ΖΩΕΣ
|
||||||
|
REFILLTHELIVES : Αναπλήρωση των ζωών;
|
||||||
|
OUTOFTIME : ΕΞΑΝΤΛΗΘΗΚΕ Ο ΧΡΟΝΟΣ
|
||||||
|
REFILLTHETIME : Αναπλήρωση του χρόνου;
|
||||||
|
GIFT : Δώρο
|
||||||
|
LEVELCLEARED : ΕΠΙΠΕΔΟ ΟΛΟΚΛΗΡΩΘΗΚΕ!
|
||||||
|
SETTINGS : Ρυθμίσεις
|
||||||
|
SHOP : ΚΑΤΑΣΤΗΜΑ
|
||||||
|
PRIVACY : Απόρρητο
|
||||||
|
QUITTHEGAME : Έξοδος από το παιχνίδι
|
||||||
|
DOYOUWANTTOQUIT : Θέλετε πραγματικά να βγείτε;
|
||||||
|
YES : ΝΑΙ
|
||||||
|
NO : ΟΧΙ
|
||||||
|
COMINGSOON : Νέα επίπεδα έρχονται σύντομα. <br>Μείνετε συντονισμένοι για την επόμενη ενημέρωση.
|
||||||
|
WIN : ΝΙΚΗ
|
||||||
|
NEXTLEVEL : Επόμενο Επίπεδο
|
||||||
|
SCORE : Σκορ
|
||||||
|
POINTS : Πόντοι
|
||||||
|
REVIVEWITHNEWSHAPES : Αναβίωση με νέα σχήματα;
|
||||||
|
WHATCHADS : Παρακολούθηση Διαφημίσεων
|
||||||
|
CONTINUE : Συνέχεια
|
||||||
|
YOULOSE : Χάσατε...
|
||||||
|
RETRY : Ξαναπροσπάθησε
|
||||||
|
ALMOST : Σχεδόν τα καταφέρατε...
|
||||||
|
ARCADEMODE : ΛΕΙΤΟΥΡΓΙΑ ARCADE
|
||||||
|
STAGE : ΣΤΑΔΙΟ {stage}
|
||||||
|
LEVEL : Επίπεδο {level}
|
||||||
|
MOSTPOPULAR : Πιο Δημοφιλές
|
||||||
|
BESTOFFER : ΚΑΛΥΤΕΡΗ ΠΡΟΣΦΟΡΑ
|
||||||
|
NOADS : Κατάργηση Διαφημίσεων
|
||||||
|
FREESPIN : ΔΩΡΕΑΝ Περιστροφή
|
||||||
|
SOUNDS : Ήχοι
|
||||||
|
MUSIC : Μουσική
|
||||||
|
VIBRATION : Δόνηση
|
||||||
|
GAMEOVER : Τέλος Παιχνιδιού
|
||||||
|
YOURSCORE : Το Σκορ σας
|
||||||
|
BESTSCORE : ΚΑΛΥΤΕΡΟ Σκορ
|
||||||
|
NEWRECORD : Νέο Ρεκόρ!
|
||||||
|
EXITGAME : Έξοδος από το Παιχνίδι
|
||||||
|
ADVENTURE : ΠΕΡΙΠΕΤΕΙΑ
|
||||||
|
CLASSIC : ΚΛΑΣΙΚΟ
|
||||||
|
TUTORIAL : Εκμάθηση
|
||||||
|
RESTORE_PURCHASES : Επαναφορά Αγορών
|
||||||
|
EXTRAWORDS : Επιπλέον Λέξεις
|
||||||
|
WORDSNOTINTCLUDEDINTHISLEVEL : Λέξεις που δεν περιλαμβάνονται σε αυτό το επίπεδο
|
||||||
|
CLAIM : Διεκδίκηση
|
||||||
|
COINS : ΝΟΜΙΣΜΑΤΑ
|
||||||
|
GEMS : ΠΕΤΡΑΔΙΑ
|
||||||
|
TAPTOCOLLECT : ΠΑΤΗΣΤΕ ΓΙΑ ΣΥΛΛΟΓΗ
|
||||||
|
DAILYREWARDS : ΚΑΘΗΜΕΡΙΝΕΣ ΑΝΤΑΜΟΙΒΕΣ
|
||||||
|
SPIN : ΠΕΡΙΣΤΡΟΦΗ
|
||||||
|
SELECTLANGUAGE : ΕΠΙΛΟΓΗ ΓΛΩΣΣΑΣ
|
||||||
|
AGAIN : ΞΑΝΑ
|
||||||
|
UNLOCK : Συλλέξτε κάρτες για να ξεκλειδώσετε ενδιαφέροντα στοιχεία (facts)
|
||||||
|
TipBoosterButton : Εάν κολλήσετε, μπορείτε να χρησιμοποιήσετε μια ΥΠΟΔΕΙΞΗ (HINT)
|
||||||
|
HammerBoosterButton : Το ΣΦΥΡΙ αποκαλύπτει οποιοδήποτε γράμμα της επιλογής σας
|
||||||
|
ExtraWordsButton : Βρήκατε μια ΕΠΙΠΛΕΟΝ ΛΕΞΗ!
|
||||||
|
Extra words are displayed here : Οι επιπλέον λέξεις εμφανίζονται εδώ
|
||||||
|
GiftButton : Έχετε ξεκλειδώσει ένα ΔΩΡΟ! <br><br> ΞΟΔΕΨΤΕ ΠΕΤΡΑΔΙΑ για να λάβετε μια πολύτιμη ΑΝΤΑΜΟΙΒΗ
|
||||||
|
ShuffleButton : Το κουμπί ΑΝΑΚΑΤΕΜΑ (SHUFFLE) μπορεί να σας βοηθήσει να βρείτε λέξεις πιο γρήγορα
|
||||||
|
RedGem : Συνδέστε τη λέξη {word} για να λάβετε ένα ΚΟΚΚΙΝΟ ΠΕΤΡΑΔΙ
|
||||||
|
GameTutorial : Σύρετε για να συνδέσετε τη λέξη {word} με μία κίνηση
|
||||||
|
Home : Αρχική
|
||||||
|
HARD : ΔΥΣΚΟΛΟ
|
||||||
|
TIMETUT : Λύστε όλες τις λέξεις έγκαιρα για να ΚΕΡΔΙΣΕΤΕ
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 576d9cb2289d541228a31b12421cdab8
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,76 @@
|
|||||||
|
COINSSHOP : Loja de Moedas
|
||||||
|
FREE : GRÁTIS
|
||||||
|
BUYTIPS : Comprar Dicas
|
||||||
|
GETFREE : Obter Grátis
|
||||||
|
DAILYREWARD : Recompensas Diárias
|
||||||
|
DAY : Dia
|
||||||
|
THANKS : Obrigado!
|
||||||
|
LOADING : Carregando...
|
||||||
|
LUCKYSPIN : Giro da Sorte
|
||||||
|
NOADSLABEL1 : Jogue sem anúncios!
|
||||||
|
NOADSLABEL2 : Vídeos de recompensa são opcionais e disponíveis para visualização após a compra
|
||||||
|
BUY : COMPRAR
|
||||||
|
OUTOFLIVES : SEM VIDAS
|
||||||
|
REFILLTHELIVES : Recarregar as vidas?
|
||||||
|
OUTOFTIME : SEM TEMPO
|
||||||
|
REFILLTHETIME : Recarregar o tempo?
|
||||||
|
GIFT : Presente
|
||||||
|
LEVELCLEARED : NÍVEL CONCLUÍDO!
|
||||||
|
SETTINGS : Configurações
|
||||||
|
SHOP : LOJA
|
||||||
|
PRIVACY : Privacidade
|
||||||
|
QUITTHEGAME : Sair do jogo
|
||||||
|
DOYOUWANTTOQUIT : Você realmente quer sair?
|
||||||
|
YES : Sim
|
||||||
|
NO : NÃO
|
||||||
|
COMINGSOON : Novos níveis em breve. <br>Fique atento à próxima atualização.
|
||||||
|
WIN : VITÓRIA
|
||||||
|
NEXTLEVEL : Próximo Nível
|
||||||
|
SCORE : Pontuação
|
||||||
|
POINTS : Pontos
|
||||||
|
REVIVEWITHNEWSHAPES : Reviver com novas formas?
|
||||||
|
WHATCHADS : Assistir Anúncios
|
||||||
|
CONTINUE : Continuar
|
||||||
|
YOULOSE : Você Perdeu...
|
||||||
|
RETRY : Tentar Novamente
|
||||||
|
ALMOST : Quase lá...
|
||||||
|
ARCADEMODE : MODO ARCADE
|
||||||
|
STAGE : ESTÁGIO {stage}
|
||||||
|
LEVEL : Nível {level}
|
||||||
|
MOSTPOPULAR : Mais Popular
|
||||||
|
BESTOFFER : MELHOR Oferta
|
||||||
|
NOADS : Remover ADS
|
||||||
|
FREESPIN : Giro GRÁTIS
|
||||||
|
SOUNDS : Sons
|
||||||
|
MUSIC : Música
|
||||||
|
VIBRATION : Vibração
|
||||||
|
GAMEOVER : Fim de Jogo
|
||||||
|
YOURSCORE : Sua Pontuação
|
||||||
|
BESTSCORE : MELHOR Pontuação
|
||||||
|
NEWRECORD : Novo Recorde!
|
||||||
|
EXITGAME : Sair do Jogo
|
||||||
|
ADVENTURE : AVENTURA
|
||||||
|
CLASSIC : CLÁSSICO
|
||||||
|
TUTORIAL : Tutorial
|
||||||
|
RESTORE_PURCHASES : Restaurar Compras
|
||||||
|
EXTRAWORDS : Palavras Extras
|
||||||
|
WORDSNOTINTCLUDEDINTHISLEVEL : Palavras não incluídas neste nível
|
||||||
|
CLAIM : Reivindicar
|
||||||
|
COINS : MOEDAS
|
||||||
|
GEMS : GEMAS
|
||||||
|
TAPTOCOLLECT : TOQUE PARA COLETAR
|
||||||
|
DAILYREWARDS : RECOMPENSAS DIÁRIAS
|
||||||
|
SPIN :GIRO
|
||||||
|
SELECTLANGUAGE : SELECIONAR LÍNGUA
|
||||||
|
AGAIN : NOVAMENTE
|
||||||
|
UNLOCK : Colete cartas para desbloquear fatos interessantes
|
||||||
|
TipBoosterButton : Se você ficar preso, pode usar uma DICA
|
||||||
|
HammerBoosterButton : O MARTELO revela qualquer letra da sua escolha
|
||||||
|
ExtraWordsButton : Você encontrou uma PALAVRA EXTRA! Palavras extras são exibidas aqui
|
||||||
|
GiftButton : Você desbloqueou um PRESENTE!<br><br> GASTE GEMAS para receber uma RECOMPENSA valiosa
|
||||||
|
ShuffleButton : O botão EMBARALHAR pode ajudá-lo a encontrar palavras mais rápido
|
||||||
|
RedGem : Conecte a palavra {word} para obter uma GEMAS VERMELHA
|
||||||
|
GameTutorial : Deslize para conectar a palavra {word} em um único movimento
|
||||||
|
Home : Início
|
||||||
|
HARD : DIFÍCIL
|
||||||
|
TIMETUT : Resolva todas as palavras a tempo para VENCER
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f3a020d5ed0c44909e7df6a54db58fd9
|
||||||
|
timeCreated: 1756110934
|
||||||
@ -7,7 +7,6 @@ DAY : День
|
|||||||
THANKS : Спасибо!
|
THANKS : Спасибо!
|
||||||
LOADING : Загрузка...
|
LOADING : Загрузка...
|
||||||
LUCKYSPIN : Колесо удачи
|
LUCKYSPIN : Колесо удачи
|
||||||
OK : OK
|
|
||||||
NOADSLABEL1 : Сделайте эту покупку, чтобы навсегда убрать рекламу
|
NOADSLABEL1 : Сделайте эту покупку, чтобы навсегда убрать рекламу
|
||||||
NOADSLABEL2 : Рекламные видео остаются доступными для просмотра по желанию после покупки
|
NOADSLABEL2 : Рекламные видео остаются доступными для просмотра по желанию после покупки
|
||||||
BUY : КУПИТЬ
|
BUY : КУПИТЬ
|
||||||
@ -19,7 +18,7 @@ GIFT : Подарок
|
|||||||
LEVELCLEARED : УРОВЕНЬ ПРОЙДЕН!
|
LEVELCLEARED : УРОВЕНЬ ПРОЙДЕН!
|
||||||
SETTINGS : Настройки
|
SETTINGS : Настройки
|
||||||
SHOP : МАГАЗИН
|
SHOP : МАГАЗИН
|
||||||
PRIVACY : КОНФИДЕНЦИАЛЬНОСТЬ
|
PRIVACY : ПРИВАТНОСТЬ
|
||||||
QUITTHEGAME : Выйти из игры
|
QUITTHEGAME : Выйти из игры
|
||||||
DOYOUWANTTOQUIT : Вы действительно хотите выйти?
|
DOYOUWANTTOQUIT : Вы действительно хотите выйти?
|
||||||
YES : Да
|
YES : Да
|
||||||
@ -53,7 +52,7 @@ EXITGAME : Выйти из игры
|
|||||||
ADVENTURE : ПРИКЛЮЧЕНИЕ
|
ADVENTURE : ПРИКЛЮЧЕНИЕ
|
||||||
CLASSIC : КЛАССИКА
|
CLASSIC : КЛАССИКА
|
||||||
TUTORIAL : Обучение
|
TUTORIAL : Обучение
|
||||||
RESTORE_PURCHASES : Восстановить покупки
|
RESTORE_PURCHASES : Восст. покупки
|
||||||
EXTRAWORDS : Дополнительные слова
|
EXTRAWORDS : Дополнительные слова
|
||||||
WORDSNOTINTCLUDEDINTHISLEVEL : Слова, не включенные в этот уровень
|
WORDSNOTINTCLUDEDINTHISLEVEL : Слова, не включенные в этот уровень
|
||||||
CLAIM : Получить
|
CLAIM : Получить
|
||||||
|
|||||||
@ -7,7 +7,6 @@ DAY : Día
|
|||||||
THANKS : ¡Gracias!
|
THANKS : ¡Gracias!
|
||||||
LOADING : Cargando...
|
LOADING : Cargando...
|
||||||
LUCKYSPIN : GIRO DE SUERTE
|
LUCKYSPIN : GIRO DE SUERTE
|
||||||
OK : OK
|
|
||||||
YOURWIN : ¡Has Ganado!
|
YOURWIN : ¡Has Ganado!
|
||||||
NOADSLABEL1 : Haz esta compra para eliminar los anuncios permanentemente
|
NOADSLABEL1 : Haz esta compra para eliminar los anuncios permanentemente
|
||||||
NOADSLABEL2 : Los videos de recompensa son opcionales y están disponibles después de la compra
|
NOADSLABEL2 : Los videos de recompensa son opcionales y están disponibles después de la compra
|
||||||
|
|||||||
@ -0,0 +1,76 @@
|
|||||||
|
COINSSHOP : Jeton Mağazası
|
||||||
|
FREE : ÜCRETSİZ
|
||||||
|
BUYTIPS : İpucu Satın Al
|
||||||
|
GETFREE : Ücretsiz Al
|
||||||
|
DAILYREWARD : Günlük Ödüller
|
||||||
|
DAY : Gün
|
||||||
|
THANKS : Teşekkürler!
|
||||||
|
LOADING : Yükleniyor...
|
||||||
|
LUCKYSPIN : Şanslı Çark
|
||||||
|
NOADSLABEL1 : Reklamsız oyna!
|
||||||
|
NOADSLABEL2 : Ödül videoları isteğe bağlıdır ve satın alma sonrası izlenebilir
|
||||||
|
BUY : SATIN AL
|
||||||
|
OUTOFLIVES : CAN BİTTİ
|
||||||
|
REFILLTHELIVES : Canları yenile?
|
||||||
|
OUTOFTIME : SÜRE BİTTİ
|
||||||
|
REFILLTHETIME : Süreyi yenile?
|
||||||
|
GIFT : Hediye
|
||||||
|
LEVELCLEARED : LEVEL TAMAMLANDI!
|
||||||
|
SETTINGS : Ayarlar
|
||||||
|
SHOP : MAĞAZA
|
||||||
|
PRIVACY : Gizlilik
|
||||||
|
QUITTHEGAME : Oyundan çık
|
||||||
|
DOYOUWANTTOQUIT : Gerçekten çıkmak istiyor musun?
|
||||||
|
YES : Evet
|
||||||
|
NO : HAYIR
|
||||||
|
COMINGSOON : Yeni levellar yakında. <br>Bir sonraki güncelleme için takipte kalın.
|
||||||
|
WIN : KAZAN
|
||||||
|
NEXTLEVEL : Sonraki Level
|
||||||
|
SCORE : Skor
|
||||||
|
POINTS : Puan
|
||||||
|
REVIVEWITHNEWSHAPES : Yeni şekillerle canlan?
|
||||||
|
WHATCHADS : Reklam İzle
|
||||||
|
CONTINUE : Devam Et
|
||||||
|
YOULOSE : Kaybettin...
|
||||||
|
RETRY : Tekrar Dene
|
||||||
|
ALMOST : Neredeyse bitti...
|
||||||
|
ARCADEMODE : ARCADE MODU
|
||||||
|
STAGE : AŞAMA {stage}
|
||||||
|
LEVEL : Seviye {level}
|
||||||
|
MOSTPOPULAR : En Popüler
|
||||||
|
BESTOFFER : EN İYİ Teklif
|
||||||
|
NOADS : Reklamları Kaldır
|
||||||
|
FREESPIN : ÜCRETSİZ Çark
|
||||||
|
SOUNDS : Sesler
|
||||||
|
MUSIC : Müzik
|
||||||
|
VIBRATION : Titreşim
|
||||||
|
GAMEOVER : Oyun Bitti
|
||||||
|
YOURSCORE : Skorun
|
||||||
|
BESTSCORE : EN İYİ Skor
|
||||||
|
NEWRECORD : Yeni Rekor!
|
||||||
|
EXITGAME : Oyundan Çık
|
||||||
|
ADVENTURE : MACERA
|
||||||
|
CLASSIC : KLASİK
|
||||||
|
TUTORIAL : Öğretici
|
||||||
|
RESTORE_PURCHASES : Satın Alımları Geri Yükle
|
||||||
|
EXTRAWORDS : Ekstra Kelimeler
|
||||||
|
WORDSNOTINTCLUDEDINTHISLEVEL : Bu levelde bulunmayan kelimeler
|
||||||
|
CLAIM : Al
|
||||||
|
COINS : JETONLAR
|
||||||
|
GEMS : MÜCEVHERLER
|
||||||
|
TAPTOCOLLECT : ALMAK İÇİN DOKUN
|
||||||
|
DAILYREWARDS : GÜNLÜK ÖDÜLLER
|
||||||
|
SPIN : ÇARK
|
||||||
|
SELECTLANGUAGE : DİL SEÇ
|
||||||
|
AGAIN : TEKRAR
|
||||||
|
UNLOCK : İlginç gerçekleri açmak için kartları topla
|
||||||
|
TipBoosterButton : Takılırsan, İPUCU kullanabilirsin
|
||||||
|
HammerBoosterButton : ÇEKİÇ seçtiğin herhangi bir harfi açar
|
||||||
|
ExtraWordsButton : EKSTRA KELİME buldun! Ekstra kelimeler burada gösterilir
|
||||||
|
GiftButton : Bir HEDİYE açtın!<br><br> Değerli bir ÖDÜL almak için MÜCEVHER HARCA
|
||||||
|
ShuffleButton : KARIŞTIR butonu kelimeleri daha hızlı bulmanı sağlar
|
||||||
|
RedGem : {word} kelimesini birleştirerek KIRMIZI MÜCEVHER kazan
|
||||||
|
GameTutorial : {word} kelimesini tek harekette birleştirmek için kaydır
|
||||||
|
Home : Ana Sayfa
|
||||||
|
HARD : ZOR
|
||||||
|
TIMETUT : Tüm kelimeleri zamanında çözerek KAZAN
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 23172cfae5ce473c93c89484749c57f1
|
||||||
|
timeCreated: 1755096283
|
||||||
@ -13,7 +13,6 @@ GameObject:
|
|||||||
- component: {fileID: 1950329202737063183}
|
- component: {fileID: 1950329202737063183}
|
||||||
- component: {fileID: 3147130223869816525}
|
- component: {fileID: 3147130223869816525}
|
||||||
- component: {fileID: 6033270132168065964}
|
- component: {fileID: 6033270132168065964}
|
||||||
- component: {fileID: 636551701378598401}
|
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: NoAds
|
m_Name: NoAds
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@ -150,24 +149,6 @@ MonoBehaviour:
|
|||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
noSound: 0
|
noSound: 0
|
||||||
--- !u!114 &636551701378598401
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1411125501940549780}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: ecf8678021564e0c8ccdb00b43162f58, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
BuyItemButton: {fileID: 6033270132168065964}
|
|
||||||
price: {fileID: 994560272042212353}
|
|
||||||
count: {fileID: 0}
|
|
||||||
discountPercent: {fileID: 0}
|
|
||||||
productID: {fileID: 11400000, guid: 5a976435f08ad439db8305e3de645368, type: 2}
|
|
||||||
resource: {fileID: 0}
|
|
||||||
--- !u!1 &3033206250374185977
|
--- !u!1 &3033206250374185977
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -1371,6 +1352,7 @@ MonoBehaviour:
|
|||||||
- {fileID: 2587162064600910403}
|
- {fileID: 2587162064600910403}
|
||||||
- {fileID: 8029056659159804162}
|
- {fileID: 8029056659159804162}
|
||||||
noAdsProduct: {fileID: 11400000, guid: 5a976435f08ad439db8305e3de645368, type: 2}
|
noAdsProduct: {fileID: 11400000, guid: 5a976435f08ad439db8305e3de645368, type: 2}
|
||||||
|
noAdsPriceText: {fileID: 994560272042212353}
|
||||||
coinsSound: {fileID: 0}
|
coinsSound: {fileID: 0}
|
||||||
--- !u!95 &1506187382743174503
|
--- !u!95 &1506187382743174503
|
||||||
Animator:
|
Animator:
|
||||||
|
|||||||
@ -1119,8 +1119,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
m_AnchoredPosition: {x: -13.999998, y: 205.09991}
|
m_AnchoredPosition: {x: 10.214, y: 221.7}
|
||||||
m_SizeDelta: {x: 805.3, y: 125.2}
|
m_SizeDelta: {x: 960.6, y: 125.2}
|
||||||
m_Pivot: {x: 0.50953984, y: 1.5127809}
|
m_Pivot: {x: 0.50953984, y: 1.5127809}
|
||||||
--- !u!222 &7535087139974686469
|
--- !u!222 &7535087139974686469
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
@ -1177,7 +1177,7 @@ MonoBehaviour:
|
|||||||
m_faceColor:
|
m_faceColor:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
rgba: 4294967295
|
rgba: 4294967295
|
||||||
m_fontSize: 52.8
|
m_fontSize: 59.7
|
||||||
m_fontSizeBase: 32
|
m_fontSizeBase: 32
|
||||||
m_fontWeight: 400
|
m_fontWeight: 400
|
||||||
m_enableAutoSizing: 1
|
m_enableAutoSizing: 1
|
||||||
|
|||||||
@ -0,0 +1,465 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &1818791151053463826
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2567939603980722763}
|
||||||
|
- component: {fileID: 3423675973788078395}
|
||||||
|
- component: {fileID: 1805814460615924799}
|
||||||
|
- component: {fileID: 6259068709827928649}
|
||||||
|
- component: {fileID: 1114516486659757762}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: MessageText
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &2567939603980722763
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1818791151053463826}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1.0007356, y: 1.0007356, z: 1.0007356}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 8034155342639863909}
|
||||||
|
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.55041504, y: 120.05658}
|
||||||
|
m_SizeDelta: {x: 800, y: 100}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &3423675973788078395
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1818791151053463826}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &1805814460615924799
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1818791151053463826}
|
||||||
|
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: New Text
|
||||||
|
m_isRightToLeft: 0
|
||||||
|
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||||
|
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||||
|
m_fontSharedMaterials: []
|
||||||
|
m_fontMaterial: {fileID: 0}
|
||||||
|
m_fontMaterials: []
|
||||||
|
m_fontColor32:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 4279308570
|
||||||
|
m_fontColor: {r: 0.103773594, g: 0.06510325, b: 0.06510325, 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: 48
|
||||||
|
m_fontSizeBase: 48
|
||||||
|
m_fontWeight: 400
|
||||||
|
m_enableAutoSizing: 0
|
||||||
|
m_fontSizeMin: 18
|
||||||
|
m_fontSizeMax: 72
|
||||||
|
m_fontStyle: 1
|
||||||
|
m_HorizontalAlignment: 2
|
||||||
|
m_VerticalAlignment: 512
|
||||||
|
m_textAlignment: 65535
|
||||||
|
m_characterSpacing: 0
|
||||||
|
m_wordSpacing: 0
|
||||||
|
m_lineSpacing: 0
|
||||||
|
m_lineSpacingMax: 0
|
||||||
|
m_paragraphSpacing: 0
|
||||||
|
m_charWidthMaxAdj: 0
|
||||||
|
m_enableWordWrapping: 1
|
||||||
|
m_wordWrappingRatios: 0.4
|
||||||
|
m_overflowMode: 0
|
||||||
|
m_linkedTextComponent: {fileID: 0}
|
||||||
|
parentLinkedComponent: {fileID: 0}
|
||||||
|
m_enableKerning: 1
|
||||||
|
m_enableExtraPadding: 0
|
||||||
|
checkPaddingRequired: 0
|
||||||
|
m_isRichText: 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}
|
||||||
|
--- !u!95 &6259068709827928649
|
||||||
|
Animator:
|
||||||
|
serializedVersion: 5
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1818791151053463826}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_Avatar: {fileID: 0}
|
||||||
|
m_Controller: {fileID: 0}
|
||||||
|
m_CullingMode: 0
|
||||||
|
m_UpdateMode: 0
|
||||||
|
m_ApplyRootMotion: 0
|
||||||
|
m_LinearVelocityBlending: 0
|
||||||
|
m_StabilizeFeet: 0
|
||||||
|
m_WarningMessage:
|
||||||
|
m_HasTransformHierarchy: 1
|
||||||
|
m_AllowConstantClipSamplingOptimization: 1
|
||||||
|
m_KeepAnimatorStateOnDisable: 0
|
||||||
|
m_WriteDefaultValuesOnDisable: 0
|
||||||
|
--- !u!225 &1114516486659757762
|
||||||
|
CanvasGroup:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1818791151053463826}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_Alpha: 1
|
||||||
|
m_Interactable: 1
|
||||||
|
m_BlocksRaycasts: 1
|
||||||
|
m_IgnoreParentGroups: 0
|
||||||
|
--- !u!1 &7811482148034564061
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8034155342639863909}
|
||||||
|
- component: {fileID: 8031136941516792535}
|
||||||
|
- component: {fileID: 8016891387234896929}
|
||||||
|
- component: {fileID: 3521832069348138651}
|
||||||
|
- component: {fileID: 5153632076726711166}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: MessagePopup
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &8034155342639863909
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7811482148034564061}
|
||||||
|
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: 2567939603980722763}
|
||||||
|
- {fileID: 8729196215722196391}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
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: 1284, y: 400}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &8031136941516792535
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7811482148034564061}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!95 &8016891387234896929
|
||||||
|
Animator:
|
||||||
|
serializedVersion: 5
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7811482148034564061}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_Avatar: {fileID: 0}
|
||||||
|
m_Controller: {fileID: 9100000, guid: cac0359e35eca487b8be1ca73b3d159d, type: 2}
|
||||||
|
m_CullingMode: 0
|
||||||
|
m_UpdateMode: 0
|
||||||
|
m_ApplyRootMotion: 0
|
||||||
|
m_LinearVelocityBlending: 0
|
||||||
|
m_StabilizeFeet: 0
|
||||||
|
m_WarningMessage:
|
||||||
|
m_HasTransformHierarchy: 1
|
||||||
|
m_AllowConstantClipSamplingOptimization: 1
|
||||||
|
m_KeepAnimatorStateOnDisable: 0
|
||||||
|
m_WriteDefaultValuesOnDisable: 0
|
||||||
|
--- !u!225 &3521832069348138651
|
||||||
|
CanvasGroup:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7811482148034564061}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_Alpha: 1
|
||||||
|
m_Interactable: 1
|
||||||
|
m_BlocksRaycasts: 1
|
||||||
|
m_IgnoreParentGroups: 0
|
||||||
|
--- !u!114 &5153632076726711166
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7811482148034564061}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: b00e69d6788d74f1cb21197ea9faaa8d, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
fade: 1
|
||||||
|
closeButton: {fileID: 0}
|
||||||
|
tagsToShow: []
|
||||||
|
isPopupAboveTags: 0
|
||||||
|
fadeAlpha: 1
|
||||||
|
appearSound: {fileID: 0}
|
||||||
|
disappearSound: {fileID: 0}
|
||||||
|
messageText: {fileID: 1805814460615924799}
|
||||||
|
--- !u!1001 &4313604078728082956
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 8034155342639863909}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 90856562591110198, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_Color.b
|
||||||
|
value: 0.14509805
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 90856562591110198, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_Color.g
|
||||||
|
value: 0.8901961
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 90856562591110198, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_Color.r
|
||||||
|
value: 0.10980392
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 907128453201242062, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: NO
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1804143460132237798, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.x
|
||||||
|
value: 308.7
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1804143460132237798, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.y
|
||||||
|
value: 93.683
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1804143460132237798, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.x
|
||||||
|
value: 6
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1804143460132237798, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.y
|
||||||
|
value: 9.76
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3661189285963648132, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_IsActive
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4641059037314894576, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_text
|
||||||
|
value: NO
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4641059037314894576, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: instanceID
|
||||||
|
value: NO
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4641059037314894576, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_fontSize
|
||||||
|
value: 77.4
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4641059037314894576, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_sharedMaterial
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 3722732180671858053, guid: 14928a98ac0086a4483452d618f1764c, type: 2}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_Pivot.x
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_Pivot.y
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.x
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.y
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_AnchorMin.x
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_AnchorMin.y
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.x
|
||||||
|
value: 422.6
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.y
|
||||||
|
value: 80
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_LocalScale.x
|
||||||
|
value: 1.0007356
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_LocalScale.y
|
||||||
|
value: 1.0007356
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_LocalScale.z
|
||||||
|
value: 1.0007356
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.x
|
||||||
|
value: 242.62836
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.y
|
||||||
|
value: -7.036865
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8610968763401608209, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_IsActive
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8644439777305475629, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_Color.b
|
||||||
|
value: 0.84313726
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8644439777305475629, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_Color.g
|
||||||
|
value: 0.8039216
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8644439777305475629, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_Color.r
|
||||||
|
value: 0.7921569
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8673558434284163724, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_Color.b
|
||||||
|
value: 0.047058824
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8673558434284163724, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_Color.g
|
||||||
|
value: 0.69803923
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8673558434284163724, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
propertyPath: m_Color.r
|
||||||
|
value: 0.007843138
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects:
|
||||||
|
- {fileID: 6038492710620930376, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
- {fileID: 3661189285963648132, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
--- !u!224 &8729196215722196391 stripped
|
||||||
|
RectTransform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 4825982739004869547, guid: e81bbbc218b73d345bfb5f45c5fa7c66, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 4313604078728082956}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 520cfca0b533043a68fce421523ffd17
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -269,6 +269,7 @@ MonoBehaviour:
|
|||||||
disappearSound: {fileID: 0}
|
disappearSound: {fileID: 0}
|
||||||
removeAdsButton: {fileID: 1978271021528692323}
|
removeAdsButton: {fileID: 1978271021528692323}
|
||||||
productID: {fileID: 11400000, guid: 5a976435f08ad439db8305e3de645368, type: 2}
|
productID: {fileID: 11400000, guid: 5a976435f08ad439db8305e3de645368, type: 2}
|
||||||
|
priceText: {fileID: 5469067225883325548}
|
||||||
--- !u!223 &107975066550012903
|
--- !u!223 &107975066550012903
|
||||||
Canvas:
|
Canvas:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@ -242,8 +242,7 @@ RectTransform:
|
|||||||
- {fileID: 3904014851963953829}
|
- {fileID: 3904014851963953829}
|
||||||
- {fileID: 8498546336381412538}
|
- {fileID: 8498546336381412538}
|
||||||
- {fileID: 6912875309253603059}
|
- {fileID: 6912875309253603059}
|
||||||
- {fileID: 389028524070462765}
|
- {fileID: 6580947508340125878}
|
||||||
- {fileID: 7342428514651788858}
|
|
||||||
m_Father: {fileID: 4888698260352988140}
|
m_Father: {fileID: 4888698260352988140}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
@ -509,18 +508,18 @@ RectTransform:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 2674760614323516302}
|
m_GameObject: {fileID: 2674760614323516302}
|
||||||
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_LocalPosition: {x: 0, y: 0, z: 2664.143}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 4386370085143922448}
|
- {fileID: 4386370085143922448}
|
||||||
- {fileID: 6674073733379322089}
|
- {fileID: 6674073733379322089}
|
||||||
m_Father: {fileID: 2148560976257270264}
|
m_Father: {fileID: 6580947508340125878}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
m_AnchoredPosition: {x: 255, y: -596}
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
m_SizeDelta: {x: 436.0297, y: 253.0126}
|
m_SizeDelta: {x: 0, y: 253.0126}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &6669546556015746141
|
--- !u!222 &6669546556015746141
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
@ -631,6 +630,70 @@ MonoBehaviour:
|
|||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
noSound: 0
|
noSound: 0
|
||||||
|
--- !u!1 &5088694231550735736
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6580947508340125878}
|
||||||
|
- component: {fileID: 3737039387247353948}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Buttons
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &6580947508340125878
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5088694231550735736}
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: -2664.143}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 389028524070462765}
|
||||||
|
- {fileID: 7342428514651788858}
|
||||||
|
m_Father: {fileID: 2148560976257270264}
|
||||||
|
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: 17.165, y: -590.07}
|
||||||
|
m_SizeDelta: {x: 928.17, y: 253}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &3737039387247353948
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5088694231550735736}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Padding:
|
||||||
|
m_Left: 0
|
||||||
|
m_Right: 0
|
||||||
|
m_Top: 0
|
||||||
|
m_Bottom: 0
|
||||||
|
m_ChildAlignment: 4
|
||||||
|
m_Spacing: 0
|
||||||
|
m_ChildForceExpandWidth: 1
|
||||||
|
m_ChildForceExpandHeight: 0
|
||||||
|
m_ChildControlWidth: 1
|
||||||
|
m_ChildControlHeight: 0
|
||||||
|
m_ChildScaleWidth: 0
|
||||||
|
m_ChildScaleHeight: 0
|
||||||
|
m_ReverseArrangement: 0
|
||||||
--- !u!1 &5987972094866960005
|
--- !u!1 &5987972094866960005
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -696,7 +759,7 @@ MonoBehaviour:
|
|||||||
m_OnCullStateChanged:
|
m_OnCullStateChanged:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_text:
|
m_text: AGAIN
|
||||||
m_isRightToLeft: 0
|
m_isRightToLeft: 0
|
||||||
m_fontAsset: {fileID: 11400000, guid: 14928a98ac0086a4483452d618f1764c, type: 2}
|
m_fontAsset: {fileID: 11400000, guid: 14928a98ac0086a4483452d618f1764c, type: 2}
|
||||||
m_sharedMaterial: {fileID: 2100000, guid: 68c9b8949d6894b4fac4f68f9a6fe10e, type: 2}
|
m_sharedMaterial: {fileID: 2100000, guid: 68c9b8949d6894b4fac4f68f9a6fe10e, type: 2}
|
||||||
@ -723,7 +786,7 @@ MonoBehaviour:
|
|||||||
m_faceColor:
|
m_faceColor:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
rgba: 4294967295
|
rgba: 4294967295
|
||||||
m_fontSize: 32
|
m_fontSize: 60.25
|
||||||
m_fontSizeBase: 32
|
m_fontSizeBase: 32
|
||||||
m_fontWeight: 400
|
m_fontWeight: 400
|
||||||
m_enableAutoSizing: 1
|
m_enableAutoSizing: 1
|
||||||
@ -1123,6 +1186,7 @@ GameObject:
|
|||||||
- component: {fileID: 4686081452797347009}
|
- component: {fileID: 4686081452797347009}
|
||||||
- component: {fileID: 7087705036038996266}
|
- component: {fileID: 7087705036038996266}
|
||||||
- component: {fileID: 1306931333348575190}
|
- component: {fileID: 1306931333348575190}
|
||||||
|
- component: {fileID: 3582926535624043061}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Buy
|
m_Name: Buy
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@ -1138,18 +1202,18 @@ RectTransform:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 7551346846335541968}
|
m_GameObject: {fileID: 7551346846335541968}
|
||||||
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_LocalPosition: {x: 0, y: 0, z: 2664.143}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 8035301690477598643}
|
- {fileID: 8035301690477598643}
|
||||||
- {fileID: 1593944131338580978}
|
- {fileID: 1593944131338580978}
|
||||||
m_Father: {fileID: 2148560976257270264}
|
m_Father: {fileID: 6580947508340125878}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
m_AnchoredPosition: {x: -228.9, y: -601}
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
m_SizeDelta: {x: 436.0297, y: 253.0126}
|
m_SizeDelta: {x: 0, y: 253.0126}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &2189947461181701794
|
--- !u!222 &2189947461181701794
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
@ -1260,6 +1324,18 @@ MonoBehaviour:
|
|||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
noSound: 0
|
noSound: 0
|
||||||
|
--- !u!114 &3582926535624043061
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 7551346846335541968}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c9c6b14262f434e07ad593f7b28fbfba, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
--- !u!1 &7627276145714778815
|
--- !u!1 &7627276145714778815
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -1442,9 +1518,9 @@ RectTransform:
|
|||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 7342428514651788858}
|
m_Father: {fileID: 7342428514651788858}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0, y: 0.5}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0, y: 0.5}
|
||||||
m_AnchoredPosition: {x: -101, y: 13}
|
m_AnchoredPosition: {x: 131, y: 13}
|
||||||
m_SizeDelta: {x: 91.1761, y: 103.8394}
|
m_SizeDelta: {x: 91.1761, y: 103.8394}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &3736785195808042210
|
--- !u!222 &3736785195808042210
|
||||||
|
|||||||
@ -741,6 +741,7 @@ RectTransform:
|
|||||||
- {fileID: 7560663172583379825}
|
- {fileID: 7560663172583379825}
|
||||||
- {fileID: 2322537657978783918}
|
- {fileID: 2322537657978783918}
|
||||||
- {fileID: 90789140801721391}
|
- {fileID: 90789140801721391}
|
||||||
|
- {fileID: 2652648118269143667}
|
||||||
- {fileID: 837921014736427326}
|
- {fileID: 837921014736427326}
|
||||||
m_Father: {fileID: 7285109989598965343}
|
m_Father: {fileID: 7285109989598965343}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
@ -1143,6 +1144,7 @@ MonoBehaviour:
|
|||||||
appearSound: {fileID: 0}
|
appearSound: {fileID: 0}
|
||||||
disappearSound: {fileID: 0}
|
disappearSound: {fileID: 0}
|
||||||
privacypolicy: {fileID: 9102471955984009255}
|
privacypolicy: {fileID: 9102471955984009255}
|
||||||
|
googleUMPConsent: {fileID: 6611547390847006331}
|
||||||
restorePurchase: {fileID: 8408240860258485558}
|
restorePurchase: {fileID: 8408240860258485558}
|
||||||
vibrationSlider: {fileID: 505551677814366046}
|
vibrationSlider: {fileID: 505551677814366046}
|
||||||
--- !u!114 &7505269174666667659
|
--- !u!114 &7505269174666667659
|
||||||
@ -2190,11 +2192,11 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
- target: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
propertyPath: m_text
|
propertyPath: m_text
|
||||||
value: Privacy
|
value: GDPR
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
- target: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
propertyPath: instanceID
|
propertyPath: instanceID
|
||||||
value: PRIVACY
|
value:
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
- target: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
propertyPath: m_fontSize
|
propertyPath: m_fontSize
|
||||||
@ -2294,11 +2296,11 @@ PrefabInstance:
|
|||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
propertyPath: m_AnchoredPosition.x
|
propertyPath: m_AnchoredPosition.x
|
||||||
value: -7
|
value: -2.8722
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
propertyPath: m_AnchoredPosition.y
|
propertyPath: m_AnchoredPosition.y
|
||||||
value: -761
|
value: -773
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
propertyPath: m_LocalEulerAnglesHint.x
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
@ -2421,3 +2423,336 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: c9659348afa04bc6bb30eb6900f94b65, type: 3}
|
m_Script: {fileID: 11500000, guid: c9659348afa04bc6bb30eb6900f94b65, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!1001 &8741391224511066416
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 3963225542060995251}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 968135515561558649, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 968135515561558649, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 968135515561558649, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchorMin.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 968135515561558649, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchorMin.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 968135515561558649, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.x
|
||||||
|
value: 77.4014
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 968135515561558649, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.y
|
||||||
|
value: 85.2995
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 968135515561558649, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.x
|
||||||
|
value: 101.2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 968135515561558649, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.y
|
||||||
|
value: 95.8
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1734678026940801168, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Sprite
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 21300000, guid: 7f7bb377a7687438bb5a87d2eff4bfd7, type: 3}
|
||||||
|
- target: {fileID: 1734678026940801168, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Color.b
|
||||||
|
value: 0.7764706
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1734678026940801168, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Color.g
|
||||||
|
value: 0.57254905
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 1734678026940801168, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Color.r
|
||||||
|
value: 0.3529412
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2327761819407891759, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Color.b
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2327761819407891759, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Color.g
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2327761819407891759, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Color.r
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2490286444286461771, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_TargetGraphic
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 3705024337948060229}
|
||||||
|
- target: {fileID: 2611169328416249915, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: part1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3155086027690401780, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Color.b
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3155086027690401780, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Color.g
|
||||||
|
value: 0.9686275
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3155086027690401780, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Color.r
|
||||||
|
value: 0.9058824
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4025083493491244185, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Color.b
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4025083493491244185, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Color.g
|
||||||
|
value: 0.95294124
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4025083493491244185, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Color.r
|
||||||
|
value: 0.9058824
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_text
|
||||||
|
value: Privacy
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: instanceID
|
||||||
|
value: PRIVACY
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_fontSize
|
||||||
|
value: 60
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_fontStyle
|
||||||
|
value: 4
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_fontColor.b
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_fontColor.g
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_fontColor.r
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_fontSizeBase
|
||||||
|
value: 60
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_enableAutoSizing
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_fontColor32.rgba
|
||||||
|
value: 4294967295
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5972637010007008015, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: icon
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Pivot.x
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Pivot.y
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.x
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.y
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchorMin.x
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchorMin.y
|
||||||
|
value: 0.5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.x
|
||||||
|
value: 627.1525
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.y
|
||||||
|
value: 106.1967
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: -0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.x
|
||||||
|
value: -8
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.y
|
||||||
|
value: -666.8
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 7905749766136477480, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Type
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 7905749766136477480, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Sprite
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 21300000, guid: 123f05a2a44574111bd629640dbce473, type: 3}
|
||||||
|
- target: {fileID: 7905749766136477480, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Color.b
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 7905749766136477480, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Color.g
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 7905749766136477480, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Color.r
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 7905749766136477480, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Enabled
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 7905749766136477480, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_PixelsPerUnitMultiplier
|
||||||
|
value: 1.35
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8001603133226906570, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.x
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8001603133226906570, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchorMax.y
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8001603133226906570, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchorMin.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8001603133226906570, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchorMin.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8001603133226906570, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8001603133226906570, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_SizeDelta.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8001603133226906570, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8001603133226906570, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_AnchoredPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8201212475682522876, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: UMP
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8201212475682522876, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_IsActive
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 9157385146011294632, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: part 2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents:
|
||||||
|
- {fileID: 7905749766136477480, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
m_RemovedGameObjects:
|
||||||
|
- {fileID: 808954587397050430, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
- {fileID: 9157385146011294632, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
- {fileID: 2611169328416249915, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
- {fileID: 5972637010007008015, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
--- !u!224 &2652648118269143667 stripped
|
||||||
|
RectTransform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 6746304736006806339, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 8741391224511066416}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!114 &3705024337948060229 stripped
|
||||||
|
MonoBehaviour:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 5342761196953066357, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 8741391224511066416}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 2bc838cbc2e148b3a5e7578d063ccb18, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!114 &6611547390847006331 stripped
|
||||||
|
MonoBehaviour:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 2490286444286461771, guid: 4a90a7a36be6c3249a0612ab1316c8fc, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 8741391224511066416}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c9659348afa04bc6bb30eb6900f94b65, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
|||||||
@ -194,6 +194,7 @@ MonoBehaviour:
|
|||||||
onClick:
|
onClick:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
|
noSound: 0
|
||||||
--- !u!1 &5404509939308836076
|
--- !u!1 &5404509939308836076
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -412,6 +413,10 @@ PrefabInstance:
|
|||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TransformParent: {fileID: 0}
|
m_TransformParent: {fileID: 0}
|
||||||
m_Modifications:
|
m_Modifications:
|
||||||
|
- target: {fileID: 621257374199314380, guid: 42fecf35a1e774a20a5f0e45c3d3c10e, type: 3}
|
||||||
|
propertyPath: m_IsActive
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
- target: {fileID: 2363198712010147430, guid: 42fecf35a1e774a20a5f0e45c3d3c10e, type: 3}
|
- target: {fileID: 2363198712010147430, guid: 42fecf35a1e774a20a5f0e45c3d3c10e, type: 3}
|
||||||
propertyPath: m_AnchorMax.y
|
propertyPath: m_AnchorMax.y
|
||||||
value: 0
|
value: 0
|
||||||
@ -597,7 +602,10 @@ MonoBehaviour:
|
|||||||
- LanguageSelection
|
- LanguageSelection
|
||||||
isPopupAboveTags: 0
|
isPopupAboveTags: 0
|
||||||
fadeAlpha: 0.98
|
fadeAlpha: 0.98
|
||||||
|
appearSound: {fileID: 0}
|
||||||
|
disappearSound: {fileID: 0}
|
||||||
privacypolicy: {fileID: 0}
|
privacypolicy: {fileID: 0}
|
||||||
|
googleUMPConsent: {fileID: 0}
|
||||||
restorePurchase: {fileID: 0}
|
restorePurchase: {fileID: 0}
|
||||||
vibrationSlider: {fileID: 6267439442198750998}
|
vibrationSlider: {fileID: 6267439442198750998}
|
||||||
homeButton: {fileID: 3971681028222562917}
|
homeButton: {fileID: 3971681028222562917}
|
||||||
|
|||||||
@ -0,0 +1,23 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 44ad2bed4c494715ba8ad21e150b03ee, type: 3}
|
||||||
|
m_Name: AdsInterstitialSettings
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
interstitials:
|
||||||
|
- elementName: Interstitial
|
||||||
|
adReference: {fileID: 11400000, guid: f9303f4b583464bc08f45f673b581f90, type: 2}
|
||||||
|
popup: {fileID: 578949463131755950, guid: a9a2cf415d78749059b02eb227bd4ff0, type: 3}
|
||||||
|
showOnOpen: 1
|
||||||
|
showOnClose: 0
|
||||||
|
minLevel: 1
|
||||||
|
maxLevel: 1000
|
||||||
|
frequency: 1
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d40017039bee543bd909a2ec0c80c188
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -14,7 +14,7 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
adProfiles:
|
adProfiles:
|
||||||
- name: Unity ads iOS
|
- name: Unity ads iOS
|
||||||
enable: 1
|
enable: 0
|
||||||
testInEditor: 1
|
testInEditor: 1
|
||||||
platforms: 1
|
platforms: 1
|
||||||
appId: 5698950
|
appId: 5698950
|
||||||
@ -33,7 +33,7 @@ MonoBehaviour:
|
|||||||
showOnOpen: 0
|
showOnOpen: 0
|
||||||
showOnClose: 0
|
showOnClose: 0
|
||||||
- name: Unity ads banner ios
|
- name: Unity ads banner ios
|
||||||
enable: 1
|
enable: 0
|
||||||
testInEditor: 1
|
testInEditor: 1
|
||||||
platforms: 1
|
platforms: 1
|
||||||
appId: 5698950
|
appId: 5698950
|
||||||
@ -46,7 +46,7 @@ MonoBehaviour:
|
|||||||
showOnOpen: 0
|
showOnOpen: 0
|
||||||
showOnClose: 0
|
showOnClose: 0
|
||||||
- name: Unity ads Android
|
- name: Unity ads Android
|
||||||
enable: 1
|
enable: 0
|
||||||
testInEditor: 1
|
testInEditor: 1
|
||||||
platforms: 0
|
platforms: 0
|
||||||
appId: 5870065
|
appId: 5870065
|
||||||
@ -65,7 +65,7 @@ MonoBehaviour:
|
|||||||
showOnOpen: 0
|
showOnOpen: 0
|
||||||
showOnClose: 0
|
showOnClose: 0
|
||||||
- name: Unity ads banner android
|
- name: Unity ads banner android
|
||||||
enable: 1
|
enable: 0
|
||||||
testInEditor: 1
|
testInEditor: 1
|
||||||
platforms: 0
|
platforms: 0
|
||||||
appId: 5870065
|
appId: 5870065
|
||||||
@ -116,7 +116,7 @@ MonoBehaviour:
|
|||||||
showOnOpen: 0
|
showOnOpen: 0
|
||||||
showOnClose: 0
|
showOnClose: 0
|
||||||
- name: admob iOS
|
- name: admob iOS
|
||||||
enable: 0
|
enable: 1
|
||||||
testInEditor: 1
|
testInEditor: 1
|
||||||
platforms: 1
|
platforms: 1
|
||||||
appId: ca-app-pub-1921802893067184~3779034969
|
appId: ca-app-pub-1921802893067184~3779034969
|
||||||
@ -135,7 +135,7 @@ MonoBehaviour:
|
|||||||
showOnOpen: 0
|
showOnOpen: 0
|
||||||
showOnClose: 0
|
showOnClose: 0
|
||||||
- name: admob Android
|
- name: admob Android
|
||||||
enable: 0
|
enable: 1
|
||||||
testInEditor: 1
|
testInEditor: 1
|
||||||
platforms: 0
|
platforms: 0
|
||||||
appId: ca-app-pub-1921802893067184~8049698250
|
appId: ca-app-pub-1921802893067184~8049698250
|
||||||
@ -154,7 +154,7 @@ MonoBehaviour:
|
|||||||
showOnOpen: 0
|
showOnOpen: 0
|
||||||
showOnClose: 0
|
showOnClose: 0
|
||||||
- name: Admob banner IOS
|
- name: Admob banner IOS
|
||||||
enable: 0
|
enable: 1
|
||||||
testInEditor: 1
|
testInEditor: 1
|
||||||
platforms: 1
|
platforms: 1
|
||||||
appId: ca-app-pub-1921802893067184~3779034969
|
appId: ca-app-pub-1921802893067184~3779034969
|
||||||
@ -167,10 +167,10 @@ MonoBehaviour:
|
|||||||
showOnOpen: 0
|
showOnOpen: 0
|
||||||
showOnClose: 0
|
showOnClose: 0
|
||||||
- name: Admob banner android
|
- name: Admob banner android
|
||||||
enable: 0
|
enable: 1
|
||||||
testInEditor: 1
|
testInEditor: 1
|
||||||
platforms: 0
|
platforms: 0
|
||||||
appId: ca-app-pub-1921802893067184~8049698250
|
appId: ca-app-pub-3940256099942544/6300978111
|
||||||
adsHandler: {fileID: 11400000, guid: 2115921dfa5e14398a54b0ad2a801cec, type: 2}
|
adsHandler: {fileID: 11400000, guid: 2115921dfa5e14398a54b0ad2a801cec, type: 2}
|
||||||
adElements:
|
adElements:
|
||||||
- placementId: ca-app-pub-1921802893067184/7055346637
|
- placementId: ca-app-pub-1921802893067184/7055346637
|
||||||
|
|||||||
@ -17,4 +17,5 @@ MonoBehaviour:
|
|||||||
Lose: 26
|
Lose: 26
|
||||||
Back: 60
|
Back: 60
|
||||||
Restart: 32
|
Restart: 32
|
||||||
TestLanguage: 10
|
SimulateDuplicate: 16
|
||||||
|
TestLanguageCode: en
|
||||||
|
|||||||
@ -11,7 +11,8 @@
|
|||||||
"GUID:c98377141161c7746a178fb5cb1af075",
|
"GUID:c98377141161c7746a178fb5cb1af075",
|
||||||
"GUID:75469ad4d38634e559750d17036d5f7c",
|
"GUID:75469ad4d38634e559750d17036d5f7c",
|
||||||
"GUID:b0214a6008ed146ff8f122a6a9c2f6cc",
|
"GUID:b0214a6008ed146ff8f122a6a9c2f6cc",
|
||||||
"jp.hadashikick.vcontainer"
|
"jp.hadashikick.vcontainer",
|
||||||
|
"GUID:63a57c8b658089e49a173b0f0c4870a7"
|
||||||
],
|
],
|
||||||
"includePlatforms": [],
|
"includePlatforms": [],
|
||||||
"excludePlatforms": [],
|
"excludePlatforms": [],
|
||||||
|
|||||||
@ -0,0 +1,126 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEditor;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace WordsToolkit.Scripts.Editor
|
||||||
|
{
|
||||||
|
public class CustomModelPostProcessor : AssetPostprocessor
|
||||||
|
{
|
||||||
|
private static readonly string SOURCE_PATH = "Assets/WordsToolkit/model/custom";
|
||||||
|
private static readonly string TARGET_PATH = "Assets/StreamingAssets/WordConnectGameToolkit/model/custom";
|
||||||
|
|
||||||
|
static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
|
||||||
|
{
|
||||||
|
bool hasCustomModelChanges = false;
|
||||||
|
|
||||||
|
// Check imported assets
|
||||||
|
foreach (string assetPath in importedAssets)
|
||||||
|
{
|
||||||
|
if (IsCustomModelFile(assetPath))
|
||||||
|
{
|
||||||
|
hasCustomModelChanges = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check moved assets
|
||||||
|
if (!hasCustomModelChanges)
|
||||||
|
{
|
||||||
|
foreach (string assetPath in movedAssets)
|
||||||
|
{
|
||||||
|
if (IsCustomModelFile(assetPath))
|
||||||
|
{
|
||||||
|
hasCustomModelChanges = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasCustomModelChanges)
|
||||||
|
{
|
||||||
|
CopyCustomModelsToStreamingAssets();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool IsCustomModelFile(string assetPath)
|
||||||
|
{
|
||||||
|
return assetPath.StartsWith(SOURCE_PATH) &&
|
||||||
|
(assetPath.EndsWith(".bin") || assetPath.EndsWith(".json") || assetPath.EndsWith(".txt"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void CopyCustomModelsToStreamingAssets()
|
||||||
|
{
|
||||||
|
if (!Directory.Exists(SOURCE_PATH))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create target directory
|
||||||
|
Directory.CreateDirectory(TARGET_PATH);
|
||||||
|
|
||||||
|
// Get all custom model files
|
||||||
|
string[] files = Directory.GetFiles(SOURCE_PATH, "*", SearchOption.AllDirectories);
|
||||||
|
|
||||||
|
foreach (string sourceFile in files)
|
||||||
|
{
|
||||||
|
// Skip .meta files
|
||||||
|
if (sourceFile.EndsWith(".meta"))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Calculate relative path from source directory
|
||||||
|
string relativePath = Path.GetRelativePath(SOURCE_PATH, sourceFile);
|
||||||
|
string targetFile = Path.Combine(TARGET_PATH, relativePath);
|
||||||
|
|
||||||
|
// Create target subdirectory if needed
|
||||||
|
string targetDir = Path.GetDirectoryName(targetFile);
|
||||||
|
if (!Directory.Exists(targetDir))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(targetDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Copy file if it doesn't exist or is newer
|
||||||
|
if (!File.Exists(targetFile) || File.GetLastWriteTime(sourceFile) > File.GetLastWriteTime(targetFile))
|
||||||
|
{
|
||||||
|
File.Copy(sourceFile, targetFile, true);
|
||||||
|
Debug.Log($"[CustomModelPostProcessor] Copied {relativePath} to StreamingAssets");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogError($"[CustomModelPostProcessor] Failed to copy {sourceFile}: {e.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Refresh the asset database so Unity sees the new files
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("WordToolkit/Copy Custom Models to StreamingAssets")]
|
||||||
|
private static void ManualCopyCustomModels()
|
||||||
|
{
|
||||||
|
CopyCustomModelsToStreamingAssets();
|
||||||
|
Debug.Log("[CustomModelPostProcessor] Manual copy completed");
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("WordToolkit/Clean Custom Models from StreamingAssets")]
|
||||||
|
private static void CleanCustomModelsFromStreamingAssets()
|
||||||
|
{
|
||||||
|
if (Directory.Exists(TARGET_PATH))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Directory.Delete(TARGET_PATH, true);
|
||||||
|
Debug.Log("[CustomModelPostProcessor] Cleaned custom models from StreamingAssets");
|
||||||
|
AssetDatabase.Refresh();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Debug.LogError($"[CustomModelPostProcessor] Failed to clean StreamingAssets: {e.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1a1b585689cce4771abd8ec25020f1a9
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -84,7 +84,7 @@ namespace WordsToolkit.Scripts.Editor
|
|||||||
[MenuItem( nameof(WordConnect) + "/Settings/Gift settings")]
|
[MenuItem( nameof(WordConnect) + "/Settings/Gift settings")]
|
||||||
public static void GiftSettings()
|
public static void GiftSettings()
|
||||||
{
|
{
|
||||||
Selection.activeObject = AssetDatabase.LoadMainAssetAtPath(WordConnectPath + "/Resources/Settings/GiftSettings.asset");
|
Selection.activeObject = AssetDatabase.LoadMainAssetAtPath(WordConnectPath + "/Resources/Settings/GiftsSettings.asset");
|
||||||
}
|
}
|
||||||
|
|
||||||
[MenuItem( nameof(WordConnect) + "/Scenes/Main scene &1", priority = 0)]
|
[MenuItem( nameof(WordConnect) + "/Scenes/Main scene &1", priority = 0)]
|
||||||
|
|||||||
@ -34,6 +34,7 @@ namespace WordsToolkit.Scripts.Editor.GUI
|
|||||||
var root = new VisualElement();
|
var root = new VisualElement();
|
||||||
|
|
||||||
root.Add(new PropertyField(serializedObject.FindProperty("noSound")));
|
root.Add(new PropertyField(serializedObject.FindProperty("noSound")));
|
||||||
|
root.Add(new PropertyField(serializedObject.FindProperty("isRewarded")));
|
||||||
root.Add(new PropertyField(serializedObject.FindProperty("overrideClickSound")));
|
root.Add(new PropertyField(serializedObject.FindProperty("overrideClickSound")));
|
||||||
root.Add(new PropertyField(serializedObject.FindProperty("overrideAnimatorController")));
|
root.Add(new PropertyField(serializedObject.FindProperty("overrideAnimatorController")));
|
||||||
|
|
||||||
|
|||||||
93
Assets/WordConnectGameToolkit/Scripts/Editor/PopupPreview.cs
Normal file
93
Assets/WordConnectGameToolkit/Scripts/Editor/PopupPreview.cs
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
public class PopupPreview : EditorWindow
|
||||||
|
{
|
||||||
|
private GameObject[] prefabs;
|
||||||
|
private int currentIndex = 0;
|
||||||
|
private GameObject currentInstance;
|
||||||
|
|
||||||
|
[MenuItem("Tools/Prefab Batch Viewer")]
|
||||||
|
public static void ShowWindow()
|
||||||
|
{
|
||||||
|
GetWindow<PopupPreview>("Prefab Batch Viewer");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
string path = "Assets/WordConnectGameToolkit/Resources/Popups";
|
||||||
|
string[] prefabPaths = Directory.GetFiles(path, "*.prefab", SearchOption.AllDirectories);
|
||||||
|
prefabs = prefabPaths
|
||||||
|
.Select(p => AssetDatabase.LoadAssetAtPath<GameObject>(p))
|
||||||
|
.Where(p => p != null)
|
||||||
|
.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGUI()
|
||||||
|
{
|
||||||
|
if (prefabs == null || prefabs.Length == 0)
|
||||||
|
{
|
||||||
|
EditorGUILayout.LabelField("No prefabs found in Resources/Popups.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.LabelField($"Prefab {currentIndex + 1}/{prefabs.Length}", EditorStyles.boldLabel);
|
||||||
|
EditorGUILayout.ObjectField("Current Prefab", prefabs[currentIndex], typeof(GameObject), false);
|
||||||
|
|
||||||
|
GUILayout.Space(10);
|
||||||
|
|
||||||
|
EditorGUILayout.BeginHorizontal();
|
||||||
|
if (GUILayout.Button("Previous"))
|
||||||
|
{
|
||||||
|
ShowPreviousPrefab();
|
||||||
|
}
|
||||||
|
if (GUILayout.Button("Next"))
|
||||||
|
{
|
||||||
|
ShowNextPrefab();
|
||||||
|
}
|
||||||
|
EditorGUILayout.EndHorizontal();
|
||||||
|
|
||||||
|
GUILayout.Space(10);
|
||||||
|
|
||||||
|
if (currentInstance == null)
|
||||||
|
{
|
||||||
|
if (GUILayout.Button("Instantiate in Scene"))
|
||||||
|
{
|
||||||
|
InstantiateCurrentPrefab();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (GUILayout.Button("Remove Instance"))
|
||||||
|
{
|
||||||
|
DestroyImmediate(currentInstance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ShowPreviousPrefab()
|
||||||
|
{
|
||||||
|
currentIndex = (currentIndex - 1 + prefabs.Length) % prefabs.Length;
|
||||||
|
InstantiateCurrentPrefab();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ShowNextPrefab()
|
||||||
|
{
|
||||||
|
currentIndex = (currentIndex + 1) % prefabs.Length;
|
||||||
|
InstantiateCurrentPrefab();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InstantiateCurrentPrefab()
|
||||||
|
{
|
||||||
|
if (currentInstance != null)
|
||||||
|
{
|
||||||
|
DestroyImmediate(currentInstance);
|
||||||
|
}
|
||||||
|
|
||||||
|
currentInstance = (GameObject)PrefabUtility.InstantiatePrefab(prefabs[currentIndex]);
|
||||||
|
currentInstance.name = prefabs[currentIndex].name + "_Preview";
|
||||||
|
Selection.activeGameObject = currentInstance;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 599a70f1dde3c4f8b879a52397f2416e
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -23,6 +23,7 @@ namespace WordsToolkit.Scripts.Editor
|
|||||||
private static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
|
private static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
|
||||||
{
|
{
|
||||||
CheckDefines("Assets/GoogleMobileAds", "ADMOB");
|
CheckDefines("Assets/GoogleMobileAds", "ADMOB");
|
||||||
|
CheckUMPAvailable();
|
||||||
CheckDefines("Assets/FacebookSDK", "FACEBOOK");
|
CheckDefines("Assets/FacebookSDK", "FACEBOOK");
|
||||||
CheckDefines("Assets/PlayFabSDK", "PLAYFAB");
|
CheckDefines("Assets/PlayFabSDK", "PLAYFAB");
|
||||||
CheckDefines("Assets/GameSparks", "GAMESPARKS");
|
CheckDefines("Assets/GameSparks", "GAMESPARKS");
|
||||||
@ -41,6 +42,18 @@ namespace WordsToolkit.Scripts.Editor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void CheckUMPAvailable()
|
||||||
|
{
|
||||||
|
if (( Directory.Exists("Assets/GoogleMobileAds")))
|
||||||
|
{
|
||||||
|
DefineSymbolsUtils.AddSymbol("UMP_AVAILABLE");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DefineSymbolsUtils.DeleteSymbol("UMP_AVAILABLE");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void CheckIronsourceFolder()
|
public static void CheckIronsourceFolder()
|
||||||
{
|
{
|
||||||
var str = "Assets/LevelPlay";
|
var str = "Assets/LevelPlay";
|
||||||
|
|||||||
@ -34,7 +34,9 @@ namespace WordsToolkit.Scripts.GUI.Buttons.Boosts
|
|||||||
|
|
||||||
private CanvasGroup canvasGroup;
|
private CanvasGroup canvasGroup;
|
||||||
private bool isActive;
|
private bool isActive;
|
||||||
|
private bool isAnimating;
|
||||||
|
|
||||||
|
protected override bool ShouldShowRewarded() => isRewarded && resourseToHoldBoost.GetValue() == 0;
|
||||||
|
|
||||||
protected override void OnEnable()
|
protected override void OnEnable()
|
||||||
{
|
{
|
||||||
@ -69,6 +71,11 @@ namespace WordsToolkit.Scripts.GUI.Buttons.Boosts
|
|||||||
priceObject.gameObject.SetActive(false);
|
priceObject.gameObject.SetActive(false);
|
||||||
countText.text = resourseToHoldBoost.GetValue().ToString();
|
countText.text = resourseToHoldBoost.GetValue().ToString();
|
||||||
}
|
}
|
||||||
|
else if (ShouldShowRewarded())
|
||||||
|
{
|
||||||
|
countTextObject.gameObject.SetActive(false);
|
||||||
|
priceObject.gameObject.SetActive(false);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
countTextObject.gameObject.SetActive(false);
|
countTextObject.gameObject.SetActive(false);
|
||||||
@ -79,6 +86,12 @@ namespace WordsToolkit.Scripts.GUI.Buttons.Boosts
|
|||||||
|
|
||||||
protected void OnClick()
|
protected void OnClick()
|
||||||
{
|
{
|
||||||
|
// Prevent clicks during animation
|
||||||
|
if (isAnimating)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (isActive)
|
if (isActive)
|
||||||
{
|
{
|
||||||
Refund();
|
Refund();
|
||||||
@ -89,6 +102,10 @@ namespace WordsToolkit.Scripts.GUI.Buttons.Boosts
|
|||||||
{
|
{
|
||||||
ActivateBoost();
|
ActivateBoost();
|
||||||
}
|
}
|
||||||
|
else if (ShouldShowRewarded())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
// If not, consume from the regular resource
|
// If not, consume from the regular resource
|
||||||
else if (resourceManager.ConsumeWithEffects(resourceToPay, count))
|
else if (resourceManager.ConsumeWithEffects(resourceToPay, count))
|
||||||
{
|
{
|
||||||
@ -103,8 +120,16 @@ namespace WordsToolkit.Scripts.GUI.Buttons.Boosts
|
|||||||
UpdatePriceDisplay();
|
UpdatePriceDisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void ExecuteEvent()
|
||||||
|
{
|
||||||
|
if(isRewarded)
|
||||||
|
resourseToHoldBoost.Add(1);
|
||||||
|
base.ExecuteEvent();
|
||||||
|
}
|
||||||
|
|
||||||
protected virtual void ActivateBoost(bool hideButtons = true)
|
protected virtual void ActivateBoost(bool hideButtons = true)
|
||||||
{
|
{
|
||||||
|
isAnimating = true;
|
||||||
UpdatePriceDisplay();
|
UpdatePriceDisplay();
|
||||||
if(hideButtons)
|
if(hideButtons)
|
||||||
buttonViewController.HideOtherButtons(this);
|
buttonViewController.HideOtherButtons(this);
|
||||||
@ -117,6 +142,7 @@ namespace WordsToolkit.Scripts.GUI.Buttons.Boosts
|
|||||||
protected virtual void DeactivateBoost()
|
protected virtual void DeactivateBoost()
|
||||||
{
|
{
|
||||||
isActive = false;
|
isActive = false;
|
||||||
|
isAnimating = false;
|
||||||
buttonViewController.ShowButtons();
|
buttonViewController.ShowButtons();
|
||||||
waves.Clear();
|
waves.Clear();
|
||||||
waves.Stop();
|
waves.Stop();
|
||||||
|
|||||||
@ -17,6 +17,8 @@ using UnityEngine.UI;
|
|||||||
using VContainer;
|
using VContainer;
|
||||||
using WordsToolkit.Scripts.Audio;
|
using WordsToolkit.Scripts.Audio;
|
||||||
using WordsToolkit.Scripts.Enums;
|
using WordsToolkit.Scripts.Enums;
|
||||||
|
using WordsToolkit.Scripts.Popups.Reward;
|
||||||
|
using WordsToolkit.Scripts.Services.Ads.AdUnits;
|
||||||
using WordsToolkit.Scripts.System;
|
using WordsToolkit.Scripts.System;
|
||||||
using WordsToolkit.Scripts.System.Haptic;
|
using WordsToolkit.Scripts.System.Haptic;
|
||||||
|
|
||||||
@ -32,31 +34,48 @@ namespace WordsToolkit.Scripts.GUI.Buttons
|
|||||||
public new ButtonClickedEvent onClick;
|
public new ButtonClickedEvent onClick;
|
||||||
private new Animator animator;
|
private new Animator animator;
|
||||||
public bool noSound;
|
public bool noSound;
|
||||||
|
public bool isRewarded;
|
||||||
|
private RewardedButtonHandler handler;
|
||||||
|
private PointerEventData currentEventData;
|
||||||
|
|
||||||
private static bool blockInput;
|
private static bool blockInput;
|
||||||
|
|
||||||
|
protected virtual bool ShouldShowRewarded() => isRewarded;
|
||||||
|
|
||||||
public static CustomButton latestClickedButton;
|
public static CustomButton latestClickedButton;
|
||||||
private IAudioService audioService;
|
private IAudioService audioService;
|
||||||
|
private IObjectResolver objectResolver;
|
||||||
[Inject]
|
[Inject]
|
||||||
public void Construct(IAudioService audioService)
|
public void Construct(IAudioService audioService, IObjectResolver objectResolver)
|
||||||
{
|
{
|
||||||
this.audioService = audioService;
|
this.audioService = audioService;
|
||||||
|
this.objectResolver = objectResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnEnable()
|
protected override void OnEnable()
|
||||||
{
|
{
|
||||||
isClicked = false;
|
isClicked = false;
|
||||||
// run only in runtime
|
if (ShouldShowRewarded() && !GetComponent<RewardedButtonHandler>() && Application.isPlaying)
|
||||||
|
{
|
||||||
|
handler = gameObject.AddComponent<RewardedButtonHandler>();
|
||||||
|
objectResolver.Inject(handler);
|
||||||
|
var adReference = UnityEditor.AssetDatabase.LoadAssetAtPath<AdReference>("Assets/WordConnectGameToolkit/Prefabs/ScriptableAds/AdsTypes/Rewarded.asset");
|
||||||
|
handler.adReference = adReference;
|
||||||
|
handler.onRewardedAdComplete = new UnityEngine.Events.UnityEvent();
|
||||||
|
handler.onRewardedAdComplete.AddListener(ExecuteEvent);
|
||||||
|
}
|
||||||
if (Application.isEditor)
|
if (Application.isEditor)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
base.OnEnable();
|
base.OnEnable();
|
||||||
animator = GetComponent<Animator>();
|
animator = GetComponent<Animator>();
|
||||||
if (overrideAnimatorController != null)
|
if (overrideAnimatorController != null)
|
||||||
{
|
{
|
||||||
animator.runtimeAnimatorController = overrideAnimatorController;
|
animator.runtimeAnimatorController = overrideAnimatorController;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnPointerClick(PointerEventData eventData)
|
public override void OnPointerClick(PointerEventData eventData)
|
||||||
@ -66,6 +85,17 @@ namespace WordsToolkit.Scripts.GUI.Buttons
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
currentEventData = eventData;
|
||||||
|
|
||||||
|
if (ShouldShowRewarded())
|
||||||
|
{
|
||||||
|
if (handler != null)
|
||||||
|
{
|
||||||
|
handler.ShowRewardedAd();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (transition != Transition.Animation)
|
if (transition != Transition.Animation)
|
||||||
{
|
{
|
||||||
Pressed();
|
Pressed();
|
||||||
@ -75,7 +105,6 @@ namespace WordsToolkit.Scripts.GUI.Buttons
|
|||||||
if(!noSound)
|
if(!noSound)
|
||||||
audioService.PlayClick(overrideClickSound);
|
audioService.PlayClick(overrideClickSound);
|
||||||
HapticFeedback.TriggerHapticFeedback(HapticFeedback.HapticForce.Light);
|
HapticFeedback.TriggerHapticFeedback(HapticFeedback.HapticForce.Light);
|
||||||
// Start cooldown
|
|
||||||
if (gameObject.activeInHierarchy)
|
if (gameObject.activeInHierarchy)
|
||||||
{
|
{
|
||||||
StartCoroutine(Cooldown());
|
StartCoroutine(Cooldown());
|
||||||
@ -91,8 +120,23 @@ namespace WordsToolkit.Scripts.GUI.Buttons
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
latestClickedButton = this;
|
latestClickedButton = this;
|
||||||
|
if (ShouldShowRewarded())
|
||||||
|
{
|
||||||
|
if (handler != null)
|
||||||
|
{
|
||||||
|
handler.ShowRewardedAd();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ExecuteEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void ExecuteEvent()
|
||||||
|
{
|
||||||
onClick?.Invoke();
|
onClick?.Invoke();
|
||||||
EventManager.GetEvent<CustomButton>(EGameEvent.ButtonClicked).Invoke(this);
|
EventManager.GetEvent<CustomButton>(EGameEvent.ButtonClicked).Invoke(this);
|
||||||
|
base.onClick?.Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerator Cooldown()
|
private IEnumerator Cooldown()
|
||||||
|
|||||||
@ -0,0 +1,17 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using WordsToolkit.Scripts.Settings;
|
||||||
|
|
||||||
|
namespace WordsToolkit.Scripts.GUI.Labels
|
||||||
|
{
|
||||||
|
public class IAPDisabler : MonoBehaviour
|
||||||
|
{
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
var gameSettings = Resources.Load<GameSettings>("Settings/GameSettings");
|
||||||
|
if (gameSettings != null && !gameSettings.enableInApps)
|
||||||
|
{
|
||||||
|
gameObject.SetActive(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c9c6b14262f434e07ad593f7b28fbfba
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -10,6 +10,7 @@
|
|||||||
// // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
// // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
// // THE SOFTWARE.
|
// // THE SOFTWARE.
|
||||||
|
|
||||||
|
using DG.Tweening;
|
||||||
using TMPro;
|
using TMPro;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using VContainer;
|
using VContainer;
|
||||||
@ -65,11 +66,7 @@ namespace WordsToolkit.Scripts.GUI
|
|||||||
|
|
||||||
public void ShowLanguageSelector()
|
public void ShowLanguageSelector()
|
||||||
{
|
{
|
||||||
menuManager.CloseAllPopups();
|
menuManager.ShowPopup<LanguageSelectionGame>(null, result => { UpdateText(); });
|
||||||
menuManager.ShowPopup<LanguageSelectionGame>(null, result =>
|
|
||||||
{
|
|
||||||
UpdateText();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -23,12 +23,6 @@ namespace WordsToolkit.Scripts.GUI.Tutorials
|
|||||||
{
|
{
|
||||||
public class TutorialWordSubstitution : TutorialPopupBase
|
public class TutorialWordSubstitution : TutorialPopupBase
|
||||||
{
|
{
|
||||||
[Inject]
|
|
||||||
protected LevelManager levelManager;
|
|
||||||
|
|
||||||
[Inject]
|
|
||||||
protected GameManager gameManager;
|
|
||||||
|
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
private GameObject hand;
|
private GameObject hand;
|
||||||
|
|
||||||
|
|||||||
@ -28,6 +28,7 @@ namespace WordsToolkit.Scripts.Gameplay
|
|||||||
private WordSelectionManager wordSelectionManager;
|
private WordSelectionManager wordSelectionManager;
|
||||||
private bool isSelected = false;
|
private bool isSelected = false;
|
||||||
private Color color;
|
private Color color;
|
||||||
|
private string originalLetter; // Store the original letter for validation
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
@ -74,12 +75,13 @@ namespace WordsToolkit.Scripts.Gameplay
|
|||||||
|
|
||||||
public string GetLetter()
|
public string GetLetter()
|
||||||
{
|
{
|
||||||
return letterText.text;
|
return originalLetter ?? letterText.text;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetText(string toString)
|
public void SetText(string toString)
|
||||||
{
|
{
|
||||||
letterText.text = toString.ToUpper();
|
originalLetter = toString; // Store the original letter
|
||||||
|
letterText.text = toString.ToUpper(); // Display in uppercase
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetColor(Color color)
|
public void SetColor(Color color)
|
||||||
|
|||||||
@ -523,7 +523,7 @@ namespace WordsToolkit.Scripts.Gameplay.Managers
|
|||||||
if (string.IsNullOrEmpty(word))
|
if (string.IsNullOrEmpty(word))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!wordValidator.IsWordKnown(word.ToLower(), gameStateManager.CurrentLanguage))
|
if (!wordValidator.IsWordKnown(word, gameStateManager.CurrentLanguage))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
bool wasOpened = false;
|
bool wasOpened = false;
|
||||||
|
|||||||
@ -37,7 +37,6 @@ namespace WordsToolkit.Scripts.Gameplay
|
|||||||
private Color[] openColors = new Color[3];
|
private Color[] openColors = new Color[3];
|
||||||
|
|
||||||
private bool isSelected = false;
|
private bool isSelected = false;
|
||||||
private int wordNumber = -1;
|
|
||||||
private bool isOpen = false;
|
private bool isOpen = false;
|
||||||
|
|
||||||
[Header("Special Item")]
|
[Header("Special Item")]
|
||||||
@ -321,6 +320,8 @@ namespace WordsToolkit.Scripts.Gameplay
|
|||||||
// Only respond if the tile is selectable and closed
|
// Only respond if the tile is selectable and closed
|
||||||
if (!isOpen && levelManager != null && levelManager.hammerMode)
|
if (!isOpen && levelManager != null && levelManager.hammerMode)
|
||||||
{
|
{
|
||||||
|
// Immediately disable hammer mode to prevent multiple uses
|
||||||
|
levelManager.hammerMode = false;
|
||||||
// Instead of opening immediately, play hammer animation first
|
// Instead of opening immediately, play hammer animation first
|
||||||
PlayHammerAnimationAndOpen();
|
PlayHammerAnimationAndOpen();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -42,7 +42,6 @@ namespace WordsToolkit.Scripts.Gameplay
|
|||||||
private float idleTimer = 0f;
|
private float idleTimer = 0f;
|
||||||
private Vector2 lastPosition;
|
private Vector2 lastPosition;
|
||||||
public Image cursorImage; // Reference to cursor image
|
public Image cursorImage; // Reference to cursor image
|
||||||
private bool isCursorVisible = true;
|
|
||||||
private float targetAlpha;
|
private float targetAlpha;
|
||||||
private float currentAlpha;
|
private float currentAlpha;
|
||||||
|
|
||||||
|
|||||||
@ -66,7 +66,6 @@ namespace WordsToolkit.Scripts.Gameplay
|
|||||||
private CanvasGroup panelCanvasGroup;
|
private CanvasGroup panelCanvasGroup;
|
||||||
|
|
||||||
[Header("UI References")]
|
[Header("UI References")]
|
||||||
[SerializeField] private float characterSpacing = 30f; // Spacing between characters
|
|
||||||
public Image backgroundSelectedWord; // Reference to the background image
|
public Image backgroundSelectedWord; // Reference to the background image
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
private TextMeshProUGUI selectedWordText;
|
private TextMeshProUGUI selectedWordText;
|
||||||
@ -463,7 +462,7 @@ namespace WordsToolkit.Scripts.Gameplay
|
|||||||
if (selectedWordText != null)
|
if (selectedWordText != null)
|
||||||
{
|
{
|
||||||
selectedWordText.color = new Color(selectedWordText.color.r, selectedWordText.color.g, selectedWordText.color.b, 1f);
|
selectedWordText.color = new Color(selectedWordText.color.r, selectedWordText.color.g, selectedWordText.color.b, 1f);
|
||||||
selectedWordText.text = GetSelectedWord();
|
selectedWordText.text = GetSelectedWord().ToUpper();
|
||||||
UpdateHorizontalLayout(layout);
|
UpdateHorizontalLayout(layout);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,7 +33,6 @@ namespace WordsToolkit.Scripts.Gameplay.WordValidator
|
|||||||
if (string.IsNullOrEmpty(word))
|
if (string.IsNullOrEmpty(word))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
word = word.ToLower();
|
|
||||||
return (modelController != null && modelController.IsWordKnown(word, currentLanguage)) ||
|
return (modelController != null && modelController.IsWordKnown(word, currentLanguage)) ||
|
||||||
(customWordRepository != null && customWordRepository.ContainsWord(word));
|
(customWordRepository != null && customWordRepository.ContainsWord(word));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -721,17 +721,27 @@ namespace WordsToolkit.Scripts.Levels.Editor
|
|||||||
// Handle selection from LevelHierarchyTreeView
|
// Handle selection from LevelHierarchyTreeView
|
||||||
if (selectedItem != null && selectedItem.type == LevelHierarchyItem.ItemType.Level && selectedItem.levelAsset != null)
|
if (selectedItem != null && selectedItem.type == LevelHierarchyItem.ItemType.Level && selectedItem.levelAsset != null)
|
||||||
{
|
{
|
||||||
// Try to find any available language data in the level
|
// Use the same language selection logic as the "Open Grid" button
|
||||||
string foundLanguage = FindAvailableLanguage(selectedItem.levelAsset);
|
// This preserves the user's currently selected language tab
|
||||||
|
string languageCode = LevelEditorUtility.GetLanguageCodeForLevel(selectedItem.levelAsset);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(foundLanguage))
|
if (!string.IsNullOrEmpty(languageCode))
|
||||||
{
|
{
|
||||||
SetCurrentLevel(selectedItem.levelAsset, foundLanguage);
|
SetCurrentLevel(selectedItem.levelAsset, languageCode);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Set the level anyway but with a default language
|
// Fallback: try to find any available language data in the level
|
||||||
SetCurrentLevel(selectedItem.levelAsset, "en");
|
string foundLanguage = FindAvailableLanguage(selectedItem.levelAsset);
|
||||||
|
if (!string.IsNullOrEmpty(foundLanguage))
|
||||||
|
{
|
||||||
|
SetCurrentLevel(selectedItem.levelAsset, foundLanguage);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Set the level anyway but with a default language
|
||||||
|
SetCurrentLevel(selectedItem.levelAsset, "en");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (selectedItem == null || selectedItem.type != LevelHierarchyItem.ItemType.Level)
|
else if (selectedItem == null || selectedItem.type != LevelHierarchyItem.ItemType.Level)
|
||||||
@ -767,13 +777,25 @@ namespace WordsToolkit.Scripts.Levels.Editor
|
|||||||
Level latestLevel = AssetDatabase.LoadAssetAtPath<Level>(path);
|
Level latestLevel = AssetDatabase.LoadAssetAtPath<Level>(path);
|
||||||
if (latestLevel != null)
|
if (latestLevel != null)
|
||||||
{
|
{
|
||||||
string foundLanguage = FindAvailableLanguage(latestLevel);
|
// Use the same language selection logic as the rest of the system
|
||||||
if (!string.IsNullOrEmpty(foundLanguage))
|
string languageCode = LevelEditorUtility.GetLanguageCodeForLevel(latestLevel);
|
||||||
|
if (!string.IsNullOrEmpty(languageCode))
|
||||||
{
|
{
|
||||||
SetCurrentLevel(latestLevel, foundLanguage);
|
SetCurrentLevel(latestLevel, languageCode);
|
||||||
Debug.Log($"CrosswordGridWindow: Loaded latest level '{latestLevel.name}' with language '{foundLanguage}' from EditorPrefs");
|
Debug.Log($"CrosswordGridWindow: Loaded latest level '{latestLevel.name}' with language '{languageCode}' from EditorPrefs");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Fallback
|
||||||
|
string foundLanguage = FindAvailableLanguage(latestLevel);
|
||||||
|
if (!string.IsNullOrEmpty(foundLanguage))
|
||||||
|
{
|
||||||
|
SetCurrentLevel(latestLevel, foundLanguage);
|
||||||
|
Debug.Log($"CrosswordGridWindow: Loaded latest level '{latestLevel.name}' with fallback language '{foundLanguage}' from EditorPrefs");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -784,17 +806,26 @@ namespace WordsToolkit.Scripts.Levels.Editor
|
|||||||
Level selectedLevel = Selection.activeObject as Level;
|
Level selectedLevel = Selection.activeObject as Level;
|
||||||
if (selectedLevel != null)
|
if (selectedLevel != null)
|
||||||
{
|
{
|
||||||
// Try to find any available language data in the level
|
// Use the same language selection logic as the rest of the system
|
||||||
string foundLanguage = FindAvailableLanguage(selectedLevel);
|
string languageCode = LevelEditorUtility.GetLanguageCodeForLevel(selectedLevel);
|
||||||
|
if (!string.IsNullOrEmpty(languageCode))
|
||||||
if (!string.IsNullOrEmpty(foundLanguage))
|
|
||||||
{
|
{
|
||||||
SetCurrentLevel(selectedLevel, foundLanguage);
|
SetCurrentLevel(selectedLevel, languageCode);
|
||||||
Debug.Log($"CrosswordGridWindow: Loaded level '{selectedLevel.name}' with language '{foundLanguage}' from project selection");
|
Debug.Log($"CrosswordGridWindow: Loaded level '{selectedLevel.name}' with language '{languageCode}' from project selection");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Debug.LogWarning($"Level '{selectedLevel.name}' has no language data available.");
|
// Fallback
|
||||||
|
string foundLanguage = FindAvailableLanguage(selectedLevel);
|
||||||
|
if (!string.IsNullOrEmpty(foundLanguage))
|
||||||
|
{
|
||||||
|
SetCurrentLevel(selectedLevel, foundLanguage);
|
||||||
|
Debug.Log($"CrosswordGridWindow: Loaded level '{selectedLevel.name}' with fallback language '{foundLanguage}' from project selection");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"Level '{selectedLevel.name}' has no language data available.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -823,23 +854,30 @@ namespace WordsToolkit.Scripts.Levels.Editor
|
|||||||
|
|
||||||
private string FindAvailableLanguage(Level level)
|
private string FindAvailableLanguage(Level level)
|
||||||
{
|
{
|
||||||
if (level == null) return null;
|
if (level == null || level.languages == null || level.languages.Count == 0)
|
||||||
|
return null;
|
||||||
|
|
||||||
// Try common language codes in order of preference
|
// First, try to use the currently selected language tab (same as LevelEditorUtility.GetLanguageCodeForLevel)
|
||||||
string[] languageCodes = { "en", "eng", "english", "en-US", "en-GB", "es", "fr", "de", "ru", "zh" };
|
int selectedTabIndex = EditorPrefs.GetInt("WordsToolkit_SelectedLanguageTab", 0);
|
||||||
|
if (selectedTabIndex >= 0 && selectedTabIndex < level.languages.Count)
|
||||||
foreach (string code in languageCodes)
|
|
||||||
{
|
{
|
||||||
var languageData = level.GetLanguageData(code);
|
var selectedLanguage = level.languages[selectedTabIndex];
|
||||||
if (languageData != null)
|
if (selectedLanguage != null && !string.IsNullOrEmpty(selectedLanguage.language))
|
||||||
{
|
{
|
||||||
return code;
|
return selectedLanguage.language;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fallback: return the first available language
|
||||||
|
for (int i = 0; i < level.languages.Count; i++)
|
||||||
|
{
|
||||||
|
var languageData = level.languages[i];
|
||||||
|
if (languageData != null && !string.IsNullOrEmpty(languageData.language))
|
||||||
|
{
|
||||||
|
return languageData.language;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If no common languages found, this would require reflection or other means
|
|
||||||
// to get all available languages from the Level object
|
|
||||||
// For now, we'll return null and let the user manually specify
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -851,19 +889,28 @@ namespace WordsToolkit.Scripts.Levels.Editor
|
|||||||
Level selectedLevel = Selection.activeObject as Level;
|
Level selectedLevel = Selection.activeObject as Level;
|
||||||
if (selectedLevel != null)
|
if (selectedLevel != null)
|
||||||
{
|
{
|
||||||
// Try to find any available language data in the level
|
// Use the same language selection logic as the rest of the system
|
||||||
string foundLanguage = FindAvailableLanguage(selectedLevel);
|
string languageCode = LevelEditorUtility.GetLanguageCodeForLevel(selectedLevel);
|
||||||
|
if (!string.IsNullOrEmpty(languageCode))
|
||||||
if (!string.IsNullOrEmpty(foundLanguage))
|
|
||||||
{
|
{
|
||||||
SetCurrentLevel(selectedLevel, foundLanguage);
|
SetCurrentLevel(selectedLevel, languageCode);
|
||||||
Debug.Log($"Loaded level: {selectedLevel.name} with language: {foundLanguage}");
|
Debug.Log($"Loaded level: {selectedLevel.name} with language: {languageCode}");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Set the level anyway but with a default language
|
// Fallback: try to find any available language data in the level
|
||||||
SetCurrentLevel(selectedLevel, "en");
|
string foundLanguage = FindAvailableLanguage(selectedLevel);
|
||||||
Debug.LogWarning($"Level '{selectedLevel.name}' has no language data. Using default language 'en'.");
|
if (!string.IsNullOrEmpty(foundLanguage))
|
||||||
|
{
|
||||||
|
SetCurrentLevel(selectedLevel, foundLanguage);
|
||||||
|
Debug.Log($"Loaded level: {selectedLevel.name} with fallback language: {foundLanguage}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Set the level anyway but with a default language
|
||||||
|
SetCurrentLevel(selectedLevel, "en");
|
||||||
|
Debug.LogWarning($"Level '{selectedLevel.name}' has no language data. Using default language 'en'.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1026,145 +1073,139 @@ namespace WordsToolkit.Scripts.Levels.Editor
|
|||||||
|
|
||||||
// Bind letters field (TextField with label)
|
// Bind letters field (TextField with label)
|
||||||
var lettersField = paletteRoot.Q<TextField>("letters-field");
|
var lettersField = paletteRoot.Q<TextField>("letters-field");
|
||||||
if (lettersField != null)
|
var initialValue = languageData.letters ?? "";
|
||||||
|
lettersField.RegisterValueChangedCallback(evt =>
|
||||||
{
|
{
|
||||||
var initialValue = languageData.letters ?? "";
|
// Don't trigger on initial setup (when previous value is empty and new value matches initial data)
|
||||||
lettersField.RegisterValueChangedCallback(evt =>
|
if (evt.newValue != evt.previousValue &&
|
||||||
|
!(string.IsNullOrEmpty(evt.previousValue) && evt.newValue == initialValue))
|
||||||
{
|
{
|
||||||
// Don't trigger on initial setup (when previous value is empty and new value matches initial data)
|
// Record undo before changing letters
|
||||||
if (evt.newValue != evt.previousValue &&
|
if (_currentLevel != null)
|
||||||
!(string.IsNullOrEmpty(evt.previousValue) && evt.newValue == initialValue))
|
|
||||||
{
|
{
|
||||||
// Record undo before changing letters
|
// Ensure grid data is serialized before recording undo
|
||||||
if (_currentLevel != null)
|
var langData = _currentLevel.GetLanguageData(_currentLanguageCode);
|
||||||
|
if (langData?.crosswordData != null)
|
||||||
{
|
{
|
||||||
// Ensure grid data is serialized before recording undo
|
langData.crosswordData.SerializeGrid();
|
||||||
var langData = _currentLevel.GetLanguageData(_currentLanguageCode);
|
|
||||||
if (langData?.crosswordData != null)
|
|
||||||
{
|
|
||||||
langData.crosswordData.SerializeGrid();
|
|
||||||
}
|
|
||||||
|
|
||||||
Undo.RecordObject(_currentLevel, "Change Letters");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
languageData.letters = evt.newValue;
|
Undo.RecordObject(_currentLevel, "Change Letters");
|
||||||
var lettersLength = paletteRoot.Q<IntegerField>("letters-length");
|
|
||||||
if (lettersLength != null)
|
|
||||||
{
|
|
||||||
lettersLength.value = evt.newValue?.Length ?? 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
_currentLevel.letters = evt.newValue?.Length ?? 0;
|
|
||||||
EditorUtility.SetDirty(_currentLevel);
|
|
||||||
|
|
||||||
// Generate new words for the updated letters
|
|
||||||
if (!string.IsNullOrEmpty(evt.newValue))
|
|
||||||
{
|
|
||||||
LevelDataEditor.UpdateAvailableWordsForLevel(_currentLevel);
|
|
||||||
RefreshPreviewData();
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdateGridDisplay();
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
lettersField.value = initialValue;
|
languageData.letters = evt.newValue;
|
||||||
}
|
var lettersLength = paletteRoot.Q<IntegerField>("letters-length");
|
||||||
|
if (lettersLength != null)
|
||||||
|
{
|
||||||
|
lettersLength.value = evt.newValue?.Length ?? 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
_currentLevel.letters = evt.newValue?.Length ?? 0;
|
||||||
|
EditorUtility.SetDirty(_currentLevel);
|
||||||
|
|
||||||
|
// Generate new words for the updated letters
|
||||||
|
if (!string.IsNullOrEmpty(evt.newValue))
|
||||||
|
{
|
||||||
|
LevelDataEditor.UpdateAvailableWordsForLevel(_currentLevel);
|
||||||
|
RefreshPreviewData();
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdateGridDisplay();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
lettersField.value = initialValue;
|
||||||
|
|
||||||
// Bind letters length field
|
// Bind letters length field
|
||||||
var lettersLength = paletteRoot.Q<TextField>("letters-length");
|
var lettersLength = paletteRoot.Q<TextField>("letters-length");
|
||||||
if (lettersLength != null)
|
lettersLength.value = _currentLevel.letters.ToString();
|
||||||
|
lettersLength.RegisterValueChangedCallback(evt =>
|
||||||
{
|
{
|
||||||
lettersLength.value = _currentLevel.letters.ToString();
|
if (int.TryParse(evt.newValue, out int value))
|
||||||
lettersLength.RegisterValueChangedCallback(evt =>
|
|
||||||
{
|
{
|
||||||
if (int.TryParse(evt.newValue, out int value))
|
_currentLevel.letters = value;
|
||||||
{
|
EditorUtility.SetDirty(_currentLevel);
|
||||||
_currentLevel.letters = value;
|
EditorPrefs.SetInt("WordsToolkit_LettersAmount", value);
|
||||||
EditorUtility.SetDirty(_currentLevel);
|
}
|
||||||
EditorPrefs.SetInt("WordsToolkit_LettersAmount", value);
|
});
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
var generateLettersCheck = paletteRoot.Q<Toggle>("generate-letters-check");
|
||||||
|
generateLettersCheck.value = EditorPrefs.GetBool("WordsToolkit_GenerateLetters", true);
|
||||||
|
generateLettersCheck.RegisterValueChangedCallback(evt => {
|
||||||
|
if (_currentLevel != null)
|
||||||
|
{
|
||||||
|
EditorUtility.SetDirty(_currentLevel);
|
||||||
|
EditorPrefs.SetBool("WordsToolkit_GenerateLetters", evt.newValue);
|
||||||
|
}
|
||||||
|
});
|
||||||
// Bind generate button
|
// Bind generate button
|
||||||
var generateButton = paletteRoot.Q<Button>("generate-button");
|
var generateButton = paletteRoot.Q<Button>("generate-button");
|
||||||
if (generateButton != null)
|
generateButton.clicked += () => {
|
||||||
{
|
if (_currentLevel != null && languageData != null)
|
||||||
generateButton.clicked += () => {
|
{
|
||||||
if (_currentLevel != null && languageData != null)
|
// Record undo before generating new letters
|
||||||
|
if (_currentLevel != null)
|
||||||
{
|
{
|
||||||
// Record undo before generating new letters
|
// Ensure grid data is serialized before recording undo
|
||||||
if (_currentLevel != null)
|
var langData = _currentLevel.GetLanguageData(_currentLanguageCode);
|
||||||
|
if (langData?.crosswordData != null)
|
||||||
{
|
{
|
||||||
// Ensure grid data is serialized before recording undo
|
langData.crosswordData.SerializeGrid();
|
||||||
var langData = _currentLevel.GetLanguageData(_currentLanguageCode);
|
|
||||||
if (langData?.crosswordData != null)
|
|
||||||
{
|
|
||||||
langData.crosswordData.SerializeGrid();
|
|
||||||
}
|
|
||||||
|
|
||||||
Undo.RecordObject(_currentLevel, "Generate Random Letters");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var modelController = EditorScope.Resolve<IModelController>();
|
Undo.RecordObject(_currentLevel, "Generate Random Letters");
|
||||||
string letters = LevelEditorServices.GenerateRandomLetters(languageData, languageData.wordsAmount, _currentLevel.letters);
|
|
||||||
languageData.letters = letters;
|
|
||||||
|
|
||||||
// Update the letters field in the UI
|
|
||||||
if (lettersField != null) lettersField.value = languageData.letters;
|
|
||||||
if (lettersLength != null) lettersLength.value = (languageData.letters?.Length ?? 0).ToString();
|
|
||||||
|
|
||||||
languageData.words = new string[0];
|
|
||||||
EditorUtility.SetDirty(_currentLevel);
|
|
||||||
LevelEditorServices.GenerateAvailableWords(_currentLevel, modelController, languageData);
|
|
||||||
UpdateCrossword(_currentLevel, languageData);
|
|
||||||
LevelDataEditor.NotifyWordsListNeedsUpdate(_currentLevel, languageData.language);
|
|
||||||
|
|
||||||
RefreshPreviewData();
|
|
||||||
UpdateLetterPalette();
|
|
||||||
UpdateGridDisplay();
|
|
||||||
UpdateStatusBar();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
|
||||||
}
|
var modelController = EditorScope.Resolve<IModelController>();
|
||||||
|
string letters = LevelEditorServices.GenerateRandomLetters(languageData, languageData.wordsAmount, _currentLevel.letters, generateLettersCheck.value );
|
||||||
|
languageData.letters = letters;
|
||||||
|
|
||||||
|
// Update the letters field in the UI
|
||||||
|
if (lettersField != null) lettersField.value = languageData.letters;
|
||||||
|
if (lettersLength != null) lettersLength.value = (languageData.letters?.Length ?? 0).ToString();
|
||||||
|
|
||||||
|
languageData.words = new string[0];
|
||||||
|
EditorUtility.SetDirty(_currentLevel);
|
||||||
|
LevelEditorServices.GenerateAvailableWords(_currentLevel, modelController, languageData);
|
||||||
|
UpdateCrossword(_currentLevel, languageData);
|
||||||
|
LevelDataEditor.NotifyWordsListNeedsUpdate(_currentLevel, languageData.language);
|
||||||
|
|
||||||
|
RefreshPreviewData();
|
||||||
|
UpdateLetterPalette();
|
||||||
|
UpdateGridDisplay();
|
||||||
|
UpdateStatusBar();
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// Bind grid size controls - columns field
|
// Bind grid size controls - columns field
|
||||||
var columnsField = paletteRoot.Q<TextField>("columns-field");
|
var columnsField = paletteRoot.Q<TextField>("columns-field");
|
||||||
if (columnsField != null)
|
columnsField.value = (_previewData?.columns ?? 10).ToString();
|
||||||
{
|
columnsField.RegisterValueChangedCallback(evt => {
|
||||||
columnsField.value = (_previewData?.columns ?? 10).ToString();
|
if (_previewData != null && int.TryParse(evt.newValue, out int value) && value >= 5 && value <= 50)
|
||||||
columnsField.RegisterValueChangedCallback(evt => {
|
{
|
||||||
if (_previewData != null && int.TryParse(evt.newValue, out int value) && value >= 5 && value <= 50)
|
_previewData.columns = value;
|
||||||
{
|
CrosswordPreviewHandler.SavePreviewToLevel(_currentLevel, _currentLanguageCode, _previewData);
|
||||||
_previewData.columns = value;
|
EditorUtility.SetDirty(_currentLevel);
|
||||||
CrosswordPreviewHandler.SavePreviewToLevel(_currentLevel, _currentLanguageCode, _previewData);
|
EditorPrefs.SetInt("WordsToolkit_grid_x", value);
|
||||||
EditorUtility.SetDirty(_currentLevel);
|
UpdateGridDisplay();
|
||||||
EditorPrefs.SetInt("WordsToolkit_grid_x", value);
|
UpdateStatusBar();
|
||||||
UpdateGridDisplay();
|
}
|
||||||
UpdateStatusBar();
|
});
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bind grid size controls - rows field
|
// Bind grid size controls - rows field
|
||||||
var rowsField = paletteRoot.Q<TextField>("rows-field");
|
var rowsField = paletteRoot.Q<TextField>("rows-field");
|
||||||
if (rowsField != null)
|
rowsField.value = (_previewData?.rows ?? 7).ToString();
|
||||||
{
|
rowsField.RegisterValueChangedCallback(evt => {
|
||||||
rowsField.value = (_previewData?.rows ?? 7).ToString();
|
if (_previewData != null && int.TryParse(evt.newValue, out int value) && value >= 5 && value <= 50)
|
||||||
rowsField.RegisterValueChangedCallback(evt => {
|
{
|
||||||
if (_previewData != null && int.TryParse(evt.newValue, out int value) && value >= 5 && value <= 50)
|
_previewData.rows = value;
|
||||||
{
|
CrosswordPreviewHandler.SavePreviewToLevel(_currentLevel, _currentLanguageCode, _previewData);
|
||||||
_previewData.rows = value;
|
EditorUtility.SetDirty(_currentLevel);
|
||||||
CrosswordPreviewHandler.SavePreviewToLevel(_currentLevel, _currentLanguageCode, _previewData);
|
EditorPrefs.SetInt("WordsToolkit_grid_y", value);
|
||||||
EditorUtility.SetDirty(_currentLevel);
|
UpdateGridDisplay();
|
||||||
EditorPrefs.SetInt("WordsToolkit_grid_y", value);
|
UpdateStatusBar();
|
||||||
UpdateGridDisplay();
|
}
|
||||||
UpdateStatusBar();
|
});
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bind Test Level button
|
// Bind Test Level button
|
||||||
var testLevelButton = paletteRoot.Q<Button>("test-level-button");
|
var testLevelButton = paletteRoot.Q<Button>("test-level-button");
|
||||||
@ -1319,8 +1360,11 @@ namespace WordsToolkit.Scripts.Levels.Editor
|
|||||||
if (_enableEditing && _currentLevel != null)
|
if (_enableEditing && _currentLevel != null)
|
||||||
{
|
{
|
||||||
var buttonsRow = CreateLetterButtonsRow();
|
var buttonsRow = CreateLetterButtonsRow();
|
||||||
buttonsRow.style.alignSelf = Align.FlexEnd;
|
if (buttonsRow != null)
|
||||||
letterButtonsContainer.Add(buttonsRow);
|
{
|
||||||
|
buttonsRow.style.alignSelf = Align.FlexEnd;
|
||||||
|
letterButtonsContainer.Add(buttonsRow);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -616,12 +616,16 @@ namespace WordsToolkit.Scripts.Levels.Editor
|
|||||||
|
|
||||||
if (candidate != null && candidate.isValid)
|
if (candidate != null && candidate.isValid)
|
||||||
{
|
{
|
||||||
|
// Check for problematic overlaps (both position overlaps and missing words)
|
||||||
|
bool hasProblematicOverlaps = LevelEditorServices.CheckForOverlappingWords(candidate.placements, wordsToUse);
|
||||||
|
|
||||||
// Create a string representation of the grid for uniqueness checking
|
// Create a string representation of the grid for uniqueness checking
|
||||||
string gridSignature = GridToString(candidate.grid);
|
string gridSignature = GridToString(candidate.grid);
|
||||||
|
|
||||||
// Check if this grid layout is unique and has a good word count
|
// Check if this grid layout is unique, has a good word count, and no problematic overlaps
|
||||||
if (!generatedGrids.Contains(gridSignature) &&
|
if (!generatedGrids.Contains(gridSignature) &&
|
||||||
candidate.placements.Count > bestWordCount)
|
candidate.placements.Count > bestWordCount &&
|
||||||
|
!hasProblematicOverlaps)
|
||||||
{
|
{
|
||||||
bestVariant = candidate;
|
bestVariant = candidate;
|
||||||
bestWordCount = candidate.placements.Count;
|
bestWordCount = candidate.placements.Count;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user