So I need to edit a Vector 3 from one script but it is in another script, I tried using SendMessage but I dont know how to.
Are you trying to avoid using public access? You may simply expose that Vec3 to other scripts either by setting the field to public or by encapsulating it in a property and exposing it that way. Limiting access is commendable, however. If you do prefer to use SendMessage, it does allow you to send a single argument. The Message handler will need to be declared with with an argument of the type you send:
using UnityEngine;
public class ClassA : MonoBehaviour {
private Vector3 myVector3;
private void HandleMessage(Vector3 value) {
myVector3 = value;
}
}
using UnityEngine;
public class ClassB : MonoBehaviour {
void Start() {
FindObjectOfType<ClassA>().SendMessage("HandleMessage", new Vector3(1, 2, 3));
}
}