Khoatv: fix

parent 419d7d66
......@@ -88,3 +88,4 @@ Material:
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SoftParticleFadeParams: {r: 0, g: 3.3333333, b: 0, a: 0}
- _TintColor: {r: 1, g: 1, b: 1, a: 0.5019608}
m_BuildTextureStacks: []
......@@ -75,6 +75,7 @@ Material:
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SoftParticleFadeParams: {r: 0, g: 1, b: 0, a: 0}
- _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}
m_BuildTextureStacks: []
--- !u!114 &7924808657045240171
MonoBehaviour:
m_ObjectHideFlags: 11
......
......@@ -45,6 +45,7 @@ Material:
- _CameraFadingEnabled: 0
- _CameraFarFadeDistance: 2
- _CameraNearFadeDistance: 1
- _ColorMask: 15
- _ColorMode: 0
- _Cull: 0
- _Cutoff: 0.5
......@@ -64,7 +65,13 @@ Material:
- _SoftParticlesFarFadeDistance: 0.3
- _SoftParticlesNearFadeDistance: 0
- _SrcBlend: 5
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _Surface: 1
- _UseUIAlphaClip: 0
- _ZWrite: 0
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
......@@ -75,6 +82,7 @@ Material:
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SoftParticleFadeParams: {r: 0, g: 3.3333333, b: 0, a: 0}
- _TintColor: {r: 0.5019608, g: 0.5019608, b: 0.5019608, a: 0.5294118}
m_BuildTextureStacks: []
--- !u!114 &7970988106674538706
MonoBehaviour:
m_ObjectHideFlags: 11
......
......@@ -12,7 +12,7 @@ GameObject:
- component: {fileID: 198056651293578602}
- component: {fileID: 199363064060464400}
- component: {fileID: 5357070024513863949}
- component: {fileID: 8953544228817049472}
- component: {fileID: 255254405}
m_Layer: 0
m_Name: ItemSkewedGlowBlue
m_TagString: Untagged
......@@ -27,7 +27,7 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1762653549477642}
m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_Children: []
......@@ -48,7 +48,7 @@ ParticleSystem:
m_GameObject: {fileID: 1762653549477642}
serializedVersion: 7
lengthInSec: 1
simulationSpeed: 1
simulationSpeed: 2
stopAction: 0
cullingMode: 1
ringBufferMode: 0
......@@ -881,7 +881,7 @@ ParticleSystem:
rateOverTime:
serializedVersion: 2
minMaxState: 0
scalar: 6
scalar: 10
minScalar: 10
maxCurve:
serializedVersion: 2
......@@ -4831,7 +4831,7 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1762653549477642}
m_CullTransparentMesh: 1
--- !u!114 &8953544228817049472
--- !u!114 &255254405
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
......@@ -4854,7 +4854,7 @@ MonoBehaviour:
m_IsTrail: 0
m_IgnoreCanvasScaler: 1
m_Scale: 100
m_Scale3D: {x: 100, y: 100, z: 100}
m_Scale3D: {x: 175, y: 175, z: 175}
m_AnimatableProperties: []
m_Particles:
- {fileID: 198056651293578602}
......
......@@ -4846,7 +4846,7 @@ GameObject:
- component: {fileID: 19835860}
- component: {fileID: 19991100}
- component: {fileID: 8779058151873724471}
- component: {fileID: 8751701905341582723}
- component: {fileID: 998513175}
m_Layer: 0
m_Name: ItemSparkleBlue
m_TagString: Untagged
......@@ -9648,7 +9648,7 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 167898}
m_CullTransparentMesh: 1
--- !u!114 &8751701905341582723
--- !u!114 &998513175
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
......@@ -9671,7 +9671,7 @@ MonoBehaviour:
m_IsTrail: 0
m_IgnoreCanvasScaler: 1
m_Scale: 100
m_Scale3D: {x: 100, y: 100, z: 100}
m_Scale3D: {x: 298.3, y: 298.3, z: 298.3}
m_AnimatableProperties: []
m_Particles:
- {fileID: 19835860}
......
fileFormatVersion: 2
guid: d5ed746199d6808468f5c099038d9b12
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: d3bb3b2f89b21ba47807137b85f21859
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
using UnityEngine;
namespace Coffee.UIExtensions
{
[System.Serializable]
public class AnimatableProperty : ISerializationCallbackReceiver
{
public enum ShaderPropertyType
{
Color,
Vector,
Float,
Range,
Texture,
}
[SerializeField] string m_Name = "";
[SerializeField] ShaderPropertyType m_Type = ShaderPropertyType.Vector;
public int id { get; private set; }
public ShaderPropertyType type
{
get { return m_Type; }
}
public void UpdateMaterialProperties(Material material, MaterialPropertyBlock mpb)
{
if (!material.HasProperty(id)) return;
switch (type)
{
case ShaderPropertyType.Color:
var color = mpb.GetColor(id);
if (color != default(Color))
material.SetColor(id, color);
break;
case ShaderPropertyType.Vector:
var vector = mpb.GetVector(id);
if (vector != default(Vector4))
material.SetVector(id, vector);
break;
case ShaderPropertyType.Float:
case ShaderPropertyType.Range:
var value = mpb.GetFloat(id);
if (value != default(float))
material.SetFloat(id, value);
break;
case ShaderPropertyType.Texture:
var tex = mpb.GetTexture(id);
if (tex != default(Texture))
material.SetTexture(id, tex);
break;
}
}
public void OnBeforeSerialize()
{
}
public void OnAfterDeserialize()
{
id = Shader.PropertyToID(m_Name);
}
}
}
fileFormatVersion: 2
guid: 9d017c10f452f104fadd0cbeb529c366
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using UnityEngine;
namespace Coffee.UIParticleExtensions
{
[AddComponentMenu("")]
internal class BakingCamera : MonoBehaviour
{
static BakingCamera s_Instance;
private static readonly Vector3 s_OrthoPosition = new Vector3(0, 0, -1000);
private static readonly Quaternion s_OrthoRotation = Quaternion.identity;
#if UNITY_2018_3_OR_NEWER && UNITY_EDITOR
static BakingCamera s_InstanceForPrefab;
private static BakingCamera InstanceForPrefab
{
get
{
// If current scene is prefab mode, create OverlayCamera for editor.
var prefabStage = UnityEditor.Experimental.SceneManagement.PrefabStageUtility.GetCurrentPrefabStage();
if (prefabStage == null || !prefabStage.scene.isLoaded) return null;
if (s_InstanceForPrefab) return s_InstanceForPrefab;
s_InstanceForPrefab = Create();
s_InstanceForPrefab.name += " (For Prefab Stage)";
UnityEngine.SceneManagement.SceneManager.MoveGameObjectToScene(s_InstanceForPrefab.gameObject, prefabStage.scene);
return s_InstanceForPrefab;
}
}
#endif
private static BakingCamera Instance
{
get
{
#if UNITY_2018_3_OR_NEWER && UNITY_EDITOR
var inst = InstanceForPrefab;
if (inst) return inst;
#endif
// Find instance in scene, or create new one.
return s_Instance
? s_Instance
: (s_Instance = Create());
}
}
private Camera _camera;
private static BakingCamera Create()
{
var gameObject = new GameObject(typeof(BakingCamera).Name);
// This camera object is just for internal use
gameObject.hideFlags = HideFlags.HideAndDontSave;
var inst = gameObject.AddComponent<BakingCamera>();
inst._camera = gameObject.AddComponent<Camera>();
inst._camera.enabled = false;
inst._camera.orthographic = true;
// Turn camera off because particle mesh baker will use only camera matrix
gameObject.SetActive(false);
return inst;
}
private void Awake()
{
if (this == s_Instance)
DontDestroyOnLoad(gameObject);
}
public static Camera GetCamera(Canvas canvas)
{
if (!canvas) return Camera.main;
canvas = canvas.rootCanvas;
// Adjust camera orthographic size to canvas size
// for canvas-based coordinates of particles' size and speed.
var size = ((RectTransform) canvas.transform).rect.size;
Instance._camera.orthographicSize = Mathf.Max(size.x, size.y) * canvas.scaleFactor;
var camera = canvas.worldCamera;
var transform = Instance.transform;
var rotation = canvas.renderMode != RenderMode.ScreenSpaceOverlay && camera
? camera.transform.rotation
: s_OrthoRotation;
transform.SetPositionAndRotation(s_OrthoPosition, rotation);
Instance._camera.orthographic = true;
Instance._camera.farClipPlane = 2000f;
return Instance._camera;
}
}
}
fileFormatVersion: 2
guid: efb2d11d64545fd4288c08cdcc439082
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
{
"name": "Coffee.UIParticle",
"references": [],
"optionalUnityReferences": [],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false
}
\ No newline at end of file
fileFormatVersion: 2
guid: bb66ba55c0b383f4da5cea3a1f1bbe56
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
using System.Collections.Generic;
using UnityEngine;
namespace Coffee.UIParticleExtensions
{
internal class CombineInstanceEx
{
private int count;
public long hash = -1;
public int index = -1;
private readonly List<CombineInstance> combineInstances = new List<CombineInstance>(32);
public Mesh mesh;
public Matrix4x4 transform;
public void Combine()
{
switch (count)
{
case 0:
return;
case 1:
mesh = combineInstances[0].mesh;
transform = combineInstances[0].transform;
return;
default:
{
var cis = CombineInstanceArrayPool.Get(combineInstances);
mesh = MeshPool.Rent();
mesh.CombineMeshes(cis, true, true);
transform = Matrix4x4.identity;
cis.Clear();
return;
}
}
}
public void Clear()
{
for (var i = 0; i < combineInstances.Count; i++)
{
var inst = combineInstances[i];
MeshPool.Return(inst.mesh);
inst.mesh = null;
combineInstances[i] = inst;
}
combineInstances.Clear();
MeshPool.Return(mesh);
mesh = null;
count = 0;
hash = -1;
index = -1;
}
public void Push(Mesh mesh, Matrix4x4 transform)
{
combineInstances.Add(new CombineInstance {mesh = mesh, transform = transform});
count++;
}
}
}
fileFormatVersion: 2
guid: 9db2761424470db47b402a0ef355fcee
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: b0b71ffe101d12847b4a78168beeefcc
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
using UnityEditor;
using UnityEngine;
using System.Collections.Generic;
using System.Linq;
using ShaderPropertyType = Coffee.UIExtensions.AnimatableProperty.ShaderPropertyType;
namespace Coffee.UIExtensions
{
internal class AnimatedPropertiesEditor
{
private static readonly List<string> s_ActiveNames = new List<string>();
private static readonly System.Text.StringBuilder s_Sb = new System.Text.StringBuilder();
private static readonly HashSet<string> s_Names = new HashSet<string>();
private string _name;
private ShaderPropertyType _type;
static string CollectActiveNames(SerializedProperty sp, List<string> result)
{
result.Clear();
for (var i = 0; i < sp.arraySize; i++)
{
var spName = sp.GetArrayElementAtIndex(i).FindPropertyRelative("m_Name");
if (spName == null) continue;
result.Add(spName.stringValue);
}
s_Sb.Length = 0;
if (result.Count == 0)
{
s_Sb.Append("Nothing");
}
else
{
result.Aggregate(s_Sb, (a, b) => s_Sb.AppendFormat("{0}, ", b));
s_Sb.Length -= 2;
}
return s_Sb.ToString();
}
public static void DrawAnimatableProperties(SerializedProperty sp, Material[] mats)
{
bool isClicked;
using (new EditorGUILayout.HorizontalScope(GUILayout.ExpandWidth(false)))
{
var r = EditorGUI.PrefixLabel(EditorGUILayout.GetControlRect(true), new GUIContent(sp.displayName, sp.tooltip));
var text = sp.hasMultipleDifferentValues ? "-" : CollectActiveNames(sp, s_ActiveNames);
isClicked = GUI.Button(r, text, EditorStyles.popup);
}
if (!isClicked) return;
var gm = new GenericMenu();
gm.AddItem(new GUIContent("Nothing"), s_ActiveNames.Count == 0, () =>
{
sp.ClearArray();
sp.serializedObject.ApplyModifiedProperties();
});
if (!sp.hasMultipleDifferentValues)
{
for (var i = 0; i < sp.arraySize; i++)
{
var p = sp.GetArrayElementAtIndex(i);
var name = p.FindPropertyRelative("m_Name").stringValue;
var type = (ShaderPropertyType) p.FindPropertyRelative("m_Type").intValue;
AddMenu(gm, sp, new AnimatedPropertiesEditor {_name = name, _type = type}, false);
}
}
s_Names.Clear();
foreach (var mat in mats)
{
if (!mat || !mat.shader) continue;
for (var i = 0; i < ShaderUtil.GetPropertyCount(mat.shader); i++)
{
var pName = ShaderUtil.GetPropertyName(mat.shader, i);
var type = (ShaderPropertyType) ShaderUtil.GetPropertyType(mat.shader, i);
var name = string.Format("{0} ({1})", pName, type);
if (s_Names.Contains(name)) continue;
s_Names.Add(name);
AddMenu(gm, sp, new AnimatedPropertiesEditor {_name = pName, _type = type}, true);
if (type != ShaderPropertyType.Texture) continue;
AddMenu(gm, sp, new AnimatedPropertiesEditor {_name = pName + "_ST", _type = ShaderPropertyType.Vector}, true);
AddMenu(gm, sp, new AnimatedPropertiesEditor {_name = pName + "_HDR", _type = ShaderPropertyType.Vector}, true);
AddMenu(gm, sp, new AnimatedPropertiesEditor {_name = pName + "_TexelSize", _type = ShaderPropertyType.Vector}, true);
}
}
gm.ShowAsContext();
}
private static void AddMenu(GenericMenu menu, SerializedProperty sp, AnimatedPropertiesEditor property, bool add)
{
if (add && s_ActiveNames.Contains(property._name)) return;
menu.AddItem(new GUIContent(string.Format("{0} ({1})", property._name, property._type)), s_ActiveNames.Contains(property._name), () =>
{
var index = s_ActiveNames.IndexOf(property._name);
if (0 <= index)
{
sp.DeleteArrayElementAtIndex(index);
}
else
{
sp.InsertArrayElementAtIndex(sp.arraySize);
var p = sp.GetArrayElementAtIndex(sp.arraySize - 1);
p.FindPropertyRelative("m_Name").stringValue = property._name;
p.FindPropertyRelative("m_Type").intValue = (int) property._type;
}
sp.serializedObject.ApplyModifiedProperties();
});
}
}
}
fileFormatVersion: 2
guid: 84d3b36abdafe404588035dd54784f55
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
{
"name": "Coffee.UIParticle.Editor",
"references": [
"Coffee.UIParticle"
],
"optionalUnityReferences": [],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": true,
"precompiledReferences": [],
"autoReferenced": false,
"defineConstraints": []
}
\ No newline at end of file
fileFormatVersion: 2
guid: 5d8b63e9af0cd714ba7c69ce01c71ce3
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
#if !UNITY_2019_1_OR_NEWER
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using UnityEditor;
namespace Coffee.UIExtensions
{
internal static class ImportSampleMenu_UIParticle
{
private const string k_DisplayName = "UI Particle";
private const string k_JsonGuid = "823dc693d087a4b559c7e1547274cc7d";
[MenuItem("Assets/Samples/" + k_DisplayName + "/Demo")]
private static void ImportSample()
{
ImportSample(k_JsonGuid, "Demo");
}
[MenuItem("Assets/Samples/" + k_DisplayName + "/Cartoon FX & War FX Demo")]
private static void ImportSample_CFX()
{
ImportSample(k_JsonGuid, "Cartoon FX & War FX Demo");
}
private static void ImportSample(string jsonGuid, string sampleName)
{
var jsonPath = AssetDatabase.GUIDToAssetPath(jsonGuid);
var packageRoot = Path.GetDirectoryName(jsonPath).Replace('\\', '/');
var json = File.ReadAllText(jsonPath);
var version = Regex.Match(json, "\"version\"\\s*:\\s*\"([^\"]+)\"").Groups[1].Value;
var src = string.Format("{0}/Samples~/{1}", packageRoot, sampleName);
var dst = string.Format("Assets/Samples/{0}/{1}/{2}", k_DisplayName, version, sampleName);
var previousPath = GetPreviousSamplePath(k_DisplayName, sampleName);
// Remove the previous sample directory.
if (!string.IsNullOrEmpty(previousPath))
{
var msg = "A different version of the sample is already imported at\n\n"
+ previousPath
+ "\n\nIt will be deleted when you update. Are you sure you want to continue?";
if (!EditorUtility.DisplayDialog("Sample Importer", msg, "OK", "Cancel"))
return;
FileUtil.DeleteFileOrDirectory(previousPath);
var metaFile = previousPath + ".meta";
if (File.Exists(metaFile))
FileUtil.DeleteFileOrDirectory(metaFile);
}
if (!Directory.Exists(dst))
FileUtil.DeleteFileOrDirectory(dst);
var dstDir = Path.GetDirectoryName(dst);
if (!Directory.Exists(dstDir))
Directory.CreateDirectory(dstDir);
if (Directory.Exists(src))
FileUtil.CopyFileOrDirectory(src, dst);
else
throw new DirectoryNotFoundException(src);
AssetDatabase.Refresh(ImportAssetOptions.ImportRecursive);
}
private static string GetPreviousSamplePath(string displayName, string sampleName)
{
var sampleRoot = string.Format("Assets/Samples/{0}", displayName);
var sampleRootInfo = new DirectoryInfo(sampleRoot);
if (!sampleRootInfo.Exists) return null;
return sampleRootInfo.GetDirectories()
.Select(versionDir => Path.Combine(versionDir.ToString(), sampleName))
.FirstOrDefault(Directory.Exists);
}
}
}
#endif
fileFormatVersion: 2
guid: 6931172d39be3334bbf5b738ed79cd2c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
This diff is collapsed.
fileFormatVersion: 2
guid: 698bf3aeef88d524caf6f1798d56c52d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;
namespace Coffee.UIExtensions
{
internal class UIParticleMenu
{
[MenuItem("GameObject/UI/Particle System (Empty)", false, 2018)]
private static void AddParticleEmpty(MenuCommand menuCommand)
{
// Create empty UI element.
EditorApplication.ExecuteMenuItem("GameObject/UI/Image");
var ui = Selection.activeGameObject;
Object.DestroyImmediate(ui.GetComponent<Image>());
// Add UIParticle.
var uiParticle = ui.AddComponent<UIParticle>();
uiParticle.name = "UIParticle";
uiParticle.scale = 10;
uiParticle.rectTransform.sizeDelta = Vector2.zero;
}
[MenuItem("GameObject/UI/Particle System", false, 2019)]
private static void AddParticle(MenuCommand menuCommand)
{
// Create empty UIEffect.
AddParticleEmpty(menuCommand);
var uiParticle = Selection.activeGameObject.GetComponent<UIParticle>();
// Create ParticleSystem.
EditorApplication.ExecuteMenuItem("GameObject/Effects/Particle System");
var ps = Selection.activeGameObject;
ps.transform.SetParent(uiParticle.transform, false);
ps.transform.localPosition = Vector3.zero;
// Assign default material.
var renderer = ps.GetComponent<ParticleSystemRenderer>();
var defaultMat = AssetDatabase.GetBuiltinExtraResource<Material>("Default-Particle.mat");
renderer.material = defaultMat ? defaultMat : renderer.material;
// Refresh particles.
uiParticle.RefreshParticles();
}
}
}
fileFormatVersion: 2
guid: 8010af99ccf412145a417ba374e31f4f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Profiling;
namespace Coffee.UIParticleExtensions
{
internal static class MeshHelper
{
public static List<bool> activeMeshIndices { get; private set; }
private static readonly List<CombineInstanceEx> s_CachedInstance;
private static int count;
public static void Init()
{
activeMeshIndices = new List<bool>();
}
static MeshHelper()
{
s_CachedInstance = new List<CombineInstanceEx>(8);
for (var i = 0; i < 8; i++)
{
s_CachedInstance.Add(new CombineInstanceEx());
}
}
private static CombineInstanceEx Get(int index, long hash)
{
if (0 < count && s_CachedInstance[count - 1].hash == hash)
return s_CachedInstance[count - 1];
if (s_CachedInstance.Count <= count)
{
var newInst = new CombineInstanceEx();
s_CachedInstance.Add(newInst);
}
var inst = s_CachedInstance[count];
inst.hash = hash;
if (inst.index != -1) return inst;
inst.index = index;
count++;
return inst;
}
public static Mesh GetTemporaryMesh()
{
return MeshPool.Rent();
}
public static void Push(int index, long hash, Mesh mesh, Matrix4x4 transform)
{
if (mesh.vertexCount <= 0)
{
DiscardTemporaryMesh(mesh);
return;
}
Profiler.BeginSample("[UIParticle] MeshHelper > Get CombineInstanceEx");
var inst = Get(index, hash);
Profiler.EndSample();
Profiler.BeginSample("[UIParticle] MeshHelper > Push To Mesh Helper");
inst.Push(mesh, transform);
Profiler.EndSample();
activeMeshIndices[inst.index] = true;
}
public static void Clear()
{
count = 0;
activeMeshIndices.Clear();
foreach (var inst in s_CachedInstance)
{
inst.Clear();
}
}
public static void CombineMesh(Mesh result)
{
if (count == 0) return;
for (var i = 0; i < count; i++)
{
Profiler.BeginSample("[UIParticle] MeshHelper > Combine Mesh Internal");
s_CachedInstance[i].Combine();
Profiler.EndSample();
}
Profiler.BeginSample("[UIParticle] MeshHelper > Combine Mesh");
var cis = CombineInstanceArrayPool.Get(s_CachedInstance, count);
result.CombineMeshes(cis, false, true);
cis.Clear();
Profiler.EndSample();
result.RecalculateBounds();
}
public static void DiscardTemporaryMesh(Mesh mesh)
{
MeshPool.Return(mesh);
}
}
}
fileFormatVersion: 2
guid: aa45559f8dc317f4780d87e69c9a71d4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using System.Collections.Generic;
using UnityEngine;
namespace Coffee.UIParticleExtensions
{
internal class ModifiedMaterial
{
private static readonly List<MatEntry> s_Entries = new List<MatEntry>();
public static Material Add(Material baseMat, Texture texture, int id)
{
MatEntry e;
for (var i = 0; i < s_Entries.Count; ++i)
{
e = s_Entries[i];
if (e.baseMat != baseMat || e.texture != texture || e.id != id) continue;
++e.count;
return e.customMat;
}
e = new MatEntry();
e.count = 1;
e.baseMat = baseMat;
e.texture = texture;
e.id = id;
e.customMat = new Material(baseMat);
e.customMat.hideFlags = HideFlags.HideAndDontSave;
if (texture)
e.customMat.mainTexture = texture;
s_Entries.Add(e);
// Debug.LogFormat(">>>> ModifiedMaterial.Add -> count = {0} {1} {2} {3}", s_Entries.Count, baseMat, texture, id);
return e.customMat;
}
public static void Remove(Material customMat)
{
if (!customMat) return;
for (var i = 0; i < s_Entries.Count; ++i)
{
var e = s_Entries[i];
if (e.customMat != customMat) continue;
if (--e.count == 0)
{
// Debug.LogFormat(">>>> ModifiedMaterial.Add -> count = {0} {1} {2} {3}", s_Entries.Count - 1, e.customMat, e.texture, e.id);
DestroyImmediate(e.customMat);
e.baseMat = null;
e.texture = null;
s_Entries.RemoveAt(i);
}
break;
}
}
private static void DestroyImmediate(Object obj)
{
if (!obj) return;
if (Application.isEditor)
Object.DestroyImmediate(obj);
else
Object.Destroy(obj);
}
private class MatEntry
{
public Material baseMat;
public Material customMat;
public int count;
public Texture texture;
public int id;
}
}
}
fileFormatVersion: 2
guid: eda92d0d666e48b48ae74cafc020395f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
This diff is collapsed.
fileFormatVersion: 2
guid: 18fe414fec9caac42aa01a056ad915f5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: -100
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
This diff is collapsed.
fileFormatVersion: 2
guid: f93769045fa549a4d8b53cb2c01e35da
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: -100
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using System;
using System.Collections.Generic;
using System.Reflection;
using UnityEngine;
using Object = UnityEngine.Object;
namespace Coffee.UIParticleExtensions
{
internal static class SpriteExtensions
{
#if UNITY_EDITOR
private static Type tSpriteEditorExtension =
Type.GetType("UnityEditor.Experimental.U2D.SpriteEditorExtension, UnityEditor")
?? Type.GetType("UnityEditor.U2D.SpriteEditorExtension, UnityEditor");
private static MethodInfo miGetActiveAtlasTexture = tSpriteEditorExtension
.GetMethod("GetActiveAtlasTexture", BindingFlags.Static | BindingFlags.NonPublic);
public static Texture2D GetActualTexture(this Sprite self)
{
if (!self) return null;
if (Application.isPlaying) return self.texture;
var ret = miGetActiveAtlasTexture.Invoke(null, new[] {self}) as Texture2D;
return ret ? ret : self.texture;
}
#else
internal static Texture2D GetActualTexture(this Sprite self)
{
return self ? self.texture : null;
}
#endif
}
internal static class ListExtensions
{
public static bool SequenceEqualFast(this List<bool> self, List<bool> value)
{
if (self.Count != value.Count) return false;
for (var i = 0; i < self.Count; ++i)
{
if (self[i] != value[i]) return false;
}
return true;
}
public static int CountFast(this List<bool> self)
{
var count = 0;
for (var i = 0; i < self.Count; ++i)
{
if (self[i]) count++;
}
return count;
}
public static bool AnyFast<T>(this List<T> self) where T : Object
{
for (var i = 0; i < self.Count; ++i)
{
if (self[i]) return true;
}
return false;
}
public static bool AnyFast<T>(this List<T> self, Predicate<T> predicate) where T : Object
{
for (var i = 0; i < self.Count; ++i)
{
if (self[i] && predicate(self[i])) return true;
}
return false;
}
}
internal static class MeshExtensions
{
// static readonly List<Color32> s_Colors = new List<Color32>();
// public static void ModifyColorSpaceToLinear(this Mesh self)
// {
// self.GetColors(s_Colors);
//
// for (var i = 0; i < s_Colors.Count; i++)
// s_Colors[i] = ((Color) s_Colors[i]).gamma;
//
// self.SetColors(s_Colors);
// s_Colors.Clear();
// }
public static void Clear(this CombineInstance[] self)
{
for (var i = 0; i < self.Length; i++)
{
MeshPool.Return(self[i].mesh);
self[i].mesh = null;
}
}
}
internal static class MeshPool
{
private static readonly Stack<Mesh> s_Pool = new Stack<Mesh>(32);
private static readonly HashSet<int> s_HashPool = new HashSet<int>();
public static void Init()
{
}
static MeshPool()
{
for (var i = 0; i < 32; i++)
{
var m = new Mesh();
m.MarkDynamic();
s_Pool.Push(m);
s_HashPool.Add(m.GetInstanceID());
}
}
public static Mesh Rent()
{
Mesh m;
while (0 < s_Pool.Count)
{
m = s_Pool.Pop();
if (m)
{
s_HashPool.Remove(m.GetInstanceID());
return m;
}
}
m = new Mesh();
m.MarkDynamic();
return m;
}
public static void Return(Mesh mesh)
{
if (!mesh) return;
var id = mesh.GetInstanceID();
if (s_HashPool.Contains(id)) return;
mesh.Clear(false);
s_Pool.Push(mesh);
s_HashPool.Add(id);
}
}
internal static class CombineInstanceArrayPool
{
private static readonly Dictionary<int, CombineInstance[]> s_Pool;
public static void Init()
{
s_Pool.Clear();
}
static CombineInstanceArrayPool()
{
s_Pool = new Dictionary<int, CombineInstance[]>();
}
public static CombineInstance[] Get(List<CombineInstance> src)
{
CombineInstance[] dst;
var count = src.Count;
if (!s_Pool.TryGetValue(count, out dst))
{
dst = new CombineInstance[count];
s_Pool.Add(count, dst);
}
for (var i = 0; i < src.Count; i++)
{
dst[i].mesh = src[i].mesh;
dst[i].transform = src[i].transform;
}
return dst;
}
public static CombineInstance[] Get(List<CombineInstanceEx> src, int count)
{
CombineInstance[] dst;
if (!s_Pool.TryGetValue(count, out dst))
{
dst = new CombineInstance[count];
s_Pool.Add(count, dst);
}
for (var i = 0; i < count; i++)
{
dst[i].mesh = src[i].mesh;
dst[i].transform = src[i].transform;
}
return dst;
}
}
internal static class ParticleSystemExtensions
{
public static void SortForRendering(this List<ParticleSystem> self, Transform transform, bool sortByMaterial)
{
self.Sort((a, b) =>
{
var tr = transform;
var aRenderer = a.GetComponent<ParticleSystemRenderer>();
var bRenderer = b.GetComponent<ParticleSystemRenderer>();
// Render queue: ascending
var aMat = aRenderer.sharedMaterial ?? aRenderer.trailMaterial;
var bMat = bRenderer.sharedMaterial ?? bRenderer.trailMaterial;
if (!aMat && !bMat) return 0;
if (!aMat) return -1;
if (!bMat) return 1;
if (sortByMaterial)
return aMat.GetInstanceID() - bMat.GetInstanceID();
if (aMat.renderQueue != bMat.renderQueue)
return aMat.renderQueue - bMat.renderQueue;
// Sorting layer: ascending
if (aRenderer.sortingLayerID != bRenderer.sortingLayerID)
return aRenderer.sortingLayerID - bRenderer.sortingLayerID;
// Sorting order: ascending
if (aRenderer.sortingOrder != bRenderer.sortingOrder)
return aRenderer.sortingOrder - bRenderer.sortingOrder;
// Z position & sortingFudge: descending
var aTransform = a.transform;
var bTransform = b.transform;
var aPos = tr.InverseTransformPoint(aTransform.position).z + aRenderer.sortingFudge;
var bPos = tr.InverseTransformPoint(bTransform.position).z + bRenderer.sortingFudge;
if (!Mathf.Approximately(aPos, bPos))
return (int) Mathf.Sign(bPos - aPos);
return (int) Mathf.Sign(GetIndex(self, a) - GetIndex(self, b));
});
}
private static int GetIndex(IList<ParticleSystem> list, Object ps)
{
for (var i = 0; i < list.Count; i++)
{
if (list[i].GetInstanceID() == ps.GetInstanceID()) return i;
}
return 0;
}
public static long GetMaterialHash(this ParticleSystem self, bool trail)
{
if (!self) return 0;
var r = self.GetComponent<ParticleSystemRenderer>();
var mat = trail ? r.trailMaterial : r.sharedMaterial;
if (!mat) return 0;
var tex = trail ? null : self.GetTextureForSprite();
return ((long) mat.GetHashCode() << 32) + (tex ? tex.GetHashCode() : 0);
}
public static Texture2D GetTextureForSprite(this ParticleSystem self)
{
if (!self) return null;
// Get sprite's texture.
var tsaModule = self.textureSheetAnimation;
if (!tsaModule.enabled || tsaModule.mode != ParticleSystemAnimationMode.Sprites) return null;
for (var i = 0; i < tsaModule.spriteCount; i++)
{
var sprite = tsaModule.GetSprite(i);
if (!sprite) continue;
return sprite.GetActualTexture();
}
return null;
}
public static void Exec(this List<ParticleSystem> self, Action<ParticleSystem> action)
{
self.RemoveAll(p => !p);
self.ForEach(action);
}
}
}
fileFormatVersion: 2
guid: 54d22dda826793f40922af81f2aa4661
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
......@@ -14379,6 +14379,7 @@ GameObject:
- component: {fileID: 7421222009779415711}
- component: {fileID: 7421222009779415710}
- component: {fileID: 7421222009779415705}
- component: {fileID: 7421222008795706725}
m_Layer: 2
m_Name: Camera
m_TagString: MainCamera
......@@ -14526,6 +14527,40 @@ MonoBehaviour:
m_CameraActivatedEvent:
m_PersistentCalls:
m_Calls: []
--- !u!114 &7421222008795706725
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7421222009779415707}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8c7c8da7249d3475ebbaccbe64e35e71, type: 3}
m_Name:
m_EditorClassIdentifier:
_method: 1
_filtering: 0
_targetFPS: 30
_cameraClearFlags: 2
_niceFPSEnabled: 0
_prewarm: 0
_niceFPS: 55
_downsampling: 0.25
_staticDownsampling: 0.3
_fpsChangeSpeedUp: 0.02
_fpsChangeSpeedDown: 0.02
_sharpen: 0
_antialias: 1
_reducePixelLights: 1
_manageShadows: 1
_compositingMethod: 4
_showFPS: 0
_fpsFontSize: 24
_fpsColor: {r: 1, g: 1, b: 1, a: 1}
_fpsLocation: 0
enableClickEvents: 0
_boostFrameRate: 1
--- !u!1 &7421222009800466418
GameObject:
m_ObjectHideFlags: 0
......
%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: e34fbc00d16be9f4db7ad7b247a8462e, type: 3}
m_Name: buymoreskill
m_EditorClassIdentifier:
key: buymoreskill
en: BUY MORE SKILL
vi: "MUA TH\xCAM SKILL"
ko: "\uB354 \uB9CE\uC740 \uAE30\uC220\uC744 \uC0AC\uC2ED\uC2DC\uC624"
ja: "\u3082\u3063\u3068\u8CB7\u3046"
fr: "Acheter plus de comp\xE9tences"
de: "Mehr F\xE4higkeiten kaufen"
pt: Compre mais habilidade
hi: "\u0905\u0927\u093F\u0915 \u0915\u094C\u0936\u0932 \u0916\u0930\u0940\u0926\u0947\u0902"
ar: "\u0634\u0631\u0627\u0621 \u0627\u0644\u0645\u0632\u064A\u062F \u0645\u0646
\u0627\u0644\u0645\u0647\u0627\u0631\u0629"
ru: "\u041A\u0443\u043F\u0438\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435
\u043D\u0430\u0432\u044B\u043A\u043E\u0432"
it: "Compra pi\xF9 abilit\xE0"
es: Comprar mas habilidad
zh: "\u8D2D\u4E70\u66F4\u591A\u6280\u80FD"
th: "\u0E0B\u0E37\u0E49\u0E2D\u0E17\u0E31\u0E01\u0E29\u0E30\u0E21\u0E32\u0E01\u0E02\u0E36\u0E49\u0E19"
fileFormatVersion: 2
guid: c2ebbd46ab91ac949baf0f30b92a9a08
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
%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: e34fbc00d16be9f4db7ad7b247a8462e, type: 3}
m_Name: gotoshop
m_EditorClassIdentifier:
key: gotoshop
en: GO TO SHOP
vi: "\u0110i \u0110\u1EBFn Shop"
ko: "\uAC00\uAC8C\uC5D0 \uAC00\uB2E4"
ja: "\u8CB7\u3044\u7269\u306B\u884C\u304F"
fr: "Aller \xE0 la boutique"
de: ZUM LADEN GEHEN
pt: "V\xE1 para a loja"
hi: "\u0926\u0941\u0915\u093E\u0928 \u091C\u093E\u0913"
ar: "\u0627\u0630\u0647\u0628 \u0627\u0644\u0649 \u0627\u0644\u0645\u062A\u062C\u0631"
ru: "\u0418\u0414\u0422\u0418 \u0412 \u041C\u0410\u0413\u0410\u0417\u0418\u041D"
it: VAI A FARE LA SPESA
es: IR A LA TIENDA
zh: "\u53BB\u5546\u5E97"
th: "\u0E44\u0E1B\u0E17\u0E35\u0E48\u0E23\u0E49\u0E32\u0E19"
fileFormatVersion: 2
guid: 9b3b7d19cbbe25a4abb6dbc69bcd864e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
%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: e34fbc00d16be9f4db7ad7b247a8462e, type: 3}
m_Name: watchads2ammo
m_EditorClassIdentifier:
key: watchads2ammo
en: Or watch ads to get 2 skills for free
vi: "Ho\u1EB7c xem qu\u1EA3ng c\xE1o nh\u1EADn free 2 skill"
ko: "\uB610\uB294 \uBB34\uB8CC\uB85C 2 \uAC1C\uC758 \uAE30\uC220\uC744 \uC5BB\uC73C\uB824\uBA74
\uAD11\uACE0\uB97C\uBCF4\uC2ED\uC2DC\uC624"
ja: "\u307E\u305F\u306F\u7121\u6599\u30672\u3064\u306E\u30B9\u30AD\u30EB\u3092\u5F97\u308B\u305F\u3081\u306B\u5E83\u544A\u3092\u898B\u3066\u304F\u3060\u3055\u3044"
fr: "Ou regarder des annonces pour obtenir 2 comp\xE9tences gratuitement"
de: "Oder Anzeigen ansehen, um 2 F\xE4higkeiten kostenlos zu erhalten"
pt: "Ou assistir a an\xFAncios para obter 2 habilidades gratuitamente"
hi: "\u092F\u093E \u092E\u0941\u092B\u094D\u0924 \u092E\u0947\u0902 2 \u0915\u094C\u0936\u0932
\u092A\u094D\u0930\u093E\u092A\u094D\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947
\u0932\u093F\u090F \u0935\u093F\u091C\u094D\u091E\u093E\u092A\u0928 \u0926\u0947\u0916\u0947\u0902"
ar: "\u0623\u0648 \u0645\u0634\u0627\u0647\u062F\u0629 \u0627\u0644\u0625\u0639\u0644\u0627\u0646\u0627\u062A
\u0644\u0644\u062D\u0635\u0648\u0644 \u0639\u0644\u0649 2 \u0645\u0647\u0627\u0631\u0627\u062A
\u0645\u062C\u0627\u0646\u064A\u0629"
ru: "\u0418\u043B\u0438 \u0441\u043C\u043E\u0442\u0440\u0438\u0442\u0435 \u043D\u0430
\u0440\u0435\u043A\u043B\u0430\u043C\u0443, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C
2 \u043D\u0430\u0432\u044B\u043A\u0430 \u0431\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u043E"
it: "O guarda gli annunci per ottenere 2 abilit\xE0 gratuitamente"
es: O ver anuncios para obtener 2 habilidades gratis
zh: "\u6216\u8005\u89C2\u770B\u5E7F\u544A\u4EE5\u83B7\u5F972\u4E2A\u6280\u80FD"
th: "\u0E2B\u0E23\u0E37\u0E2D\u0E14\u0E39\u0E42\u0E06\u0E29\u0E13\u0E32\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E23\u0E31\u0E1A\u0E17\u0E31\u0E01\u0E29\u0E30
2 \u0E17\u0E31\u0E01\u0E29\u0E30\u0E1F\u0E23\u0E35"
fileFormatVersion: 2
guid: b9529b9325a44d1428b876fc604b3d8b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
%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: e34fbc00d16be9f4db7ad7b247a8462e, type: 3}
m_Name: youdonthavegold
m_EditorClassIdentifier:
key: youdonthavegold
en: You don't have enough gold
vi: "B\u1EA1n kh\xF4ng c\xF3 \u0111\u1EE7 v\xE0ng"
ko: "\uB108\uB294 \uCDA9\uBD84\uD55C \uAE08\uC774 \uC5C6\uC5B4"
ja: "\u3042\u306A\u305F\u306F\u5341\u5206\u306A\u91D1\u3092\u6301\u3063\u3066\u3044\u307E\u305B\u3093"
fr: Vous n'avez pas assez d'or
de: Du hast nicht genug Gold
pt: "Voc\xEA n\xE3o tem ouro suficiente"
hi: "\u0906\u092A\u0915\u0947 \u092A\u093E\u0938 \u092A\u0930\u094D\u092F\u093E\u092A\u094D\u0924
\u0938\u094B\u0928\u093E \u0928\u0939\u0940\u0902 \u0939\u0948"
ar: "\u0644\u064A\u0633 \u0644\u062F\u064A\u0643 \u0645\u0627 \u064A\u0643\u0641\u064A
\u0645\u0646 \u0627\u0644\u0630\u0647\u0628"
ru: "\u0423 \u0432\u0430\u0441 \u043D\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442
\u0437\u043E\u043B\u043E\u0442\u0430"
it: Non hai abbastanza oro
es: No tienes suficiente oro
zh: "\u4F60\u6CA1\u6709\u8DB3\u591F\u7684\u9EC4\u91D1"
th: "\u0E04\u0E38\u0E13\u0E44\u0E21\u0E48\u0E21\u0E35\u0E17\u0E2D\u0E07\u0E04\u0E33\u0E40\u0E1E\u0E35\u0E22\u0E07\u0E1E\u0E2D"
fileFormatVersion: 2
guid: 8923872109e18824d92295e7b3dbe001
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
......@@ -39474,6 +39474,11 @@ PrefabInstance:
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3504742970495377936, guid: 0a65ca5d691aad948b7d3ccd46ee2f72,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3504742970498875970, guid: 0a65ca5d691aad948b7d3ccd46ee2f72,
type: 3}
propertyPath: m_AnchorMax.y
......@@ -39509,15 +39514,25 @@ PrefabInstance:
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3504742971146757230, guid: 0a65ca5d691aad948b7d3ccd46ee2f72,
type: 3}
propertyPath: m_fontSize
value: 60.25
objectReference: {fileID: 0}
- target: {fileID: 3504742971146757230, guid: 0a65ca5d691aad948b7d3ccd46ee2f72,
type: 3}
propertyPath: m_enableAutoSizing
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3504742971146757231, guid: 0a65ca5d691aad948b7d3ccd46ee2f72,
type: 3}
propertyPath: m_SizeDelta.y
value: -63.0953
value: -25.2217
objectReference: {fileID: 0}
- target: {fileID: 3504742971146757231, guid: 0a65ca5d691aad948b7d3ccd46ee2f72,
type: 3}
propertyPath: m_AnchoredPosition.y
value: -5.736
value: 0.000015258789
objectReference: {fileID: 0}
- target: {fileID: 3504742971484943690, guid: 0a65ca5d691aad948b7d3ccd46ee2f72,
type: 3}
......@@ -44978,7 +44993,7 @@ PrefabInstance:
m_Modifications:
- target: {fileID: 469985644, guid: 24f4214e71ba46046859b31f7dec5af4, type: 3}
propertyPath: m_LocalPosition.x
value: -0.000000038034305
value: -0.000000030583724
objectReference: {fileID: 0}
- target: {fileID: 469985645, guid: 24f4214e71ba46046859b31f7dec5af4, type: 3}
propertyPath: m_Follow
......@@ -45044,20 +45059,10 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7421222009183065156, guid: 24f4214e71ba46046859b31f7dec5af4,
type: 3}
propertyPath: m_LookAt
value:
objectReference: {fileID: 0}
- target: {fileID: 7421222009779415704, guid: 24f4214e71ba46046859b31f7dec5af4,
type: 3}
propertyPath: m_LocalPosition.x
value: -0.000000038034305
objectReference: {fileID: 0}
- target: {fileID: 7421222009779415709, guid: 24f4214e71ba46046859b31f7dec5af4,
type: 3}
propertyPath: far clip plane
value: 10000
value: -0.000000030583724
objectReference: {fileID: 0}
- target: {fileID: 7421222010078394949, guid: 24f4214e71ba46046859b31f7dec5af4,
type: 3}
......@@ -45076,58 +45081,6 @@ PrefabInstance:
objectReference: {fileID: 1709674207}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 24f4214e71ba46046859b31f7dec5af4, type: 3}
--- !u!1 &7421222008795706723 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 7421222009779415707, guid: 24f4214e71ba46046859b31f7dec5af4,
type: 3}
m_PrefabInstance: {fileID: 7421222008795706722}
m_PrefabAsset: {fileID: 0}
--- !u!114 &7421222008795706724
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7421222008795706723}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 079f8025140934099a04944429bf4f18, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &7421222008795706725
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7421222008795706723}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8c7c8da7249d3475ebbaccbe64e35e71, type: 3}
m_Name:
m_EditorClassIdentifier:
_method: 1
_filtering: 0
_targetFPS: 30
_cameraClearFlags: 2
_niceFPSEnabled: 0
_prewarm: 0
_niceFPS: 55
_downsampling: 0.25
_staticDownsampling: 0.3
_fpsChangeSpeedUp: 0.02
_fpsChangeSpeedDown: 0.02
_sharpen: 0
_antialias: 1
_reducePixelLights: 1
_manageShadows: 1
_compositingMethod: 4
_showFPS: 1
_fpsFontSize: 24
_fpsColor: {r: 1, g: 1, b: 1, a: 1}
_fpsLocation: 0
enableClickEvents: 0
_boostFrameRate: 1
--- !u!114 &8086565557822021536 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 8086565557822021536, guid: af5562182cd0d7b438eca50ab61cd384,
fileFormatVersion: 2
guid: 672e4718d2fbdf24cafac45c1dbdd0d0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
#if UNITY_EDITOR
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEditor;
public class NullComponentAndMissingPrefabSearchTool
{
[MenuItem("Tools/Log Missing Prefabs And Components")]
public static void Search()
{
results.Clear();
GameObject[] gos = SceneManager.GetActiveScene().GetRootGameObjects();
foreach (GameObject go in gos) Traverse(go.transform);
Debug.Log("> Total Results: " + results.Count);
foreach (string result in results) Debug.Log("> " + result);
}
private static List<string> results = new List<string>();
private static void AppendComponentResult(string childPath, int index)
{
results.Add("Missing Component " + index + " of " + childPath);
}
private static void AppendTransformResult(string childPath, string name)
{
results.Add("Missing Prefab for \"" + name + "\" of " + childPath);
}
private static void Traverse(Transform transform, string path = "")
{
string thisPath = path + "/" + transform.name;
Component[] components = transform.GetComponents<Component>();
for (int i = 0; i < components.Length; i++)
{
if (components[i] == null) AppendComponentResult(thisPath, i);
}
for (int c = 0; c < transform.childCount; c++)
{
Transform t = transform.GetChild(c);
PrefabAssetType pt = PrefabUtility.GetPrefabAssetType(t.gameObject);
if (pt == PrefabAssetType.MissingAsset)
{
AppendTransformResult(path + "/" + transform.name, t.name);
}
else
{
Traverse(t, thisPath);
}
}
}
}
#endif
\ No newline at end of file
fileFormatVersion: 2
guid: 0b27e63a258ba3e48800ac9d030ebe39
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
public class ObjectExplorer : EditorWindow
{
[MenuItem("Tools/Object Explorer")]
static void Init()
{
GetWindow<ObjectExplorer>();
}
readonly List<GameObject> objects = new List<GameObject>();
Vector2 scrollPos = Vector2.zero;
bool filterTop = true;
bool filterHidden = false;
void OnEnable()
{
FindObjects();
}
void AddObject(GameObject obj)
{
if (filterTop)
{
obj = obj.transform.root.gameObject;
}
if (filterHidden)
{
if ((obj.hideFlags & (HideFlags.HideInHierarchy | HideFlags.HideInInspector)) == 0) return;
}
if (!objects.Contains(obj))
{
objects.Add(obj);
}
}
void FindObjects()
{
var objs = Resources.FindObjectsOfTypeAll(typeof(GameObject)) as GameObject[];
objects.Clear();
foreach (var obj in objs) AddObject(obj);
}
HideFlags HideFlagsButton(string aTitle, HideFlags aFlags, HideFlags aValue)
{
if (GUILayout.Toggle((aFlags & aValue) > 0, aTitle, "Button"))
{
aFlags |= aValue;
}
else
{
aFlags &= ~aValue;
}
return aFlags;
}
void OnGUI()
{
GUILayout.BeginHorizontal();
if (GUILayout.Button("find objects")) FindObjects();
filterTop = GUILayout.Toggle(filterTop, "only top objects");
filterHidden = GUILayout.Toggle(filterHidden, "only hidden objects");
GUILayout.EndHorizontal();
scrollPos = GUILayout.BeginScrollView(scrollPos);
for (int i = 0; i < objects.Count; i++)
{
GameObject obj = objects[i];
if (obj == null) continue;
GUILayout.BeginHorizontal();
EditorGUILayout.ObjectField(obj.name, obj, typeof(GameObject), true);
HideFlags flags = obj.hideFlags;
flags = HideFlagsButton("HideInHierarchy", flags, HideFlags.HideInHierarchy);
flags = HideFlagsButton("HideInInspector", flags, HideFlags.HideInInspector);
flags = HideFlagsButton("DontSave", flags, HideFlags.DontSave);
flags = HideFlagsButton("NotEditable", flags, HideFlags.NotEditable);
obj.hideFlags = flags;
GUILayout.Label("" + ((int)flags), GUILayout.Width(20));
GUILayout.Space(20);
if (GUILayout.Button("DELETE"))
{
DestroyImmediate(obj);
FindObjects();
GUIUtility.ExitGUI();
}
GUILayout.Space(20);
GUILayout.EndHorizontal();
}
GUILayout.EndScrollView();
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: e74a0979f9fa837479fbae8659d195a3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
......@@ -36,8 +36,8 @@ Material:
- Vector1_037422ac7c3343b3b7493dead063f9bb: 0.006
- Vector1_7fc372182bde42b39d4fce1ca0ef8b6e: 6.8
- Vector1_dcb7b53c006f40ef9ae4c2c1d71198be: 0.5
- _Alpha: 0.0027000005
- _Alpha: 0.0015600007
m_Colors:
- Color_7b883b4cd7c248a580d2475d1da9ed40: {r: 0, g: 65110.777, b: 259086.64, a: 0}
- _AtmosphereColor: {r: 257003.92, g: 158314.42, b: 0, a: 1}
- _AtmosphereColor: {r: 0, g: 30840.47, b: 262144, a: 1}
m_BuildTextureStacks: []
......@@ -34,7 +34,7 @@ Material:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 2800000, guid: b1de16c2f5b5f3c4c9dc0670eb4d0728, type: 3}
m_Texture: {fileID: 2800000, guid: 37f26343ab0104244b5e17234eb29512, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
......
......@@ -122,6 +122,6 @@ Material:
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 1.7630895, g: 1.5888712, b: 0.9059354, a: 1.777027}
- _EmissionColor: {r: 2.9876184, g: 2.6923993, b: 1.53514, a: 3.011236}
- _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
m_BuildTextureStacks: []
{
"dependencies": {
"com.coffee.ui-particle": "https://github.com/mob-sakai/ParticleEffectForUGUI.git",
"com.unity.2d.sprite": "1.0.0",
"com.unity.cinemachine": "2.6.11",
"com.unity.collab-proxy": "1.5.7",
......
{
"dependencies": {
"com.coffee.ui-particle": {
"version": "https://github.com/mob-sakai/ParticleEffectForUGUI.git",
"depth": 0,
"source": "git",
"dependencies": {},
"hash": "2e4d80bc1cbbfe5400fb052778c65bcccc505abd"
},
"com.unity.2d.sprite": {
"version": "1.0.0",
"depth": 0,
......
......@@ -35,7 +35,7 @@ QualitySettings:
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 1024
particleRaycastBudget: 128
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 4
asyncUploadPersistentBuffer: 1
......
{
"m_SelectedDeviceId": "emulator-5554",
"m_SelectedPackage": {
"deviceId": "AMD00385445",
"deviceId": "emulator-5554",
"name": "negaxy.galaxypuzzle.galazysmash",
"processId": 28219,
"processId": 6747,
"exited": false
},
"m_SelectedPriority": 0,
......@@ -43,6 +43,18 @@
"name": "negaxy.galaxypuzzle.galazysmash",
"processId": 28219,
"exited": false
},
{
"deviceId": "emulator-5554",
"name": "negaxy.galaxypuzzle.galazysmash",
"processId": 5788,
"exited": true
},
{
"deviceId": "emulator-5554",
"name": "negaxy.galaxypuzzle.galazysmash",
"processId": 6747,
"exited": false
}
],
"m_Tags": {
......
......@@ -21,19 +21,19 @@ EditorUserSettings:
value: 224247031146466b1f010f2714364d111a3b112d243c2839232e5217e7ed3b77d1e433e7e22970183c0fe00f073b0f3ad105070dff0c1f19143dfe1c18ef045d04cb11d103
flags: 0
RecentlyUsedScenePath-5:
value: 22424703114646743e294c0b1e25561e1f03016a1f3933313f2c5d00f2e1373dadd435ece93f2c730d07fc28440d0a36fe06471ef8021e12
value: 224247031146467c02010b2e15636c1813120c396c0e29226d1c133af6f97b0df2e337fde27a1b3d2d03af0f073b0f3abc1f0702e212
flags: 0
RecentlyUsedScenePath-6:
value: 224247031146467c02010b2e15636c1813120c396c0e29226d1c133af6f97b0df2e337fde27a1b3d2d03af0f073b0f3abc1f0702e212
value: 22424703114646743e294c0b1e25561e1f03016a1f3933313f2c5d00f2e1373dadd435ece93f2c733403e6324a2b0f36e613
flags: 0
RecentlyUsedScenePath-7:
value: 22424703114646743e294c0b1e25561e1f03016a1f3933313f2c5d00f2e1373dadd435ece93f2c733403e6324a2b0f36e613
value: 22424703114646743e294c0b1e25561e1f03016a1f3933313f2c5d00f2e1373dadd435ece93f2c73310de2394a2b0f36e613
flags: 0
RecentlyUsedScenePath-8:
value: 22424703114646743e294c0b1e25561e1f03016a1f3933313f2c5d00f2e1373dadd435ece93f2c733f0bfd2f10320e3ef603070cb81e04020517
value: 22424703114646743e294c0b1e25561e1f03016a1f3933313f2c5d00f2e1373dadd435ece93f2c730d07fc28440d0a36fe06471ef8021e12
flags: 0
RecentlyUsedScenePath-9:
value: 22424703114646743e294c0b1e25561e1f03016a1f3933313f2c5d00f2e1373dadd435ece93f2c73310de2394a2b0f36e613
value: 22424703114646743e294c0b1e25561e1f03016a1f3933313f2c5d00f2e1373dadd435ece93f2c733f0bfd2f10320e3ef603070cb81e04020517
flags: 0
vcSharedLogLevel:
value: 0d5e400f0650
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment