If the data can reach your port on the host, you don't need to change any IP settings. Normal port forwarding over NAT will do.
Disclaimer: Tested this successfully with VirtualBox 6.1 on an Ubuntu-Host/Ubuntu-VM.
First, configure port forwarding rules for your VM under Settings > Network. Ensure network is enabled and set to Attached to: NAT
. Next, under the Advanced drop-down, select Port Forwarding and create a new rule. Select UDP as your protocol and set your desired ports. Leave the IP Address settings blank for now.

You need to start/restart your VM for these changes to take effect. From your host, ensure that the VirtualBox VM settings is working and listening on your desired port. From a Linux host, you can see open ports with netstat -ln | grep udp
. For Windows, use netstat -an | find "UDP"
.

Go to your Ubuntu VM to verify you can receive incoming data. Run the netcat utility to listen for incoming UDP data on your desired port with nc -ulk 9001
. Once running, go back to your host and use this simple Python script from your host to test if you can send data over to the VM:
import socket
UDP_IP = "0.0.0.0" # Broadcast over any address
UDP_PORT = 9001 # Send to this port
MESSAGE = "Hello World! Here's a Datagram!\n"
sock = socket.socket(
socket.AF_INET, # Internet
socket.SOCK_DGRAM # UDP
)
sock.sendto(bytes(MESSAGE, "utf-8"), (UDP_IP, UDP_PORT))
If everything is fine, the message will be passed from the Host to the VM.

If you'd like, you can now go change the IP settings in the port forwarding rule to narrow down the source. When left blank as before, it will listen on all addresses for that port, which could be a potential security risk.
Note, however, that if any service on your host is already listening or later starts a service to listen on that same port, it will intercept the data and it will not be passed on to your VM. Ensure that the port is exclusively used to pass messages to your VM.
Hope this helps!