added coins

This commit is contained in:
MrTorex committed 2026-03-07 15:02:58 +03:00
1 parent 4a8a8ae916
commit 9e5f46b48c
37 files changed
+7536 -79

No files matched your search

+3
View File
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c57a434a19fd4a2b946dc4a88df4929d
timeCreated: 1772884699
+31
View File
@@ -0,0 +1,31 @@
using UnityEngine;
using PrimeTween;
namespace Code.Gameplay.Coin
{
public class Coin : MonoBehaviour
{
public Vector3 rotationAngle = new(0, 360, 0);
public float rotationDuration = 10f;
public float amplitude = 0.5f;
public float cycleDuration = 2f;
private void Start()
{
Tween.LocalEulerAngles(transform,
startValue: Vector3.zero,
endValue: rotationAngle,
duration: rotationDuration,
cycles: -1,
ease: Ease.Linear);
Tween.LocalPositionY(transform,
endValue: transform.localPosition.y + amplitude,
duration: cycleDuration / 2,
cycles: -1,
cycleMode: CycleMode.Yoyo,
ease: Ease.InOutSine);
}
}
}
+3
View File
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 83c61140120e4627941c775e56bbfd98
timeCreated: 1772884705
+27 -6
View File
@@ -20,12 +20,15 @@ namespace Code.Gameplay.Level
[Header("Obstacles Settings")] [SerializeField]
private GameObject[] lowObstacles;
[SerializeField] private GameObject[] highObstacles;
[SerializeField] private GameObject[] movingLowObstacles;
[SerializeField] private GameObject[] movingHighObstacles;
[Range(0, 100)] [SerializeField] private int obstacleChance = 40;
[SerializeField] private float laneDistance = 5f;
[Header("Coins Settings")]
[SerializeField] private GameObject coinPrefab;
[Range(0, 100)] [SerializeField] private int coinChance = 50;
private readonly List<GameObject> _activeTiles = new();
private readonly List<GameObject> _activeEnvironment = new();
@@ -57,15 +60,16 @@ namespace Code.Gameplay.Level
if (spawnItems)
{
SpawnObstacle(_spawnZ);
var occupiedLane = SpawnObstacle(_spawnZ);
SpawnCoins(_spawnZ, occupiedLane);
}
_spawnZ += tileLength;
}
private void SpawnObstacle(float zPos)
private int SpawnObstacle(float zPos)
{
if (Random.Range(0, 100) > obstacleChance) return;
if (Random.Range(0, 100) > obstacleChance) return -2;
var lane = Random.Range(-1, 2);
var spawnPos = new Vector3(lane * laneDistance, 0, zPos);
@@ -86,9 +90,26 @@ namespace Code.Gameplay.Level
var obs = Instantiate(prefab, spawnPos, Quaternion.Euler(0, 180, 0));
obs.transform.SetParent(_activeTiles[^1].transform);
}
return lane;
}
private void SpawnCoins(float zPos, int occupiedLane)
{
if (Random.Range(0, 100) > coinChance) return;
var coinLane = Random.Range(-1, 2);
if (coinLane == occupiedLane) coinLane = (coinLane + 1 > 1) ? -1 : coinLane + 1;
for (var i = 0; i < 2; i++)
{
var spawnPos = new Vector3(coinLane * laneDistance, 1f, zPos + (i * 2f));
var coin = Instantiate(coinPrefab, spawnPos, Quaternion.identity);
coin.transform.SetParent(_activeTiles[^1].transform);
}
}
private GameObject GetRandom(GameObject[] array)
private static GameObject GetRandom(GameObject[] array)
{
return array.Length > 0 ? array[Random.Range(0, array.Length)] : null;
}
@@ -72,5 +72,15 @@ namespace Code.Gameplay.Player
{
forwardSpeed += amount;
}
private void OnTriggerEnter(Collider foreign)
{
if (foreign.CompareTag("Coin"))
{
UI.GameplayController.Instance.AddCoin();
Destroy(foreign.gameObject);
}
}
}
}
+24
View File
@@ -0,0 +1,24 @@
using TMPro;
using UnityEngine;
namespace Code.UI
{
public class GameplayController : MonoBehaviour
{
public static GameplayController Instance;
[SerializeField] private TMP_Text coinsText;
private int _coins;
private void Awake()
{
Instance = this;
}
public void AddCoin()
{
_coins++;
coinsText.text = $"{_coins} Coins";
}
}
}
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d58863c11032483fab5516d2f58bec42
timeCreated: 1772883610
+2 -1
View File
@@ -1,4 +1,3 @@
using System;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
@@ -8,9 +7,11 @@ namespace Code.UI
public class MainMenuController : MonoBehaviour
{
[SerializeField] private Button playButton;
[SerializeField] private AudioSource musicAudioSource;
private void Start()
{
DontDestroyOnLoad(musicAudioSource);
playButton.onClick.AddListener(LoadGameplay);
}
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 733b3397f370c5196ab0b102dd9fcd4e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: da2e19a1c5f8b4e2ca7c1785ea338b2e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,19 @@
%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: 118450fad714b420684eb5f984268b5c, type: 3}
m_Name: PrimeTweenInstaller
m_EditorClassIdentifier:
demoScene: {fileID: 102900000, guid: 13170347bc506405f88d3a87bd0982b3, type: 3}
demoSceneUrp: {fileID: 102900000, guid: 15054139658a5445689224c71f805b10, type: 3}
demoScenePro: {fileID: 102900000, guid: e8086c8f95dba534ca9bf16d3ce9ef31, type: 3}
demoSceneProUrp: {fileID: 102900000, guid: 2992e8ebf85ed47489b777c4d27b9952, type: 3}
uninstallButtonColor: {r: 1, g: 0.23113209, b: 0.2762581, a: 1}
@@ -0,0 +1,15 @@
fileFormatVersion: 2
guid: aafeeef745bb4406db1b2cd166853022
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 252960
packageName: "PrimeTween \xB7 High-Performance Animations and Sequences"
packageVersion: 1.3.7
assetPath: Assets/Plugins/PrimeTween/PrimeTweenInstaller.asset
uploadId: 860556
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f164d11d6323e46b786f187ecd84eb1b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,29 @@
{
"name": "PrimeTween.Installer",
"rootNamespace": "",
"references": [
"PrimeTween.Runtime"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [
{
"name": "com.kyrylokuzyk.primetween",
"expression": "1.0.0",
"define": "PRIME_TWEEN_INSTALLED"
},
{
"name": "com.kyrylokuzyk.primetween",
"expression": "[1.3.6-pro]",
"define": "PRIME_TWEEN_PRO"
}
],
"noEngineReferences": false
}
@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: 090d70c1ebac0421985bd70fa7f561ef
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 252960
packageName: "PrimeTween \xB7 High-Performance Animations and Sequences"
packageVersion: 1.3.7
assetPath: Assets/Plugins/PrimeTween/internal/PrimeTween.Installer.asmdef
uploadId: 860556
@@ -0,0 +1,548 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using System.Text;
using System.Text.RegularExpressions;
using UnityEditor;
using UnityEditor.PackageManager;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityEngine.Assertions;
using UnityEngine.Rendering;
using static UnityEngine.GUILayout;
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("PrimeTween.Internal")]
namespace PrimeTween {
internal class PrimeTweenInstaller : ScriptableObject {
[SerializeField] internal SceneAsset demoScene;
[SerializeField] internal SceneAsset demoSceneUrp;
[SerializeField] internal SceneAsset demoScenePro;
[SerializeField] internal SceneAsset demoSceneProUrp;
[SerializeField] internal Color uninstallButtonColor;
[ContextMenu(nameof(ResetReviewRequest))] void ResetReviewRequest() => ReviewRequest.ResetReviewRequest();
[ContextMenu(nameof(DebugReviewRequest))] void DebugReviewRequest() => ReviewRequest.DebugReviewRequest();
}
[CustomEditor(typeof(PrimeTweenInstaller), false)]
internal class InstallerInspector : Editor {
internal const string pluginName = "PrimeTween";
internal const string pluginPackageId = "com.kyrylokuzyk.primetween";
internal const string tgzPath = "Assets/Plugins/PrimeTween/internal/com.kyrylokuzyk.primetween.tgz";
internal const string newTgzPath = "Assets/Plugins/PrimeTween/internal/com.kyrylokuzyk.primetween-" + version + ".tgz";
const string documentationUrl = "https://github.com/KyryloKuzyk/PrimeTween";
bool isInstalled;
bool hasNewTgz;
GUIStyle boldButtonStyle;
GUIStyle uninstallButtonStyle;
GUIStyle wordWrapLabelStyle;
void OnEnable() {
isInstalled = CheckPluginInstalled();
hasNewTgz = File.Exists(newTgzPath);
}
/// Use Package Manager because Unity 2018 doesn't support version defines
static bool CheckPluginInstalled() {
var listRequest = Client.List(true);
while (!listRequest.IsCompleted) {
}
return listRequest.Result.Any(_ => _.name == pluginPackageId);
}
public override void OnInspectorGUI() {
if (boldButtonStyle == null) {
boldButtonStyle = new GUIStyle(GUI.skin.button) { fontStyle = FontStyle.Bold };
}
var installer = (PrimeTweenInstaller)target;
if (uninstallButtonStyle == null) {
uninstallButtonStyle = new GUIStyle(GUI.skin.button) { normal = { textColor = installer.uninstallButtonColor } };
}
if (wordWrapLabelStyle == null) {
wordWrapLabelStyle = new GUIStyle(GUI.skin.label) { wordWrap = true, richText = true, margin = new RectOffset(4, 4, 8, 8) };
}
EditorGUI.indentLevel = 5;
Space(8);
Label(pluginName, EditorStyles.boldLabel);
Space(4);
if (!isInstalled) {
if (Button("Install " + pluginName)) {
installPlugin();
}
return;
}
if (hasNewTgz) {
if (Button($"Update to {version}", boldButtonStyle)) {
ReviewRequest.OnPackageUpdate();
}
Space(8);
}
if (Button("Documentation", boldButtonStyle)) {
Application.OpenURL(documentationUrl);
}
Space(8);
var rpAsset = GraphicsSettings.
#if UNITY_2019_3_OR_NEWER
defaultRenderPipeline;
#else
renderPipelineAsset;
#endif
bool isUrp = rpAsset != null && rpAsset.GetType().Name.Contains("Universal");
if (Button("Open Demo", boldButtonStyle)) {
var demoScene = isUrp ? installer.demoSceneUrp : installer.demoScene;
if (demoScene == null) {
Debug.LogError("Please re-import the plugin from Asset Store and import the 'Demo' folder.\n");
return;
}
string path = AssetDatabase.GetAssetPath(demoScene);
EditorSceneManager.OpenScene(path);
}
#if PRIME_TWEEN_PRO
if (Button("Open Demo (Pro)", boldButtonStyle)) {
var demoScene = isUrp ? installer.demoSceneProUrp : installer.demoScenePro;
if (demoScene == null) {
Debug.LogError("Please re-import the plugin from Asset Store and import the 'Demo' folder.\n");
return;
}
string path = AssetDatabase.GetAssetPath(demoScene);
EditorSceneManager.OpenScene(path);
}
#endif
#if UNITY_2019_4_OR_NEWER
if (Button("Import Basic Examples")) {
EditorUtility.DisplayDialog(pluginName, $"Please select the '{pluginName}' package in 'Package Manager', then press the 'Samples/Import' button at the bottom of the plugin's description.", "Ok");
UnityEditor.PackageManager.UI.Window.Open(pluginPackageId);
}
#endif
if (Button("Support")) {
Application.OpenURL("https://github.com/KyryloKuzyk/PrimeTween#support");
}
Space(8);
if (Button("Uninstall", uninstallButtonStyle)) {
Client.Remove(pluginPackageId);
isInstalled = false;
var msg = $"Please remove the folder manually to uninstall {pluginName} completely: 'Assets/Plugins/{pluginName}'";
EditorUtility.DisplayDialog(pluginName, msg, "Ok");
Debug.Log(msg);
}
if (EditorPrefs.GetBool(InsertCallbackBug.showInsertCallbackBugUi, false)) {
Space(24);
Label("Updating from PrimeTween [1.1.10 - 1.1.22]", EditorStyles.boldLabel);
Label("The behaviour of 'Sequence.ChainCallback()' and 'InsertCallback()' was fixed in PrimeTween 1.2.0 so the code written with older versions may work differently in some cases.", wordWrapLabelStyle);
if (Button("Find potential issues")) {
InsertCallbackBug.Find();
}
BeginHorizontal();
if (Button("More info")) {
Application.OpenURL(InsertCallbackBug.moreInfoUrl);
}
if (Button("Download version 1.1.22")) {
Application.OpenURL("https://github.com/KyryloKuzyk/PrimeTween/blob/545dcc52769d52841e282c772e98c8984bfeb243/Benchmarks/Packages/com.kyrylokuzyk.primetween.tgz");
}
EndHorizontal();
}
Space(24);
Label("Enjoying PrimeTween?", EditorStyles.boldLabel);
Label("Consider leaving an <b>honest review</b> and starring PrimeTween on GitHub!\n\n" +
"Honest reviews make PrimeTween better and help other developers discover it.", wordWrapLabelStyle);
if (Button("Leave review!", GUI.skin.button)) {
ReviewRequest.DisableReviewRequest();
ReviewRequest.OpenReviewsURL();
}
}
static void installPlugin() {
if (File.Exists(newTgzPath)) {
MoveAndRenameTgzArchive();
}
ReviewRequest.OnBeforeInstall();
var path = $"file:../{tgzPath}";
var addRequest = Client.Add(path);
while (!addRequest.IsCompleted) {
}
if (addRequest.Status == StatusCode.Success) {
Debug.Log($"{pluginName} installed successfully.\n" +
$"Offline documentation is located at Packages/{pluginName}/Documentation.md.\n" +
$"Online documentation: {documentationUrl}\n");
} else {
Debug.LogError($"Please re-import the plugin from the Asset Store and check that the file exists: [{path}].\n\n{addRequest.Error?.message}\n");
}
}
internal static void MoveAndRenameTgzArchive() {
Assert.IsTrue(File.Exists(newTgzPath));
Assert.IsTrue(File.Exists(newTgzPath + ".meta"));
File.Delete(tgzPath);
File.Delete(tgzPath + ".meta");
File.Move(newTgzPath, tgzPath);
File.Move(newTgzPath + ".meta", tgzPath + ".meta");
RevertTgzMeta();
}
static void RevertTgzMeta() {
const string path = tgzPath + ".meta";
Assert.IsTrue(File.Exists(path), path);
File.WriteAllText(path, @"fileFormatVersion: 2
guid: cdd0c4b9889044d73bc958a922ada300
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
");
}
[InitializeOnLoadMethod]
static void InitOnLoad() {
AssetDatabase.importPackageCompleted += name => {
if (name.Contains(pluginName)) {
if (CheckPluginInstalled()) {
ReviewRequest.OnPackageUpdate();
} else {
var installer = AssetDatabase.LoadAssetAtPath<PrimeTweenInstaller>("Assets/Plugins/PrimeTween/PrimeTweenInstaller.asset");
EditorUtility.FocusProjectWindow(); // this is important to show the installer object in the Project window
Selection.activeObject = installer;
EditorGUIUtility.PingObject(installer);
EditorApplication.update += InstallAndUnsubscribeFromUpdate;
void InstallAndUnsubscribeFromUpdate() {
EditorApplication.update -= InstallAndUnsubscribeFromUpdate;
installPlugin();
}
}
}
};
}
internal const string version = "1.3.8";
}
internal static class FixedUpdateParameterMigration {
internal static string[] FindLocalScriptGuids() {
var listRequest = Client.List(true);
while (!listRequest.IsCompleted) {
}
Assert.AreEqual(StatusCode.Success, listRequest.Status);
string[] folders = listRequest.Result
.Where(x => x.source == PackageSource.Embedded || x.source == PackageSource.Local)
.Where(x => x.name != InstallerInspector.pluginPackageId)
.Select(x => x.assetPath)
.Append("Assets")
.ToArray();
return AssetDatabase.FindAssets("t:Script", folders);
}
internal static bool Process(string[] scripts, bool? fixAutomatically = null) {
var logSb = new StringBuilder();
var fileSb = new StringBuilder();
foreach (string guid in scripts)
{
string path = AssetDatabase.GUIDToAssetPath(guid);
var textAsset = AssetDatabase.LoadAssetAtPath<TextAsset>(path);
string text = textAsset.text;
if (!Regex.IsMatch(text, @"using PrimeTween\s*;")) {
continue;
}
var parameterMatches = Regex.Matches(text, @"useFixedUpdate\s*:");
if (parameterMatches.Count > 0) {
if (!fixAutomatically.HasValue) {
return true;
}
logSb.Clear();
if (fixAutomatically.Value) {
fileSb.Clear();
fileSb.Append(text);
for (int i = parameterMatches.Count - 1; i >= 0; i--) {
var paramMatch = parameterMatches[i];
fileSb.Remove(paramMatch.Index, paramMatch.Length);
fileSb.Insert(paramMatch.Index, "updateType:");
}
File.WriteAllText(path, fileSb.ToString());
logSb.Append($"PrimeTween automatically renamed ({parameterMatches.Count}) occurrences of 'useFixedUpdate' to 'updateType' in file '{textAsset.name}.cs':\n");
} else {
logSb.Append($"PrimeTween: please rename ({parameterMatches.Count}) occurrences of 'useFixedUpdate' to 'updateType' in file '{textAsset.name}.cs':\n");
}
var lineMatches = Regex.Matches(text, @"(?m)^.*useFixedUpdate\s*:.*$", RegexOptions.Multiline);
foreach (Match match in lineMatches) {
logSb.Append($"{match.Value.Trim().Replace("useFixedUpdate", "<b>useFixedUpdate</b>")}\n");
}
Debug.unityLogger.Log(fixAutomatically.Value ? LogType.Warning : LogType.Error, logSb.ToString());
}
}
// no need to call AssetDatabase.Refresh() here because MoveAndRenameTgzArchive() already does that
return false;
}
}
internal static class ReviewRequest {
const string version = InstallerInspector.version;
const string canAskKey = "PrimeTween.canAskForReview";
const string versionKey = "PrimeTween.version";
internal static void OnPackageUpdate() {
log("OnPackageUpdate");
if (!File.Exists(InstallerInspector.newTgzPath)) {
Debug.LogError($"The installation archive is missing: '{InstallerInspector.newTgzPath}'. Please re-import PrimeTween from Asset Store.");
return;
}
bool shouldAskForReview = true;
var scriptGuids = FixedUpdateParameterMigration.FindLocalScriptGuids();
if (FixedUpdateParameterMigration.Process(scriptGuids)) {
shouldAskForReview = false;
const string msg = "'bool useFixedUpdate' parameter was changed to 'UpdateType updateType' in version 1.3.0, which will cause breaking changes in your current project.\n" +
"PrimeTween can fix the breaking changes automatically, or you can fix them manually after the update.\n";
Debug.LogWarning($"PrimeTween: the {msg}");
int response = EditorUtility.DisplayDialogComplex($"{InstallerInspector.pluginName} {version}",
$"The {msg}",
"Fix automatically",
"Cancel",
"Fix manually");
string cancelMessage = $"PrimeTween: update to {version} was cancelled. You can trigger update manually from 'Assets/Plugins/PrimeTween/PrimeTweenInstaller'.";
if (response == 1) {
Debug.LogWarning(cancelMessage);
return;
}
if (!EditorUtility.DisplayDialog($"{InstallerInspector.pluginName} {version}", "Please back up your project before proceeding.", "OK", "Cancel")) {
Debug.LogWarning(cancelMessage);
return;
}
bool fixAutomatically = response == 0;
FixedUpdateParameterMigration.Process(scriptGuids, fixAutomatically);
}
InstallerInspector.MoveAndRenameTgzArchive();
if (UNITY_2018) {
var removeRequest = Client.Remove(InstallerInspector.pluginPackageId);
while (!removeRequest.IsCompleted) {
}
string path = $"file:../{InstallerInspector.tgzPath}";
Client.Add(path);
} else {
EditorApplication.ExecuteMenuItem("Assets/Refresh"); // AssetDatabase.Refresh() refreshes the project only partially
}
string prevVersion = savedVersion;
if (savedVersion == version) {
log($"same version {version}");
return;
}
savedVersion = version;
if (InsertCallbackBug.IsUpdatingFromVersionWithBug(prevVersion)) {
InsertCallbackBug.Find();
EditorPrefs.SetBool(InsertCallbackBug.showInsertCallbackBugUi, true);
shouldAskForReview = false;
} else {
EditorPrefs.SetBool(InsertCallbackBug.showInsertCallbackBugUi, false);
}
log($"updated from version {prevVersion} to {version}, {nameof(shouldAskForReview)}: {shouldAskForReview}");
if (shouldAskForReview) {
TryAskForReview();
}
}
static bool UNITY_2018 {
get {
#if UNITY_2018
return true;
#else
return false;
#endif
}
}
static void TryAskForReview() {
if (!EditorPrefs.GetBool(canAskKey, true)) {
log("can't ask");
return;
}
DisableReviewRequest();
var response = EditorUtility.DisplayDialogComplex("Enjoying PrimeTween?",
"Would you mind to leave an honest review on Asset store? Honest reviews make PrimeTween better and help other developers discover it.",
"Sure, leave a review!",
"Never ask again",
"");
if (response == 0) {
OpenReviewsURL();
}
}
internal static void OnBeforeInstall() {
log($"OnBeforeInstall {version}");
if (string.IsNullOrEmpty(savedVersion)) {
savedVersion = version;
}
}
static string savedVersion {
get => EditorPrefs.GetString(versionKey);
set => EditorPrefs.SetString(versionKey, value);
}
internal static void DisableReviewRequest() => EditorPrefs.SetBool(canAskKey, false);
internal static void OpenReviewsURL() => Application.OpenURL("https://assetstore.unity.com/packages/slug/252960#reviews");
internal static void ResetReviewRequest() {
Debug.Log(nameof(ResetReviewRequest));
EditorPrefs.DeleteKey(versionKey);
EditorPrefs.DeleteKey(canAskKey);
}
internal static void DebugReviewRequest() {
Debug.Log(nameof(DebugReviewRequest));
savedVersion = "1.1.22";
EditorPrefs.SetBool(canAskKey, false);
// TryAskForReview();
}
[System.Diagnostics.Conditional("_")]
static void log(string msg) {
Debug.Log($"ReviewRequest: {msg}");
}
}
internal static class InsertCallbackBug {
internal const string moreInfoUrl = "https://github.com/KyryloKuzyk/PrimeTween/discussions/112";
internal const string showInsertCallbackBugUi = "PrimeTween.showInsertCallbackBugUi";
static Dictionary<short, OpCode> OpCodeDict;
static MethodInfo[] methodsWithBug;
static MethodInfo[] groupMethods;
internal static bool IsUpdatingFromVersionWithBug(string prevVersionString) {
if (Version.TryParse(prevVersionString, out var prevVersion)
&& new Version(1, 1, 10) <= prevVersion
&& prevVersion <= new Version(1, 1, 22)
) {
return true;
}
return false;
}
internal static void Find() {
OpCodeDict = typeof(OpCodes)
.GetFields(BindingFlags.Public | BindingFlags.Static)
.Select(x => (OpCode)x.GetValue(null))
.ToDictionary(x => x.Value, x => x);
#if PRIME_TWEEN_INSTALLED
methodsWithBug = typeof(Sequence).GetMethods(BindingFlags.Public | BindingFlags.Instance)
.Where(methodInfo => methodInfo.Name == nameof(Sequence.ChainCallback) || methodInfo.Name == nameof(Sequence.InsertCallback))
.Select(methodInfo => methodInfo.IsGenericMethod ? methodInfo.GetGenericMethodDefinition() : methodInfo)
.ToArray();
Assert.AreEqual(4, methodsWithBug.Length);
groupMethods = typeof(Sequence).GetMethods(BindingFlags.Public | BindingFlags.Instance)
.Where(methodInfo => methodInfo.Name == nameof(Sequence.Group))
.ToArray();
#endif
Assert.AreEqual(2, groupMethods.Length);
string methodAssemblyName = methodsWithBug[0].Module.Assembly.FullName;
const BindingFlags findAll = BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;
int numPotentialIssues = AppDomain.CurrentDomain.GetAssemblies()
.Where(assembly => assembly.GetReferencedAssemblies().Any(dependency => dependency.FullName == methodAssemblyName))
.Where(assembly => !assembly.GetName().Name.StartsWith("PrimeTween.", StringComparison.Ordinal))
.SelectMany(assembly => assembly.GetTypes())
.SelectMany(type => type.GetMethods(findAll).Cast<MethodBase>().Union(type.GetConstructors(findAll)))
.Count(method => FindInMethod(method));
if (numPotentialIssues == 0) {
Debug.Log($"PrimeTween updated to version {InstallerInspector.version}: no potential issues found in ChainCallback() and InsertCallback() usages.\n" +
$"More info: {moreInfoUrl}\n");
}
int updateResponse = EditorUtility.DisplayDialogComplex($"{InstallerInspector.pluginName} {InstallerInspector.version}",
"PrimeTween 1.2.0 fixed a bug in ChainCallback() and InsertCallback() methods.\n" +
"This fix may introduce breaking changes in the existing projects. Please see the Console output for more details.",
"More info",
"Close",
"");
if (updateResponse == 0) {
Application.OpenURL(moreInfoUrl);
}
}
/// https://stackoverflow.com/a/33034906/1951038
static bool FindInMethod(MethodBase method) {
byte[] il = method.GetMethodBody()?.GetILAsByteArray();
if (il == null) {
return false;
}
bool bugFound = false;
using (var br = new BinaryReader(new MemoryStream(il))) {
while (br.BaseStream.Position < br.BaseStream.Length) {
byte firstByte = br.ReadByte();
short opCodeValue = firstByte == 0xFE ? BitConverter.ToInt16(new[] { br.ReadByte(), firstByte }, 0) : firstByte;
OpCode opCode = OpCodeDict[opCodeValue];
switch (opCode.OperandType) {
case OperandType.ShortInlineBrTarget:
case OperandType.ShortInlineVar:
case OperandType.ShortInlineI:
br.ReadByte();
break;
case OperandType.InlineVar:
br.ReadInt16();
break;
case OperandType.InlineField:
case OperandType.InlineType:
case OperandType.ShortInlineR:
case OperandType.InlineString:
case OperandType.InlineSig:
case OperandType.InlineI:
case OperandType.InlineBrTarget:
br.ReadInt32();
break;
case OperandType.InlineI8:
case OperandType.InlineR:
br.ReadInt64();
break;
case OperandType.InlineSwitch:
var size = (int)br.ReadUInt32();
br.ReadBytes(size * 4);
break;
case OperandType.InlineTok:
br.ReadUInt32();
break;
case OperandType.InlineMethod:
int token = (int)br.ReadUInt32();
if (method.Module.ResolveMethod(token) is MethodInfo resolvedMethod) {
if (bugFound) {
if (groupMethods.Contains(resolvedMethod)) {
Debug.LogError($"PrimeTween updated to version {InstallerInspector.version}: potential breaking change found in the '{method.DeclaringType}.{method.Name}()' method.\n" +
"Please double-check the behavior if Group() is called immediately after the ChainCallback() or InsertCallback() and apply the fix manually if necessary.\n" +
"Or use ChainCallbackObsolete/InsertCallbackObsolete() instead to preserve the old incorrect behavior.\n" +
$"More info: {moreInfoUrl}\n");
return true;
}
} else {
bugFound = isMethodWithBug(resolvedMethod);
}
}
break;
case OperandType.InlineNone:
break;
default:
throw new Exception();
}
}
}
return false;
}
static bool isMethodWithBug(MethodInfo method) {
foreach (var methodWithBug in methodsWithBug) {
if (methodWithBug.IsGenericMethodDefinition && method.IsGenericMethod) {
if (methodWithBug == method.GetGenericMethodDefinition()) {
return true;
}
} else if (methodWithBug == method) {
return true;
}
}
return false;
}
}
}
@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 118450fad714b420684eb5f984268b5c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 252960
packageName: "PrimeTween \xB7 High-Performance Animations and Sequences"
packageVersion: 1.3.7
assetPath: Assets/Plugins/PrimeTween/internal/PrimeTweenInstaller.cs
uploadId: 860556
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: cdd0c4b9889044d73bc958a922ada300
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f01ec4db8a7895e5da9aa5447a3fac08
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 01184f00d302d78c6a0640cd73ce4a50
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: 0968e90a59db258419560b190a9fcbe2
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 2
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1d52705bf8165a5198a5ebc74e5a8bd4
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 29044f8f8f939c454899da1a3571240f
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Comic Roasting
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,28 @@
fileFormatVersion: 2
guid: 7fdb58b72c624c9d4a565792d773cdd3
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 715df9372183c47e389bb6e19fbc3b52, type: 3}
editorImportSettings:
generateSecondaryUVSet: 0
importSettings:
nodeNameMethod: 1
animationMethod: 2
generateMipMaps: 1
texturesReadable: 0
defaultMinFilterMode: 9729
defaultMagFilterMode: 9729
anisotropicFilterLevel: 1
instantiationSettings:
mask: -1
layer: 0
skinUpdateWhenOffscreen: 1
lightIntensityFactor: 1
sceneObjectCreation: 2
assetDependencies: []
reportItems: []
+382
View File
@@ -0,0 +1,382 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1651124952997278685
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1009921075094477300}
- component: {fileID: 3266293652059048937}
- component: {fileID: 5632719777282781315}
m_Layer: 0
m_Name: Object_5
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1009921075094477300
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1651124952997278685}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4309047750165335316}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &3266293652059048937
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1651124952997278685}
m_Mesh: {fileID: 4977131475666943381, guid: 7fdb58b72c624c9d4a565792d773cdd3, type: 3}
--- !u!23 &5632719777282781315
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1651124952997278685}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: -4974903464421335904, guid: 7fdb58b72c624c9d4a565792d773cdd3, type: 3}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_MaskInteraction: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &3717639651413001872
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4793648683423123047}
m_Layer: 0
m_Name: lowpoly_coin
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4793648683423123047
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3717639651413001872}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.3, y: 0.3, z: 0.3}
m_ConstrainProportionsScale: 1
m_Children:
- {fileID: 8589044050877636081}
m_Father: {fileID: 7253181244805202411}
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
--- !u!1 &5890006480504108032
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2284542661445276832}
m_Layer: 0
m_Name: GLTF_SceneRootNode
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2284542661445276832
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5890006480504108032}
serializedVersion: 2
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: -0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 4309047750165335316}
m_Father: {fileID: 8589044050877636081}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &6194480396342562477
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7253181244805202411}
- component: {fileID: 2882419801137344962}
- component: {fileID: 710228267587778295}
m_Layer: 0
m_Name: Coin
m_TagString: Coin
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7253181244805202411
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6194480396342562477}
serializedVersion: 2
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: 4793648683423123047}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!65 &2882419801137344962
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6194480396342562477}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 1
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1.25, y: 1.25, z: 0.2}
m_Center: {x: 0, y: 0, z: 0}
--- !u!114 &710228267587778295
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6194480396342562477}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 83c61140120e4627941c775e56bbfd98, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Code.Gameplay.Coin.Coin
rotationAngle: {x: 0, y: 360, z: 0}
rotationDuration: 10
amplitude: 0.5
cycleDuration: 2
--- !u!1 &7476333736434698754
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8589044050877636081}
m_Layer: 0
m_Name: root
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8589044050877636081
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7476333736434698754}
serializedVersion: 2
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: 2284542661445276832}
m_Father: {fileID: 4793648683423123047}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7786051686141233175
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5068466573320118029}
- component: {fileID: 1928863412014843762}
- component: {fileID: 5564622434701310850}
m_Layer: 0
m_Name: Object_4
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5068466573320118029
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7786051686141233175}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4309047750165335316}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &1928863412014843762
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7786051686141233175}
m_Mesh: {fileID: -7227129179611170996, guid: 7fdb58b72c624c9d4a565792d773cdd3, type: 3}
--- !u!23 &5564622434701310850
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7786051686141233175}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 4855638414264437767, guid: 7fdb58b72c624c9d4a565792d773cdd3, type: 3}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_MaskInteraction: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &7829111868258921571
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4309047750165335316}
m_Layer: 0
m_Name: Cylinder.001_0
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4309047750165335316
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7829111868258921571}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 2.023, y: 0.18168706, z: 2.023}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5068466573320118029}
- {fileID: 1009921075094477300}
m_Father: {fileID: 2284542661445276832}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: daee6911782c4e8f8aec681a2a292e12
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+183 -1
View File
@@ -119,6 +119,143 @@ NavMeshSettings:
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &222402065
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 222402066}
- component: {fileID: 222402068}
- component: {fileID: 222402067}
m_Layer: 5
m_Name: CoinsText
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &222402066
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 222402065}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1639123679}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -10, y: -10}
m_SizeDelta: {x: 600, y: 100}
m_Pivot: {x: 1, y: 1}
--- !u!114 &222402067
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 222402065}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
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: 0 Coins
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 1d52705bf8165a5198a5ebc74e5a8bd4, type: 2}
m_sharedMaterial: {fileID: 3351817197309428489, guid: 1d52705bf8165a5198a5ebc74e5a8bd4, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
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: 100
m_fontSizeBase: 100
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 4
m_VerticalAlignment: 1024
m_textAlignment: 65535
m_characterSpacing: 0
m_characterHorizontalScale: 1
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!222 &222402068
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 222402065}
m_CullTransparentMesh: 1
--- !u!1 &245661895
GameObject:
m_ObjectHideFlags: 0
@@ -394,6 +531,7 @@ GameObject:
m_Component:
- component: {fileID: 892292345}
- component: {fileID: 892292346}
- component: {fileID: 892292347}
m_Layer: 0
m_Name: ScriptsHelper
m_TagString: Untagged
@@ -486,6 +624,21 @@ MonoBehaviour:
- {fileID: 2634900756195477355, guid: 3b556db2eeee7891aace4c9813d61ece, type: 3}
obstacleChance: 40
laneDistance: 5
coinPrefab: {fileID: 6194480396342562477, guid: daee6911782c4e8f8aec681a2a292e12, type: 3}
coinChance: 50
--- !u!114 &892292347
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 892292344}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d58863c11032483fab5516d2f58bec42, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Code.UI.GameplayController
coinsText: {fileID: 222402067}
--- !u!1 &1630184746
GameObject:
m_ObjectHideFlags: 0
@@ -500,6 +653,7 @@ GameObject:
- component: {fileID: 1630184748}
- component: {fileID: 1630184747}
- component: {fileID: 1630184752}
- component: {fileID: 1630184753}
m_Layer: 0
m_Name: Player
m_TagString: Untagged
@@ -644,6 +798,33 @@ MonoBehaviour:
laneDistance: 5
jumpForce: 11
gravity: 20
--- !u!54 &1630184753
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1630184746}
serializedVersion: 5
m_Mass: 1
m_LinearDamping: 0
m_AngularDamping: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_ImplicitCom: 1
m_ImplicitTensor: 1
m_UseGravity: 1
m_IsKinematic: 1
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 0
--- !u!1 &1639123675
GameObject:
m_ObjectHideFlags: 0
@@ -737,7 +918,8 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children: []
m_Children:
- {fileID: 222402066}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
+131
View File
@@ -256,6 +256,135 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 30889381}
m_CullTransparentMesh: 1
--- !u!1 &98989458
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 98989459}
- component: {fileID: 98989460}
m_Layer: 0
m_Name: MusicAudioSource
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &98989459
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 98989458}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!82 &98989460
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 98989458}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_Resource: {fileID: 8300000, guid: 0968e90a59db258419560b190a9fcbe2, type: 3}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 1
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!1 &100184450
GameObject:
m_ObjectHideFlags: 0
@@ -843,6 +972,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Code.UI.MainMenuController
playButton: {fileID: 1006544853}
musicAudioSource: {fileID: 98989460}
--- !u!114 &892292347
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -1805,3 +1935,4 @@ SceneRoots:
- {fileID: 832575519}
- {fileID: 1639123679}
- {fileID: 245661898}
- {fileID: 98989459}
+334 -66
View File
@@ -2,20 +2,24 @@
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2180264
Material:
serializedVersion: 6
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: LiberationSans SDF Material
m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3}
m_ShaderKeywords:
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
@@ -67,6 +71,7 @@ Material:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _Ambient: 0.5
- _Bevel: 0.5
@@ -148,6 +153,8 @@ Material:
- _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
- _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -161,11 +168,6 @@ MonoBehaviour:
m_Name: LiberationSans SDF - Fallback
m_EditorClassIdentifier:
m_Version: 1.1.0
m_Material: {fileID: 2180264}
m_SourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75
m_SourceFontFile: {fileID: 12800000, guid: e3265ab4bf004d28a9537516768c1c75, type: 3}
m_AtlasPopulationMode: 1
InternalDynamicOS: 0
m_FaceInfo:
m_FaceIndex: 0
m_FamilyName: Liberation Sans
@@ -188,57 +190,8 @@ MonoBehaviour:
m_StrikethroughOffset: 18
m_StrikethroughThickness: 6.298828
m_TabWidth: 24
m_GlyphTable: []
m_CharacterTable: []
m_AtlasTextures:
- {fileID: 28268798066460806}
m_AtlasTextureIndex: 0
m_IsMultiAtlasTexturesEnabled: 1
m_ClearDynamicDataOnBuild: 1
m_UsedGlyphRects: []
m_FreeGlyphRects:
- m_X: 0
m_Y: 0
m_Width: 511
m_Height: 511
m_fontInfo:
Name: Liberation Sans
PointSize: 86
Scale: 1
CharacterCount: 250
LineHeight: 98.90625
Baseline: 0
Ascender: 77.84375
CapHeight: 59.1875
Descender: -18.21875
CenterLine: 0
SuperscriptOffset: 77.84375
SubscriptOffset: -12.261719
SubSize: 0.5
Underline: -12.261719
UnderlineThickness: 6.298828
strikethrough: 23.675
strikethroughThickness: 0
TabWidth: 239.0625
Padding: 9
AtlasWidth: 1024
AtlasHeight: 1024
atlas: {fileID: 0}
m_AtlasWidth: 512
m_AtlasHeight: 512
m_AtlasPadding: 9
m_AtlasRenderMode: 4169
m_glyphInfoList: []
m_KerningTable:
kerningPairs: []
m_FontFeatureTable:
m_MultipleSubstitutionRecords: []
m_LigatureSubstitutionRecords: []
m_GlyphPairAdjustmentRecords: []
m_MarkToBaseAdjustmentRecords: []
m_MarkToMarkAdjustmentRecords: []
fallbackFontAssets: []
m_FallbackFontAssetTable: []
m_Material: {fileID: 2180264}
m_SourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75
m_CreationSettings:
sourceFontFileName:
sourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75
@@ -258,6 +211,288 @@ MonoBehaviour:
fontStyleModifier: 0
renderMode: 4169
includeFontFeatures: 1
m_SourceFontFile: {fileID: 12800000, guid: e3265ab4bf004d28a9537516768c1c75, type: 3}
m_SourceFontFilePath:
m_AtlasPopulationMode: 1
InternalDynamicOS: 0
m_GlyphTable:
- m_Index: 978
m_Metrics:
m_Width: 55
m_Height: 61
m_HorizontalBearingX: 4
m_HorizontalBearingY: 60
m_HorizontalAdvance: 62
m_GlyphRect:
m_X: 10
m_Y: 10
m_Width: 55
m_Height: 61
m_Scale: 1
m_AtlasIndex: 0
m_ClassDefinitionType: 0
m_CharacterTable:
- m_ElementType: 1
m_Unicode: 1057
m_GlyphIndex: 978
m_Scale: 1
m_AtlasTextures:
- {fileID: 28268798066460806}
m_AtlasTextureIndex: 0
m_IsMultiAtlasTexturesEnabled: 1
m_GetFontFeatures: 1
m_ClearDynamicDataOnBuild: 1
m_AtlasWidth: 512
m_AtlasHeight: 512
m_AtlasPadding: 9
m_AtlasRenderMode: 4169
m_UsedGlyphRects:
- m_X: 0
m_Y: 0
m_Width: 74
m_Height: 80
m_FreeGlyphRects:
- m_X: 0
m_Y: 80
m_Width: 511
m_Height: 431
- m_X: 74
m_Y: 0
m_Width: 437
m_Height: 511
m_FontFeatureTable:
m_MultipleSubstitutionRecords: []
m_LigatureSubstitutionRecords: []
m_GlyphPairAdjustmentRecords:
- m_FirstAdjustmentRecord:
m_GlyphIndex: 978
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: -1.8896484
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 961
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: 0
- m_FirstAdjustmentRecord:
m_GlyphIndex: 978
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: -1.8896484
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 965
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: 1229
- m_FirstAdjustmentRecord:
m_GlyphIndex: 978
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: -0.9658203
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 968
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: 85
- m_FirstAdjustmentRecord:
m_GlyphIndex: 978
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: -2.8554688
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 972
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: 89
- m_FirstAdjustmentRecord:
m_GlyphIndex: 978
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: -0.9658203
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 973
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: 89
- m_FirstAdjustmentRecord:
m_GlyphIndex: 978
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: -1.8896484
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 975
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: 90
- m_FirstAdjustmentRecord:
m_GlyphIndex: 978
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: -2.8554688
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 979
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: 90
- m_FirstAdjustmentRecord:
m_GlyphIndex: 978
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: -2.8554688
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 980
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: 92
- m_FirstAdjustmentRecord:
m_GlyphIndex: 978
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: -4.8291016
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 982
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: 92
- m_FirstAdjustmentRecord:
m_GlyphIndex: 978
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: -2.8554688
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 984
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: 827
- m_FirstAdjustmentRecord:
m_GlyphIndex: 978
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: -2.9394531
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 987
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: 827
- m_FirstAdjustmentRecord:
m_GlyphIndex: 978
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: -0.9658203
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 990
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: 827
- m_FirstAdjustmentRecord:
m_GlyphIndex: 978
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0.9658203
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 993
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: 827
- m_FirstAdjustmentRecord:
m_GlyphIndex: 978
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 1.8896484
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 999
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: 827
- m_FirstAdjustmentRecord:
m_GlyphIndex: 978
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: -0.9658203
m_YAdvance: 0
m_SecondAdjustmentRecord:
m_GlyphIndex: 1016
m_GlyphValueRecord:
m_XPlacement: 0
m_YPlacement: 0
m_XAdvance: 0
m_YAdvance: 0
m_FeatureLookupFlags: 827
m_MarkToBaseAdjustmentRecords: []
m_MarkToMarkAdjustmentRecords: []
m_ShouldReimportFontFeatures: 0
m_FallbackFontAssetTable: []
m_FontWeightTable:
- regularTypeface: {fileID: 0}
italicTypeface: {fileID: 0}
@@ -306,6 +541,33 @@ MonoBehaviour:
boldSpacing: 7
italicStyle: 35
tabSize: 10
m_fontInfo:
Name: Liberation Sans
PointSize: 86
Scale: 1
CharacterCount: 250
LineHeight: 98.90625
Baseline: 0
Ascender: 77.84375
CapHeight: 59.1875
Descender: -18.21875
CenterLine: 0
SuperscriptOffset: 77.84375
SubscriptOffset: -12.261719
SubSize: 0.5
Underline: -12.261719
UnderlineThickness: 6.298828
strikethrough: 23.675
strikethroughThickness: 0
TabWidth: 239.0625
Padding: 9
AtlasWidth: 1024
AtlasHeight: 1024
m_glyphInfoList: []
m_KerningTable:
kerningPairs: []
fallbackFontAssets: []
atlas: {fileID: 0}
--- !u!28 &28268798066460806
Texture2D:
m_ObjectHideFlags: 0
@@ -316,17 +578,21 @@ Texture2D:
m_ImageContentsHash:
serializedVersion: 2
Hash: 00000000000000000000000000000000
m_ForcedFallbackFormat: 4
m_DownscaleFallback: 0
serializedVersion: 2
m_Width: 0
m_Height: 0
m_CompleteImageSize: 0
m_IsAlphaChannelOptional: 0
serializedVersion: 4
m_Width: 512
m_Height: 512
m_CompleteImageSize: 262144
m_MipsStripped: 0
m_TextureFormat: 1
m_MipCount: 1
m_IsReadable: 1
m_IsPreProcessed: 0
m_IgnoreMipmapLimit: 0
m_MipmapLimitGroupName:
m_StreamingMipmaps: 0
m_StreamingMipmapsPriority: 0
m_VTOnly: 0
m_AlphaIsTransparency: 0
m_ImageCount: 1
m_TextureDimension: 2
@@ -340,9 +606,11 @@ Texture2D:
m_WrapW: 0
m_LightmapFormat: 0
m_ColorSpace: 0
image data: 0
_typelessdata:
m_PlatformBlob:
image data: 262144
_typelessdata: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607090b0d0f1111121313121111100d0b090706030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060c10121315181a1c1d1e1f1f201f1e1d1c1a18151312100c06040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d1113171c1f20222427292a2b2c2c2c2c2b2a29272522201f1c1713100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e13181d2023282c2d2f31333637383839393838373634312f2d2c28231f1c18120d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Line truncated
m_StreamData:
serializedVersion: 2
offset: 0
size: 0
path:
+2
View File
@@ -1,7 +1,9 @@
{
"dependencies": {
"com.kyrylokuzyk.primetween": "file:../Assets/Plugins/PrimeTween/internal/com.kyrylokuzyk.primetween.tgz",
"com.unity.2d.sprite": "1.0.0",
"com.unity.ai.navigation": "2.0.11",
"com.unity.cloud.gltfast": "6.16.1",
"com.unity.ide.rider": "3.0.39",
"com.unity.ide.visualstudio": "2.0.27",
"com.unity.inputsystem": "1.18.0",
+24 -5
View File
@@ -1,5 +1,11 @@
{
"dependencies": {
"com.kyrylokuzyk.primetween": {
"version": "file:../Assets/Plugins/PrimeTween/internal/com.kyrylokuzyk.primetween.tgz",
"depth": 0,
"source": "local-tarball",
"dependencies": {}
},
"com.unity.2d.sprite": {
"version": "1.0.0",
"depth": 0,
@@ -17,7 +23,7 @@
},
"com.unity.burst": {
"version": "1.8.28",
"depth": 2,
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.mathematics": "1.2.1",
@@ -25,9 +31,22 @@
},
"url": "https://packages.unity.com"
},
"com.unity.cloud.gltfast": {
"version": "6.16.1",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.burst": "1.8.24",
"com.unity.collections": "1.2.4",
"com.unity.mathematics": "1.2.6",
"com.unity.modules.jsonserialize": "1.0.0",
"com.unity.modules.unitywebrequest": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.collections": {
"version": "2.6.2",
"depth": 2,
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.burst": "1.8.23",
@@ -73,7 +92,7 @@
},
"com.unity.mathematics": {
"version": "1.3.3",
"depth": 2,
"depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
@@ -88,7 +107,7 @@
},
"com.unity.nuget.mono-cecil": {
"version": "1.11.6",
"depth": 3,
"depth": 2,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
@@ -169,7 +188,7 @@
},
"com.unity.test-framework.performance": {
"version": "3.2.0",
"depth": 3,
"depth": 2,
"source": "registry",
"dependencies": {
"com.unity.test-framework": "1.1.33",
+1
View File
@@ -5,6 +5,7 @@ TagManager:
serializedVersion: 3
tags:
- Obstacle
- Coin
layers:
- Default
- TransparentFX