i’m beginning c# development because i had a lot of fun dumbing around with VR deving for the HTC Vive. In doing that i came across an asset called VRTK. They provide a gun script that works pretty well out of the box but when you wanted to start changing methods without effecting the source script, i would simply add the gun script to the gun in the scene and then on that particular gun add my own gun script that did a public override changing whichever behavior i wanted to be specific to that gun, apart from all of the other objects that were inheriting from that gun class ie. all the other objects that had that original gun script on it.