i felt like i got a good amount done yesterday, so i am not sure why sleep was so elusive last night. i even squashed the automatic fire glitch i was getting upon level restart after player death.
i thought it would be difficult when setting the button itself to interactable = false didn’t do the trick. then i realized i attached the button component to my fire button completely for visual feedback. the real trigger here is not the UI (button) component, rather the Button Handler script.
essentially, i forgot i was using the default button that came in one of the cross platform input manager’s template prefabs (part of Unity’s standard assets pack). rather than the standard On Click event handler that comes on a uGUI button, the Cross Platform Input Manager uses a custom Button Handler script component instead.
this is actually great, because it handles states for the button both being up and down, as opposed to the standard button behaviour of an OnClick, which gets called after the button is released, rather than pressed. not exactly ideal input of anything other than actual buttons on an UI, things you might click or tap by accident.
the fix was something i tried in lieu of an obvious answer. first i tried disabling the Button Handler component, but it didn’t seem to have a Set Active method i could utilize, or anything of the sort. it was at this time, i actually noticed the Button Handler component and its distinct difference from the standard Button.
my next thought was to throw up a transparent image to block raycasts or something like that, when a simpler solution occured to me. i remembered the interactable checkbox on the Canvas Group component and wondered if it would override the Button Handler if it were its child. sure enough, turning off interactivity for the Canvas Group and enabling block raycasts did the trick. conversely, when you want to enable the controls again you have to toggle the two parameters back of course.