void OnValidate() { targetComponent = null; targetTypeName = null; selfComponent = null; selfTypeName = null; var refCtx = new ReflectionContext(); foreach (var c in target.GetComponents <MonoBehaviour>()) { var member = FindMember(refCtx, c, targetMemberName); if (member != null) { targetComponent = c; targetTypeName = member.type.FullName; targetMember = member; } } if (isTwoWay) { foreach (var c in GetComponents <MonoBehaviour>()) { var member = FindMember(refCtx, c, selfMemberName); if (member != null) { selfComponent = c; selfTypeName = member.type.FullName; selfMember = member; } } } }
void Start() { var refCtx = new ReflectionContext(); targetMember = FindMember(refCtx, targetComponent, targetMemberName); if (isTwoWay) { selfMember = FindMember(refCtx, selfComponent, selfMemberName); SetSelfValue(targetMember.Get(targetComponent)); if (targetComponent is TwoWayBindable) { ((TwoWayBindable)targetComponent).AddBinding(targetMemberName, this); } } }