//应用记录的信息 private void ApplyInfoToCollider(Collider collider, ColliderInfoCatch info) { if (collider == null || info == null) return; var type = GetColliderType(info.primitiveType); var newType = info.GetType(); var props = type.GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.GetProperty); foreach (var item in props) { var field = newType.GetField(item.Name, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.GetField); if (field != null) { item.SetValue(collider, field.GetValue(info),new object[] { }); } } }
//记录信息 private void RecordColliderInfo(PrimitiveType primitiveType,string path,Collider collider) { var catchInfo = colliderCatchs.Find(x => x.path == path && x.primitiveType == primitiveType); if(catchInfo == null) { catchInfo = new ColliderInfoCatch(primitiveType, path); colliderCatchs.Add(catchInfo); } var type = GetColliderType(primitiveType); var newType = catchInfo.GetType(); Debug.LogFormat("[{0}]",type); var props = type.GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.GetProperty); foreach (var item in props) { var field = newType.GetField(item.Name,System.Reflection.BindingFlags.Public|System.Reflection.BindingFlags.Instance|System.Reflection.BindingFlags.GetField); if(field != null){ field.SetValue(catchInfo, item.GetValue(collider, new object[] { })); } } }