refactor: 重新规划了项目结构
删除了冗余的控制类
This commit is contained in:
parent
4cd3bad951
commit
d901880eea
|
@ -1,135 +0,0 @@
|
||||||
using System.Collections.Generic;
|
|
||||||
using Models;
|
|
||||||
using UnityEngine;
|
|
||||||
using Utils.PoseTransformHandlers;
|
|
||||||
|
|
||||||
public class ModelBehaviour : MonoBehaviour
|
|
||||||
{
|
|
||||||
private Animator _animator;
|
|
||||||
|
|
||||||
private readonly UdpListener _listener = new UdpListener();
|
|
||||||
private static readonly PoseTransform[] PoseTransforms = new PoseTransform[PoseLandmarkType.MaxValue];
|
|
||||||
|
|
||||||
private void Start()
|
|
||||||
{
|
|
||||||
_animator = GetComponent<Animator>(); // 获取动画控件
|
|
||||||
InitPoseTransformList();
|
|
||||||
|
|
||||||
//_listener.AddHandler(LogLandmarks);
|
|
||||||
_listener.AddHandler(RigPoint);
|
|
||||||
_listener.Connect(5000);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update is called once per frame
|
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
foreach (var landmark in PoseTransforms)
|
|
||||||
{
|
|
||||||
if (landmark.UnityName != HumanBodyBones.LastBone)
|
|
||||||
{
|
|
||||||
var transfrom = _animator.GetBoneTransform(landmark.UnityName);
|
|
||||||
|
|
||||||
var parentsum = new Vector3(0, 0, 0);
|
|
||||||
|
|
||||||
foreach (var parent in landmark.Parent)
|
|
||||||
{
|
|
||||||
parentsum += PoseTransforms[parent.Value].ResultPosition;
|
|
||||||
}
|
|
||||||
|
|
||||||
parentsum /= landmark.Parent.Count;
|
|
||||||
|
|
||||||
transfrom.rotation = Quaternion.FromToRotation(transfrom.rotation.eulerAngles,landmark.ResultPosition-parentsum);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnDisable()
|
|
||||||
{
|
|
||||||
_listener.DisConnect();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void LogLandmarks(List<PoseLandmark> landmarks)
|
|
||||||
{
|
|
||||||
|
|
||||||
foreach (var landmark in landmarks)
|
|
||||||
{
|
|
||||||
Debug.Log(landmark.ToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//获取传上来的数据点坐标转换成四元数的回调函数
|
|
||||||
private static void RigPoint(List<PoseLandmark> landmarks)
|
|
||||||
{
|
|
||||||
|
|
||||||
foreach (var landmark in landmarks)
|
|
||||||
{
|
|
||||||
|
|
||||||
PoseTransform.UpdatePosition(ref PoseTransforms[landmark.Type.Value], landmark);
|
|
||||||
|
|
||||||
Debug.Log(PoseTransforms[landmark.Type.Value].UnityName+":"+PoseTransforms[landmark.Type.Value].ResultPosition);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 初始化骨骼变化结构体列表
|
|
||||||
/// </summary>
|
|
||||||
private void InitPoseTransformList()
|
|
||||||
{
|
|
||||||
for (var type = 0; type <= PoseLandmarkType.RightFootIndex; type++)
|
|
||||||
{
|
|
||||||
var item = new PoseTransform(type, new NormalHandler());
|
|
||||||
|
|
||||||
if (item.UnityName != HumanBodyBones.LastBone)
|
|
||||||
{
|
|
||||||
item.PreviousQuaternion = _animator.GetBoneTransform(item.UnityName).rotation;
|
|
||||||
item.CurrentQuaternion = item.PreviousQuaternion;
|
|
||||||
}
|
|
||||||
|
|
||||||
PoseTransforms[type] = item;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 在这里添加父节点
|
|
||||||
AddParentTransform(PoseLandmarkType.LeftShoulder, PoseLandmarkType.LeftHip);
|
|
||||||
AddParentTransform(PoseLandmarkType.LeftShoulder, PoseLandmarkType.RightHip);
|
|
||||||
|
|
||||||
AddParentTransform(PoseLandmarkType.RightShoulder, PoseLandmarkType.LeftHip);
|
|
||||||
AddParentTransform(PoseLandmarkType.RightShoulder, PoseLandmarkType.RightHip);
|
|
||||||
|
|
||||||
AddParentTransform(PoseLandmarkType.Nose, PoseLandmarkType.LeftShoulder);
|
|
||||||
AddParentTransform(PoseLandmarkType.Nose, PoseLandmarkType.RightShoulder);
|
|
||||||
|
|
||||||
AddParentTransform(PoseLandmarkType.LeftElbow, PoseLandmarkType.LeftShoulder);
|
|
||||||
AddParentTransform(PoseLandmarkType.RightElbow, PoseLandmarkType.RightShoulder);
|
|
||||||
|
|
||||||
AddParentTransform(PoseLandmarkType.LeftWrist, PoseLandmarkType.LeftElbow);
|
|
||||||
AddParentTransform(PoseLandmarkType.RightWrist, PoseLandmarkType.RightElbow);
|
|
||||||
|
|
||||||
AddParentTransform(PoseLandmarkType.LeftKnee, PoseLandmarkType.LeftHip);
|
|
||||||
AddParentTransform(PoseLandmarkType.RightKnee, PoseLandmarkType.RightHip);
|
|
||||||
|
|
||||||
AddParentTransform(PoseLandmarkType.LeftAnkle, PoseLandmarkType.LeftKnee);
|
|
||||||
AddParentTransform(PoseLandmarkType.RightAnkle, PoseLandmarkType.RightKnee);
|
|
||||||
|
|
||||||
AddParentTransform(PoseLandmarkType.LeftFootIndex, PoseLandmarkType.LeftAnkle);
|
|
||||||
AddParentTransform(PoseLandmarkType.RightFootIndex, PoseLandmarkType.RightAnkle);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 给指定的骨骼变化结构体添加父节点
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="target">需要添加的节点</param>
|
|
||||||
/// <param name="parent">添加的父节点</param>
|
|
||||||
private void AddParentTransform(int target, int parent)
|
|
||||||
{
|
|
||||||
var parents = PoseTransforms[target].Parent;
|
|
||||||
parents.Add(PoseTransforms[parent].MediaPipeName);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: a2b30b6aa6e08c4468a02e1fcabcd485
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -7,154 +7,154 @@ namespace Models
|
||||||
public class PoseLandmark
|
public class PoseLandmark
|
||||||
{
|
{
|
||||||
private const double Tolerance = 1E-6;
|
private const double Tolerance = 1E-6;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 单个包的长度
|
|
||||||
/// </summary>
|
|
||||||
public const int PacketLength = 28;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 坐标点的种类
|
|
||||||
/// </summary>
|
|
||||||
public PoseLandmarkType Type { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 真实世界x坐标
|
|
||||||
/// 以米为单位
|
|
||||||
/// 以臀部为重心 hip
|
|
||||||
/// </summary>
|
|
||||||
public float X { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 真实世界y坐标
|
|
||||||
/// 以米为单位
|
|
||||||
/// 以臀部为重心
|
|
||||||
/// </summary>
|
|
||||||
public float Y { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 真实世界z坐标
|
|
||||||
/// 以米为单位
|
|
||||||
/// 以臀部为重心
|
|
||||||
/// </summary>
|
|
||||||
public float Z { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 该坐标点估计的可见性
|
|
||||||
/// [0,1]
|
|
||||||
/// </summary>
|
|
||||||
public float Visibility { get; }
|
|
||||||
|
|
||||||
public long TimeStamp { get; }
|
|
||||||
|
|
||||||
public PoseLandmark(int type, float x, float y, float z, float visibility, long timeStamp)
|
/// <summary>
|
||||||
{
|
/// 单个包的长度
|
||||||
Type = new PoseLandmarkType(type);
|
/// </summary>
|
||||||
X = x;
|
public const int PacketLength = 28;
|
||||||
Y = y;
|
|
||||||
Z = z;
|
|
||||||
Visibility = visibility;
|
|
||||||
TimeStamp = timeStamp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 转换成字节数组
|
/// 坐标点的种类
|
||||||
/// 便于UDP发送
|
/// </summary>
|
||||||
/// </summary>
|
public PoseLandmarkType Type { get; }
|
||||||
/// <returns></returns>
|
|
||||||
public byte[] ToByteArray()
|
|
||||||
{
|
|
||||||
var result = new byte[PacketLength];
|
|
||||||
|
|
||||||
BitConverter.GetBytes(Type.Value).CopyTo(result, 0);
|
/// <summary>
|
||||||
BitConverter.GetBytes(X).CopyTo(result, 4);
|
/// 真实世界x坐标
|
||||||
BitConverter.GetBytes(Y).CopyTo(result, 8);
|
/// 以米为单位
|
||||||
BitConverter.GetBytes(Z).CopyTo(result, 12);
|
/// 以臀部为重心 hip
|
||||||
BitConverter.GetBytes(Visibility).CopyTo(result, 16);
|
/// </summary>
|
||||||
BitConverter.GetBytes(TimeStamp).CopyTo(result, 20);
|
public float X { get; }
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 解析字节数组
|
/// 真实世界y坐标
|
||||||
/// </summary>
|
/// 以米为单位
|
||||||
/// <param name="bytes">收到的字节数组</param>
|
/// 以臀部为重心
|
||||||
/// <returns>字节数组中代表的坐标对象</returns>
|
/// </summary>
|
||||||
public static PoseLandmark ValueOf(byte[] bytes)
|
public float Y { get; }
|
||||||
{
|
|
||||||
var result = new PoseLandmark(
|
|
||||||
BitConverter.ToInt32(bytes, 0),
|
|
||||||
BitConverter.ToSingle(bytes, 4),
|
|
||||||
BitConverter.ToSingle(bytes, 8),
|
|
||||||
BitConverter.ToSingle(bytes, 12),
|
|
||||||
BitConverter.ToSingle(bytes, 16),
|
|
||||||
BitConverter.ToInt64(bytes, 20));
|
|
||||||
|
|
||||||
return result;
|
/// <summary>
|
||||||
}
|
/// 真实世界z坐标
|
||||||
|
/// 以米为单位
|
||||||
|
/// 以臀部为重心
|
||||||
|
/// </summary>
|
||||||
|
public float Z { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 解析字节数组为对象列表
|
/// 该坐标点估计的可见性
|
||||||
/// 单个
|
/// [0,1]
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="bytes">字节数组</param>
|
public float Visibility { get; }
|
||||||
/// <returns></returns>
|
|
||||||
public static List<PoseLandmark> ArrayOf(byte[] bytes)
|
|
||||||
{
|
|
||||||
var result = new List<PoseLandmark>();
|
|
||||||
|
|
||||||
for (var i = 0; i < bytes.Length; i = i + PacketLength)
|
public long TimeStamp { get; }
|
||||||
|
|
||||||
|
public PoseLandmark(int type, float x, float y, float z, float visibility, long timeStamp)
|
||||||
{
|
{
|
||||||
var landmark = new PoseLandmark(BitConverter.ToInt32(bytes, i),
|
Type = new PoseLandmarkType(type);
|
||||||
BitConverter.ToSingle(bytes, i + 4),
|
X = x;
|
||||||
BitConverter.ToSingle(bytes, i + 8),
|
Y = y;
|
||||||
BitConverter.ToSingle(bytes, i + 12),
|
Z = z;
|
||||||
BitConverter.ToSingle(bytes, i + 16),
|
Visibility = visibility;
|
||||||
BitConverter.ToInt64(bytes, i + 20));
|
TimeStamp = timeStamp;
|
||||||
|
|
||||||
result.Add(landmark);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
/// <summary>
|
||||||
}
|
/// 转换成字节数组
|
||||||
|
/// 便于UDP发送
|
||||||
public override bool Equals(object obj)
|
/// </summary>
|
||||||
{
|
/// <returns></returns>
|
||||||
if (obj is not PoseLandmark landmark)
|
public byte[] ToByteArray()
|
||||||
{
|
{
|
||||||
return false;
|
var result = new byte[PacketLength];
|
||||||
|
|
||||||
|
BitConverter.GetBytes(Type.Value).CopyTo(result, 0);
|
||||||
|
BitConverter.GetBytes(X).CopyTo(result, 4);
|
||||||
|
BitConverter.GetBytes(Y).CopyTo(result, 8);
|
||||||
|
BitConverter.GetBytes(Z).CopyTo(result, 12);
|
||||||
|
BitConverter.GetBytes(Visibility).CopyTo(result, 16);
|
||||||
|
BitConverter.GetBytes(TimeStamp).CopyTo(result, 20);
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
/// <summary>
|
||||||
|
/// 解析字节数组
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bytes">收到的字节数组</param>
|
||||||
|
/// <returns>字节数组中代表的坐标对象</returns>
|
||||||
|
public static PoseLandmark ValueOf(byte[] bytes)
|
||||||
{
|
{
|
||||||
return Type.Value == landmark.Type.Value
|
var result = new PoseLandmark(
|
||||||
&& Math.Abs(X - landmark.X) < Tolerance
|
BitConverter.ToInt32(bytes, 0),
|
||||||
&& Math.Abs(Y - landmark.Y) < Tolerance
|
BitConverter.ToSingle(bytes, 4),
|
||||||
&& Math.Abs(Z - landmark.Z) < Tolerance
|
BitConverter.ToSingle(bytes, 8),
|
||||||
&& Math.Abs(Visibility - landmark.Visibility) < Tolerance
|
BitConverter.ToSingle(bytes, 12),
|
||||||
&& TimeStamp == landmark.TimeStamp;
|
BitConverter.ToSingle(bytes, 16),
|
||||||
|
BitConverter.ToInt64(bytes, 20));
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public override int GetHashCode()
|
/// <summary>
|
||||||
{
|
/// 解析字节数组为对象列表
|
||||||
var hashCode = Type.GetHashCode();
|
/// 单个
|
||||||
hashCode ^= X.GetHashCode();
|
/// </summary>
|
||||||
hashCode ^= Y.GetHashCode();
|
/// <param name="bytes">字节数组</param>
|
||||||
hashCode ^= Z.GetHashCode();
|
/// <returns></returns>
|
||||||
hashCode ^= Visibility.GetHashCode();
|
public static List<PoseLandmark> ArrayOf(byte[] bytes)
|
||||||
hashCode ^= TimeStamp.GetHashCode();
|
{
|
||||||
|
var result = new List<PoseLandmark>();
|
||||||
|
|
||||||
return hashCode;
|
for (var i = 0; i < bytes.Length; i = i + PacketLength)
|
||||||
}
|
{
|
||||||
|
var landmark = new PoseLandmark(BitConverter.ToInt32(bytes, i),
|
||||||
|
BitConverter.ToSingle(bytes, i + 4),
|
||||||
|
BitConverter.ToSingle(bytes, i + 8),
|
||||||
|
BitConverter.ToSingle(bytes, i + 12),
|
||||||
|
BitConverter.ToSingle(bytes, i + 16),
|
||||||
|
BitConverter.ToInt64(bytes, i + 20));
|
||||||
|
|
||||||
public override string ToString()
|
result.Add(landmark);
|
||||||
{
|
}
|
||||||
var builder = new StringBuilder();
|
|
||||||
builder.Append($"Time: {TimeStamp}, Type: {Type}:\n");
|
|
||||||
builder.Append($"\tX:{X}, Y:{Y}, Z:{Z}, Visibility: {Visibility}\n");
|
|
||||||
|
|
||||||
return builder.ToString();
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool Equals(object obj)
|
||||||
|
{
|
||||||
|
if (obj is not PoseLandmark landmark)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Type.Value == landmark.Type.Value
|
||||||
|
&& Math.Abs(X - landmark.X) < Tolerance
|
||||||
|
&& Math.Abs(Y - landmark.Y) < Tolerance
|
||||||
|
&& Math.Abs(Z - landmark.Z) < Tolerance
|
||||||
|
&& Math.Abs(Visibility - landmark.Visibility) < Tolerance
|
||||||
|
&& TimeStamp == landmark.TimeStamp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int GetHashCode()
|
||||||
|
{
|
||||||
|
var hashCode = Type.GetHashCode();
|
||||||
|
hashCode ^= X.GetHashCode();
|
||||||
|
hashCode ^= Y.GetHashCode();
|
||||||
|
hashCode ^= Z.GetHashCode();
|
||||||
|
hashCode ^= Visibility.GetHashCode();
|
||||||
|
hashCode ^= TimeStamp.GetHashCode();
|
||||||
|
|
||||||
|
return hashCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
var builder = new StringBuilder();
|
||||||
|
builder.Append($"Time: {TimeStamp}, Type: {Type}:\n");
|
||||||
|
builder.Append($"\tX:{X}, Y:{Y}, Z:{Z}, Visibility: {Visibility}\n");
|
||||||
|
|
||||||
|
return builder.ToString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -28,22 +28,11 @@ public struct PoseTransform
|
||||||
/// 取平均之后的结果
|
/// 取平均之后的结果
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Vector3 ResultPosition => _transformHandler.GetResultPosition();
|
public Vector3 ResultPosition => _transformHandler.GetResultPosition();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 节点的父节点列表
|
/// 节点的父节点列表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public readonly List<PoseLandmarkType> Parent;
|
public readonly List<PoseLandmarkType> Parent;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 骨骼节点的初始角度
|
|
||||||
/// </summary>
|
|
||||||
public Quaternion PreviousQuaternion;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 骨骼节点的当前角度
|
|
||||||
/// </summary>
|
|
||||||
public Quaternion CurrentQuaternion;
|
|
||||||
|
|
||||||
private readonly IPoseTransformHandler _transformHandler;
|
private readonly IPoseTransformHandler _transformHandler;
|
||||||
|
|
||||||
public PoseTransform(
|
public PoseTransform(
|
||||||
|
@ -54,8 +43,6 @@ IPoseTransformHandler handler
|
||||||
MediaPipeName = new PoseLandmarkType(type);
|
MediaPipeName = new PoseLandmarkType(type);
|
||||||
UnityName = GetRelatedBone(MediaPipeName);
|
UnityName = GetRelatedBone(MediaPipeName);
|
||||||
Parent = new List<PoseLandmarkType>();
|
Parent = new List<PoseLandmarkType>();
|
||||||
PreviousQuaternion = new Quaternion();
|
|
||||||
CurrentQuaternion = new Quaternion();
|
|
||||||
|
|
||||||
_transformHandler = handler;
|
_transformHandler = handler;
|
||||||
}
|
}
|
||||||
|
@ -65,11 +52,6 @@ public static void UpdatePosition(ref PoseTransform pose, PoseLandmark landmark)
|
||||||
pose._transformHandler.ReceivePoseLandmark(landmark);
|
pose._transformHandler.ReceivePoseLandmark(landmark);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void CalculateRotation(ref PoseTransform poseTransform, PoseLandmark landmark)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Vector3 operator +(PoseTransform a) => a.ResultPosition;
|
public static Vector3 operator +(PoseTransform a) => a.ResultPosition;
|
||||||
|
|
||||||
public static Vector3 operator -(PoseTransform a) => -a.ResultPosition;
|
public static Vector3 operator -(PoseTransform a) => -a.ResultPosition;
|
||||||
|
|
|
@ -38,7 +38,7 @@ RenderSettings:
|
||||||
m_ReflectionIntensity: 1
|
m_ReflectionIntensity: 1
|
||||||
m_CustomReflection: {fileID: 0}
|
m_CustomReflection: {fileID: 0}
|
||||||
m_Sun: {fileID: 705507994}
|
m_Sun: {fileID: 705507994}
|
||||||
m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1}
|
m_IndirectSpecularColor: {r: 0.18029127, g: 0.22572401, b: 0.3069303, a: 1}
|
||||||
m_UseRadianceAmbientProbe: 0
|
m_UseRadianceAmbientProbe: 0
|
||||||
--- !u!157 &3
|
--- !u!157 &3
|
||||||
LightmapSettings:
|
LightmapSettings:
|
||||||
|
@ -189,7 +189,12 @@ GameObject:
|
||||||
m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: c5470c9a1aff50643b6a9ff0bab4297d, type: 3}
|
m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: c5470c9a1aff50643b6a9ff0bab4297d, type: 3}
|
||||||
m_PrefabInstance: {fileID: 404755305}
|
m_PrefabInstance: {fileID: 404755305}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
--- !u!114 &404755307
|
--- !u!4 &404755309 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: c5470c9a1aff50643b6a9ff0bab4297d, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 404755305}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!114 &404755310
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
@ -198,14 +203,9 @@ MonoBehaviour:
|
||||||
m_GameObject: {fileID: 404755306}
|
m_GameObject: {fileID: 404755306}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: a2b30b6aa6e08c4468a02e1fcabcd485, type: 3}
|
m_Script: {fileID: 11500000, guid: a2b060336532a01bfb4593b385955175, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
--- !u!4 &404755309 stripped
|
|
||||||
Transform:
|
|
||||||
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: c5470c9a1aff50643b6a9ff0bab4297d, type: 3}
|
|
||||||
m_PrefabInstance: {fileID: 404755305}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
--- !u!1 &705507993
|
--- !u!1 &705507993
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
Loading…
Reference in New Issue
Block a user