private Collider AttachCollider(PrimitiveType primitiveType, ProcessingItem processingItem) { var catchInfo = colliderCatchs.Find(x => x.path == processingItem.path && x.primitiveType == primitiveType); var colliderType = GetColliderType(primitiveType); var item = processingItem.item; var collider = item.GetComponent<Collider>(); if (collider != null && collider.GetType() != colliderType) { DestroyImmediate(collider); } if (collider == null) { collider = item.AddComponent(colliderType) as Collider; if (collider is MeshCollider){ (collider as MeshCollider).convex = true; } if (catchInfo != null) { ApplyInfoToCollider(collider, catchInfo); } Debug.LogFormat(item, "设置{0}的Collider为{1}", item, collider); } else { RecordColliderInfo(primitiveType, processingItem.path, collider); Debug.LogFormat(item, "记录{0}的 Collider 信息", item); } return collider; }
private void ChargeRule(Rule rule, ProcessingItem processingItem) { var item = processingItem.item; if (item == null) { Debug.LogWarningFormat("忽略{0}", processingItem.path); } else { if (rule.setTag) { item.tag = rule.tag; Debug.LogFormat(item, "设置{0}的Tag为{1}", item, rule.tag); } if (rule.addCollider) { AttachCollider(rule.primitiveType, processingItem); } } }