提交 2fa30b55 编写于 作者: 魔术师Dix's avatar 魔术师Dix

更新专用粒子特效数据结构;

上级 128b0d54
fileFormatVersion: 2
guid: 05e7a91a5b215b141b7abebd4e6f57fc
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
/*
*Copyright(C) 2023 by TouchFinsh All rights reserved.
*Unity版本:2020.3.43f1c1
*作者:Chief
*创建日期: 2023-04-19
*版本: 0.1
*/
using Unity.Entities;
using Unity.Mathematics;
using UnityEngine;
namespace TouchFish.Omphalia
{
/// <summary>
/// 用于外部可以随意赋值的粒子特效结构体;
/// 与 Unity 原生的 Particle 数据完全相同;
/// </summary>
public struct OmphaliaParticle :IComponentData
{
public float3 Position;
public float3 Velocity;
public float3 AnimatedVelocity;
public float3 InitialVelocity;
public float3 AxisOfRotation;
public float3 Rotation;
public float3 AngularVelocity;
public float3 StartSize;
public Color32 StartColor;
public uint RandomSeed;
public uint ParentRandomSeed;
public float Lifetime;
public float StartLifetime;
public int MeshIndex;
public float EmitAccumulator0;
public float EmitAccumulator1;
public uint Flags;
}
}
fileFormatVersion: 2
guid: 0215c2c7b27af2f4f81a096d54942f1f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
/*
*Copyright(C) 2023 by TouchFinsh All rights reserved.
*Unity版本:2020.3.43f1c1
*作者:Chief
*创建日期: 2023-04-19
*版本: 0.1
*/
using System.Reflection;
namespace TouchFish.Omphalia
{
/// <summary>
/// 竹铃芝 粒子特效解决方案通用类
/// </summary>
public static class OmphaliaUtils
{
/// <summary>
/// 通过反射的值获取方式
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="instance"></param>
/// <param name="propertyName"></param>
/// <returns></returns>
internal static T GetPropertyValue<T>(this object instance, string propertyName)
{
if (instance == null)
return default;
var mType = instance.GetType();
var property = mType.GetField(propertyName, BindingFlags.Default | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
return (T)property.GetValue(instance);
}
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: 15bfa63291871bf45a172ab2e2ac8893
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
/*
*Copyright(C) 2023 by TouchFinsh All rights reserved.
*Unity版本:2020.3.43f1c1
*作者:Chief
*创建日期: 2023-04-19
*版本: 0.1
*/
using System;
using UnityEngine;
using static UnityEngine.ParticleSystem;
using Particle = UnityEngine.ParticleSystem.Particle;
namespace TouchFish.Omphalia
{
/// <summary>
/// 粒子特效配置
/// </summary>
[Serializable]
public class ParticleConfig
{
#region 反射获取的粒子参数
[SerializeField] private Vector3 m_Position;
[SerializeField] private Vector3 m_Velocity;
[SerializeField] private Vector3 m_AnimatedVelocity;
[SerializeField] private Vector3 m_InitialVelocity;
[SerializeField] private Vector3 m_AxisOfRotation;
[SerializeField] private Vector3 m_Rotation;
[SerializeField] private Vector3 m_AngularVelocity;
[SerializeField] private Vector3 m_StartSize;
[SerializeField] private Color32 m_StartColor;
[SerializeField] private uint m_RandomSeed;
[SerializeField] private uint m_ParentRandomSeed;
[SerializeField] private float m_Lifetime;
[SerializeField] private float m_StartLifetime;
[SerializeField] private int m_MeshIndex;
[SerializeField] private float m_EmitAccumulator0;
[SerializeField] private float m_EmitAccumulator1;
[SerializeField] private uint m_Flags;
public void AutoSetValue(Particle particle)
{
m_Position = particle.GetPropertyValue<Vector3>("m_Position");
m_Velocity = particle.GetPropertyValue<Vector3>("m_Velocity");
m_AnimatedVelocity = particle.GetPropertyValue<Vector3>("m_AnimatedVelocity");
m_InitialVelocity = particle.GetPropertyValue<Vector3>("m_InitialVelocity");
m_AxisOfRotation = particle.GetPropertyValue<Vector3>("m_AxisOfRotation");
m_Rotation = particle.GetPropertyValue<Vector3>("m_Rotation");
m_AngularVelocity = particle.GetPropertyValue<Vector3>("m_AngularVelocity");
m_StartSize = particle.GetPropertyValue<Vector3>("m_StartSize");
m_StartColor = particle.GetPropertyValue<Color32>("m_StartColor");
m_RandomSeed = particle.GetPropertyValue<uint>("m_RandomSeed");
m_ParentRandomSeed = particle.GetPropertyValue<uint>("m_ParentRandomSeed");
m_Lifetime = particle.GetPropertyValue<float>("m_Lifetime");
m_StartLifetime = particle.GetPropertyValue<float>("m_StartLifetime");
m_MeshIndex = particle.GetPropertyValue<int>("m_MeshIndex");
m_EmitAccumulator0 = particle.GetPropertyValue<float>("m_EmitAccumulator0");
m_EmitAccumulator1 = particle.GetPropertyValue<float>("m_EmitAccumulator1");
m_Flags = particle.GetPropertyValue<uint>("m_Flags");
}
#endregion
public OmphaliaParticle GetOmphaliaParticle()
{
OmphaliaParticle particle = new OmphaliaParticle()
{
Position = m_Position,
Velocity = m_Velocity,
AnimatedVelocity = m_AnimatedVelocity,
InitialVelocity = m_InitialVelocity,
AxisOfRotation = m_AxisOfRotation,
Rotation = m_Rotation,
AngularVelocity = m_AngularVelocity,
StartSize = m_StartSize,
StartColor = m_StartColor,
RandomSeed = m_RandomSeed,
ParentRandomSeed = m_ParentRandomSeed,
Lifetime = m_Lifetime,
StartLifetime = m_StartLifetime,
MeshIndex = m_MeshIndex,
EmitAccumulator0 = m_EmitAccumulator0,
EmitAccumulator1 = m_EmitAccumulator1,
Flags = m_Flags,
};
return particle;
}
}
}
fileFormatVersion: 2
guid: a96fcbedf060696468b8b54ea2fd6cbc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
......@@ -4,5 +4,8 @@
EditorBuildSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Scenes: []
m_Scenes:
- enabled: 1
path: Assets/Scenes/SampleScene.unity
guid: 9fc0d4010bbf28b4594072e72b8655ab
m_configObjects: {}
......@@ -12,7 +12,7 @@ PlayerSettings:
targetDevice: 2
useOnDemandResources: 0
accelerometerFrequency: 60
companyName: DefaultCompany
companyName: TouchFinsh
productName: Omphalia
defaultCursor: {fileID: 0}
cursorHotspot: {x: 0, y: 0}
......@@ -164,7 +164,8 @@ PlayerSettings:
resetResolutionOnWindowResize: 0
androidSupportedAspectRatio: 1
androidMaxAspectRatio: 2.1
applicationIdentifier: {}
applicationIdentifier:
Android: com.TouchFinsh.Omphalia
buildNumber:
Standalone: 0
iPhone: 0
......@@ -607,9 +608,11 @@ PlayerSettings:
webGLDecompressionFallback: 0
scriptingDefineSymbols:
1: ODIN_INSPECTOR;ODIN_INSPECTOR_3;ODIN_INSPECTOR_3_1
7: ODIN_INSPECTOR;ODIN_INSPECTOR_3;ODIN_INSPECTOR_3_1
additionalCompilerArguments: {}
platformArchitecture: {}
scriptingBackend: {}
scriptingBackend:
Android: 1
il2cppCompilerConfiguration: {}
managedStrippingLevel: {}
incrementalIl2cppBuild: {}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册