You can do this with AOI's, but (surprisingly) as others have said, it doesn't appear that you can do this with UDT's.
If it were really important you could always create your data type as an AOI instead of a UDT. An AOI is really just a UDT with code bolted on, but there's no reason you have to actually use that code. You could have the AOI logic empty save for a single NOP, and never call it, and you'd for all intents and purposes have a UDT with bit-level commenting. It's a bit of a hack, but it would work. If I did it I'd be sure to put a rung comment in the AOI logic explaining why there's no logic and why I'm doing it this way.
It’s even simpler than that. It’s pure code.
The AOI mechanism creates and manages a 1:1 UDT composed of an AOI’s defined parameters + EnableIn/Out + local members + some non-visible execution words/flags (prescan/postscan, math overflow, etc).
The “add-on defined type” in the tree is the result “backing tag” definition.
The compiled AOI logic is a single C-style function that accepts as its argument a pointer-to-struct of the backing type. Hence why you have to instantiate at least one of these backing tags to use an AOI. It goes to explain how the AOI performs, instruction-per-instruction, better than the PLC’s calling code and why editing an AOI online isn’t possible: it’s a raw binary living some place in memory.
The AOI definition probably resides as an instance of an undocumented CIP class, going to explain how you can upload and view the the original “running” code on the processor, just not recompile online.
When you read local members of an AOI using an HMI, you’ve just been looking at the non-visible members of the “backing” UDT that’s been sitting in the tag database all along.
Each In/Out parameter of an AOI is just realized as a pointer-to-type within the same backing tag. The AOI mechanism expands or contracts the called C-function signature, depending on whether the params passes are “required” in Logix (In/Outs implicitly, atomics by user). The pointer(s) to the parameters already come along for the ride in the AOI “instance” param in the AOI call, Logix just happens to enforce that they also point to an actual piece of data by expanding the signature.