我正在尝试使用 Unity 中的 C# 检测鼠标是否位于 hud 元素上。我的 hud 元素占据了屏幕右侧约 1/5 的区域。我基本上想要执行 if mouse.x < hud_element....
我正在尝试使用 C# 在 Unity 中检测鼠标是否位于 hud 元素上。
我的 hud 元素占据了屏幕右侧约 1/5 的区域。
我基本上想做
if mouse.x < hud_element.x
如果我单击此处(HUD 面板左侧仅几个像素处的红色 x)
我有这个功能(我放了几个 Debug.Log 来解决一些问题)
public bool is_mouse_left_of_hud()
{
Vector3 mousePos = Input.mousePosition;
float canvas_left = GameObject.Find("Canvas").GetComponent<RectTransform>().offsetMin.x;
float main_hud_panel_left = GameObject.Find("main_hud_panel").GetComponent<RectTransform>().anchoredPosition.x;
float info_panel = GameObject.Find("info panel").GetComponent<RectTransform>().offsetMin.x;
Debug.Log("££££££££");
Debug.Log("mouse x pos = " + mousePos.x);
Debug.Log("main_hud_panel_left = " + main_hud_panel_left);
Debug.Log("canvas offsetmin x = "+canvas_left);
Debug.Log("info_panel offset = " + info_panel);
Debug.Log("main hud offsetmin x + canvas offsetmin x + + info_panel offset = " + ( canvas_left +main_hud_panel_left + info_panel));
if (mousePos.x < (canvas_left + main_hud_panel_left + info_panel))
{
return true;
}
return false;
}
然后单击图像上的红色 x 位置,我得到此输出
££££££££
mouse x pos = 1299.395
main_hud_panel_left = 331
canvas offsetmin x = 560
info_panel offset = 0
main hud offsetmin x + canvas offsetmin x + + info_panel offset = 891
下图显示了编辑器 UI 中的 hud 元素。
ps)我这样做的原因是:我使用内置的 OnMouseDown 函数来检查 GameObjects 中的点击检测。但令人讨厌的是,这通过我的 hud 起作用。所以我需要一个函数来检查鼠标是否在 hud 上。这样我就可以避免通过 hud 点击
这里还有通向“信息面板”的对象树以及检查器中的值
我一直在玩 MoviePy,最近把一个项目转移到了家里的新电脑上,继续摆弄它。然而,我尝试运行我之前编写的程序(运行
我一直在摆弄 MoviePy,最近把一个项目转移到了家里的一台新电脑上,继续摆弄它。然而,我尝试运行我之前编写的程序(在另一台电脑上运行得很好),结果如下:
OSError: MoviePy error: failed to read the first frame of video file ./Gameplay/minecraft-
gameplay2.mp4. That might mean that the file is corrupted. That may also mean that you are using
a deprecated version of FFMPEG. On Ubuntu/Debian for instance the version in the repos is
deprecated. Please update to a recent version from the website.
阅读错误后,我按照它的指示进行操作,并更新了我的 FFmpeg:
$ ffmpeg
ffmpeg version N-115387-g8e27bd025f-20240525 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 13.2.0 (crosstool-NG 1.26.0.65_ecc5e41)
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu- --arch=x86_64 --target-os=linux --enable-gpl --enable-version3 --disable-debug --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-openssl --enable-fontconfig --enable-libharfbuzz --enable-libvorbis --enable-opencl --enable-libpulse --enable-libvmaf --enable-libxcb --enable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --enable-libdvdread --enable-libdvdnav --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libaribcaption --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --disable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --enable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-libs='-ldl -lgomp' --extra-ldflags=-pthread --extra-ldexeflags=-pie --cc=x86_64-ffbuild-linux-gnu-gcc --cxx=x86_64-ffbuild-linux-gnu-g++ --ar=x86_64-ffbuild-linux-gnu-gcc-ar --ranlib=x86_64-ffbuild-linux-gnu-gcc-ranlib --nm=x86_64-ffbuild-linux-gnu-gcc-nm --extra-version=20240525
libavutil 59. 20.100 / 59. 20.100
libavcodec 61. 5.104 / 61. 5.104
libavformat 61. 3.104 / 61. 3.104
libavdevice 61. 2.100 / 61. 2.100
libavfilter 10. 2.102 / 10. 2.102
libswscale 8. 2.100 / 8. 2.100
libswresample 5. 2.100 / 5. 2.100
libpostproc 58. 2.100 / 58. 2.100
Universal media converter
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
我继续收到相同的错误。所以我查看了我的 moviepy 使用的版本,它仍然是 4.X。我在某处读到你的 FFmpeg 版本是在第一次使用时确定的,这是有道理的,所以我卸载并重新安装,但仍然收到相同的错误。
老实说,我现在很迷茫,因为我有最新版本的 FFmpeg,但我仍然从 moviepy 中得到这个:
>>> import moviepy
>>> print(moviepy.config.FFPMEG_BINARY)
ffmpeg : /home/<username>/.local/lib/python3.9/site-packages/imageio_ffmpeg/binaries/ffmpeg-linux64-v4.2.2
关于我做错什么有什么想法吗?
(注意:我正在使用 Crostini,我相信它使用的是 Ubuntu 或类似 Ubuntu 的 shell)
谢谢 :)