Best way to send variables/data to other scripts?

Hi. I'm trying to create a weapon system, where by- moving over a weapon- text displays, Asking the user if they want to "Equip" the weapon. I've done this through 3 different Handlers-

A Player touch handler, which detects if anything is in the way of the player using raycasts- then finds out if it's a "PkUp_Weapon" - if it is, it sends the gameobject to the weapon handler script.

at the weapon handler script- it see's if the player already has the weapon in their inventory- if they don't- it sends a Message to the GUI handler- which displays the message.

the thing is- it checks this every frame- making the game REALLY processor intensive- is their a better way at doing this?

Edit: here's the code:

Player touch :

    var selectedCamera : Camera;
var weaponHandler : Weapon_Handler;

function Update () 
     var hit : RaycastHit;
     var ray = / 2, Screen.height / 2, 0));
             if(hit.collider.gameObject.tag == "PkUp_*")
             weaponHandler.SendMessage("WeaponSelection" , hit.collider.gameObject, SendMessageOptions.DontRequireReceiver);


var playerTouch : PlayerTouch_Handler;
var guiHandler : GUI_Handler;

private var primaryWeapon : GameObject;
private var secondaryWeapon : GameObject;

function WeaponSelection(SelectedWeapon : GameObject)
     if(SelectedWeapon != primaryWeapon || SelectedWeapon != secondaryWeapon)
         guiHandler.SendMessage("SetCommand", "Equip? (Press E)");
             EquipWeapon(SelectedWeapon, 1);

function SetPrimaryWeapon(weapon : GameObject)
     primaryWeapon = weapon;

function SetSecondaryWeapon(weapon : GameObject)
     secondaryWeapon = weapon;

function EquipWeapon(weapon : GameObject, weaponSocket : int)
    print("WeaponEquiped in weaponSocket");


var commandPos : Vector2;
var commandSize : Vector2;
var theme : GUIStyle;
var tex_HUD : Texture2D;

private var commandText : String;

function Update()
     commandText = (" ");

function OnGUI () 
     GUI.Label (Rect(commandPos.x * Screen.width, 
                           commandPos.y * Screen.height,
                           commandSize.x, commandSize.y), commandText, theme);

function SetCommand (text : String)
     commandText = text;

There are 2 ways I know you can do, first is more for send to a script and the second is to send to an object:

//the name of the script is anExample
static var example = false;

then in your other script put:

anExample.example = true;

and the other way to do a SendMessage that you already have it

var obj1 : GameObject;
var example = false;
function Start(){
obj1.SendMessage("AnExample", example);

then in the other script:

function AnExample(example : boolean){
example = true;

here is SendMessage

then for the other things I dont think is take lot of space to be continuously checking, but OK but what I do for doing this because I am actually doing this kind of games is maybe not the best way but it works and is to do a Distance and do it to an if this object.position and the weapon position is less than 5 you can this. Example:


and you can also try doing with collision or trigger Example:

function OnCollisionEnter(other: Collision){
if(collision.transform.tag == "weapon"){
//Do something