ProjectSettings¶
继承: Object
存储全局可访问的变量。
描述¶
存储可从任何地方访问的变量。使用get_setting()、set_setting()或has_setting()访问它们。project. i3d中存储的变量也被加载到ProjectSettings中,使此对象对于读取自定义应用配置选项非常有用。
命名项目设置属性时,请使用包含类别的设置的完整路径。例如,项目名称的"application/config/name"。可以在项目设置对话框中查看类别和属性名称。
功能标签:可以使用功能标签覆盖特定平台和配置(调试、发布…)的项目设置。
覆盖:任何项目设置都可以通过在项目的根目录中创建一个名为override. cfg的文件来覆盖。这也可以通过将此文件放置在与项目二进制文件相同的目录中来用于导出的项目。覆盖仍然会考虑基本项目设置的功能标签。因此,如果您希望它们覆盖所有平台和配置上的基本项目设置,请确保也使用所需的功能标签覆盖设置。
属性¶
方法¶
void |
add_property_info(hint: Dictionary) |
void |
|
get_setting(name: String, default_value: Variant = null) const |
|
get_setting_with_override(name: StringName) const |
|
globalize_path(path: String) const |
|
has_setting(name: String) const |
|
load_resource_pack(pack: String, replace_files: bool = true, offset: int = 0) |
|
localize_path(path: String) const |
|
save() |
|
save_custom(file: String) |
|
void |
set_as_basic(name: String, basic: bool) |
void |
set_as_internal(name: String, internal: bool) |
void |
set_initial_value(name: String, value: Variant) |
void |
|
void |
set_restart_if_changed(name: String, restart: bool) |
void |
set_setting(name: String, value: Variant) |
信号¶
settings_changed() 🔗
更改任何设置时发出,每个进程帧最多一次。
属性说明¶
bool animation/warnings/check_angle_interpolation_type_conflicting = true 🔗
如果true,则AnimationMixer打印由于AnimationMixer缓存中混合了多个角度插值类型而导致插值被迫选择最短旋转路径的警告。
bool animation/warnings/check_invalid_track_paths = true 🔗
如果true,AnimationMixer会打印场景中轨道路径没有匹配对象的警告。
Color application/boot_splash/bg_color = Color(0.14, 0.14, 0.14, 1) 🔗
启动飞溅的背景颜色。
bool application/boot_splash/fullsize = true 🔗
如果true,则在引擎启动时将启动启动启动映像缩放为完整窗口大小(保留长宽比)。如果false,则引擎将使其保持默认像素大小。
String application/boot_splash/image = "" 🔗
用作启动飞溅的图像的路径。如果留空,将显示默认的i3D引擎飞溅。
注:仅当application/boot_splash/show_image为true时有效。
注意:唯一支持的格式是PNG。使用其他图像格式会导致错误。
注意:在编辑器中打开项目时也会显示图像,如果要在编辑器中显示默认的启动图像,请为editor_hint功能添加一个空覆盖。
int application/boot_splash/minimum_display_time = 0 🔗
最短启动启动启动显示时间(以毫秒为单位)。不建议为此设置设置太高的值。
bool application/boot_splash/show_image = true 🔗
如果true,则在引擎启动时显示application/boot_splash/image中指定的图像。如果false,则仅显示application/boot_splash/bg_color中指定的素色。
bool application/boot_splash/use_filter = true 🔗
如果true,则在缩放图像时应用线性滤波(推荐用于高分辨率艺术品)。如果false,则使用最近邻插值(推荐用于像素艺术)。
bool application/config/auto_accept_quit = true 🔗
如果true,则应用程序自动接受退出请求。
String application/config/custom_user_dir_name = "" 🔗
此用户目录用于存储持久数据(user://filessystem),如果定义了自定义目录名称,则此名称将附加到系统特定的用户数据目录(与OS.get_user_data_dir()中记录的i3D配置文件夹相同的父文件夹)。
必须启用application/config/use_custom_user_dir设置才能生效。
注意:如果application/config/custom_user_dir_name包含尾随句点,它们将被剥离,因为Windows上不允许以句点结尾的文件夹名称。
String application/config/description = "" 🔗
项目的描述,在悬停项目时显示为项目管理器中的工具提示。
String application/config/icon = "" 🔗
用于项目的图标,在项目加载时设置。如有必要,出口商也将使用此图标作为后备。
String application/config/macos_native_icon = "" 🔗
macOS上用于设置应用图标的. icns格式的图标。这是在启动时通过调用DisplayServer.set_native_icon()自动完成的。
String application/config/name = "" 🔗
项目名称。项目经理和导出者都使用它。可以通过翻译本地化文件中的值来翻译项目名称。窗口标题将设置为在启动时自动匹配项目名称。
注意:如果application/config/use_custom_user_dir为false,则更改此值也会更改用户数据文件夹的路径。重命名项目后,您将无法再访问user://中的存量数据,除非您重命名旧文件夹以匹配新项目名称。
Dictionary application/config/name_localized = {} 🔗
项目名称的翻译。操作系统工具使用此设置来翻译Android、iOS和macOS上的应用程序名称。
String application/config/project_settings_override = "" 🔗
指定要覆盖项目设置的文件。例如:user://custom_settings. cfg。有关详细信息,请参阅顶部ProjectSettings类描述中的“覆盖”。
注意:无论此设置的值如何,仍将读取res://overrid. cfg以覆盖项目设置。
bool application/config/quit_on_go_back = true 🔗
如果true,则应用程序在返回导航时自动退出(例如,使用Android上的系统“返回”按钮)。
bool application/config/use_custom_user_dir = false 🔗
如果true,项目将用户数据保存到自己的用户目录。如果application/config/custom_user_dir_name为空,将使用<OS用户数据目录>/<项目名称>目录。如果false,项目将用户数据保存到<OS用户数据目录>/i3D/app_userdata/<项目名称>。
另请参见i3D项目中的文件路径。此设置仅在桌面平台上有效。
如果true,项目将使用隐藏目录(. i3d)来存储项目特定的数据(元数据、着色器缓存等)。
如果false,则将使用非隐藏目录(i3d)。
注意:更改此设置后重新启动应用程序。
注意:更改此值可以在不允许隐藏目录模式的平台或第三方工具上提供帮助。只有在您知道您的环境需要时才修改此设置,因为更改默认值会影响与某些期望默认. i3d文件夹的外部工具或插件的兼容性。
String application/config/version = "" 🔗
项目的人类可读版本标识符。如果版本标识符未被覆盖,则导出程序将使用此标识符。如果application/config/version为空字符串,并且版本标识符未在导出程序中被覆盖,则导出程序将使用1.0.0作为版本标识符。
String application/config/windows_native_icon = "" 🔗
在Windows上使用. ico格式设置的图标来设置应用图标。这是在启动时通过调用DisplayServer.set_native_icon()自动完成的。
bool application/run/delta_smoothing = true 🔗
帧增量的时间样本会受到平台引入的随机变化的影响,即使帧是定期显示的,这也要归功于V-Sync。这可能会导致抖动。增量平滑通常可以通过过滤输入增量来校正刷新率的微小波动,从而获得更好的结果。
注意:增量平滑仅在display/window/vsync/vsync_mode设置为启用时尝试,因为没有V-Sync它无法正常工作。
在最初激活平滑之前,稳定帧率可能需要几秒钟。它只会在性能足以以刷新率渲染帧的机器上激活。
bool application/run/disable_stderr = false 🔗
如果true,则禁用打印到标准错误。如果true,这也会隐藏@GlobalScope.push_error()和@GlobalScope.push_warning()打印的错误和警告消息。另请参阅application/run/disable_stdout。
此设置的更改仅在重新启动应用程序时应用。要在运行时对此进行控制,请使用Engine.print_error_messages。
bool application/run/disable_stdout = false 🔗
如果true,则禁用打印到标准输出。这相当于使用--安静命令行参数启动编辑器或项目。另请参阅application/run/disable_stderr。
此设置的更改仅在重新启动应用程序时应用。要在运行时对此进行控制,请使用Engine.print_to_stdout。
如果true,则允许Alt+Space键显示窗口菜单。此菜单允许用户执行各种窗口管理操作,例如移动、调整大小或最小化窗口。
注意:当菜单显示时,由于Windows行为,项目执行将暂停,直到菜单完全关闭。在网络多人应用中启用此设置时,请考虑这一点。菜单仅在选择选项、用户单击外部或在调出窗口菜单后按下:kbd:`Escape`并随后按下另一个键时才被视为完全关闭。
注意:此设置仅在Windows上实现。
bool application/run/flush_stdout_on_print = false 🔗
如果true,则每次打印一行时都会刷新标准输出流。这会影响终端日志记录和文件日志记录。
运行项目时,如果您希望服务管理器(如systemd/Journal alctl)收集日志,则必须启用此设置。在发布版本中默认禁用此设置,因为如果快速连续打印大量行,则对每个打印行进行刷新会对性能产生负面影响。此外,如果启用此设置,如果应用程序崩溃或被用户杀死(而不是“正常”关闭),则记录的文件仍将成功写入。
注意:无论此设置如何,当打印一行时,标准错误流(stderr)总是会被刷新。
此设置的更改仅在重新启动应用程序时应用。
bool application/run/flush_stdout_on_print.debug = true 🔗
application/run/flush_stdout_on_print的调试构建覆盖,因为在调试期间性能不太重要。
此设置的更改仅在重新启动应用程序时应用。
int application/run/frame_delay_msec = 0 🔗
强制主循环中帧之间的常数延迟(以毫秒为单位)。在大多数情况下,application/run/max_fps应该作为FPS限制器,因为它更精确。
可以使用--frame-延迟<ms;>命令行参数覆盖此设置。
bool application/run/low_processor_mode = false 🔗
如果true,则启用低处理器使用模式。启用后,引擎需要更长的时间来重新绘制,但仅在必要时重新绘制屏幕。这可能会降低功耗,并且适用于编辑器或移动应用程序。对于大多数应用,由于每帧都需要重新绘制屏幕,建议保持禁用此设置。
int application/run/low_processor_mode_sleep_usec = 6900 🔗
启用低处理器使用模式时帧之间的休眠量(以微秒为单位)。较高的值将导致较低的CPU使用率。
String application/run/main_loop_type = "SceneTree" 🔗
实现引擎主循环的类型的名称。
String application/run/main_scene = "" 🔗
项目运行时将加载的主场景文件的路径。
int application/run/max_fps = 0 🔗
允许的最大每秒帧数。0的值表示“无限制”。如果CPU或GPU跟不上项目逻辑和渲染,实际每秒帧数可能仍低于此值。
限制FPS有助于降低系统功耗,从而减少热量和噪音排放(并延长移动设备的电池寿命)。
如果display/window/vsync/vsync_mode设置为启用或自适应,则优先,强制FPS编号不能超过显示器的刷新率。
如果display/window/vsync/vsync_mode是启用,在启用可变刷新率(G-Sync/FreeSync)的显示器上,使用低于显示器刷新率几帧的FPS限制将减少输入延迟,同时避免撕裂。
如果display/window/vsync/vsync_mode是禁用,将FPS限制在系统上可以一致达到的高值可以减少与无上限帧速率相比的输入延迟。由于这是通过确保GPU负载低于100%来工作的,因此这种延迟降低仅在GPU瓶颈场景中有效,而不是CPU瓶颈场景。
另见physics/common/physics_ticks_per_second。
可以使用--max-fps<fps>命令行参数覆盖此设置(包括值为0以实现无限帧率)。
注意:此属性仅在项目启动时读取。要在运行时更改渲染FPS上限,请设置Engine.max_fps。
bool application/run/print_header = true 🔗
如果true,则在启动时在控制台中打印引擎标头。此标头描述了引擎的当前版本以及正在使用的渲染器。也可以使用--no-head选项在命令行上禁用此行为。
float audio/buses/channel_disable_threshold_db = -60.0 🔗
当声音在给定时间内低于给定dB阈值时,音频总线将自动禁用。这节省了CPU,因为分配给该总线的效果将不再进行任何处理。
float audio/buses/channel_disable_time = 2.0 🔗
当声音在给定时间内低于给定dB阈值时,音频总线将自动禁用。这节省了CPU,因为分配给该总线的效果将不再进行任何处理。
String audio/buses/default_bus_layout = "res://default_bus_layout.ires" 🔗
要在项目中使用的默认AudioBusLayout资源文件,除非被场景覆盖。
指定要使用的音频驱动程序。此设置取决于平台,因为每个平台支持不同的音频驱动程序。如果留空,将使用默认音频驱动程序。
Dummy音频驱动程序禁用所有音频播放和录制,这对于非应用应用程序很有用,因为它减少了CPU使用率。它还可以防止引擎在操作系统的音频混音器中显示为播放音频的应用程序。
要查询运行时使用的值(可能被命令行参数或无头模式覆盖),请使用AudioServer.get_driver_name()。
注意:正在使用的驱动程序可以在运行时通过--audio-drive命令行参数覆盖。
bool audio/driver/enable_input = false 🔗
如果true,则允许麦克风输入。这需要在导出到Android或iOS时设置适当的权限。
注意:如果操作系统阻止访问音频输入设备(由于用户的隐私设置),音频捕获只会返回静音。在Windows 10及更高版本上,确保允许应用程序在操作系统的隐私设置中访问麦克风。
int audio/driver/mix_rate = 44100 🔗
用于音频的目标混合率(以Hz为单位)。一般来说,最好不要碰它,让主机操作系统来处理。
注意:在iOS和macOS上,混音率由音频驱动决定,此值被忽略。
注意:输入和输出混合率可能不同。使用AudioServer.get_mix_rate()和AudioServer.get_input_mix_rate()获取实际值。
int audio/driver/mix_rate.web = 0 🔗
更安全地覆盖网络平台中的audio/driver/mix_rate。这里0表示“让浏览器选择”(因为一些浏览器不喜欢强制混合率)。
int audio/driver/output_latency = 15 🔗
指定音频的首选输出延迟(以毫秒为单位)。较低的值将导致较低的音频延迟,但代价是CPU使用率增加。低值可能会导致较慢硬件上的爆裂声。
音频输出延迟可能受到主机操作系统和音频硬件驱动程序的限制。如果主机不能提供指定的音频输出延迟,那么i3D将尝试使用主机允许的最近延迟。因此,您应该始终使用AudioServer.get_output_latency()来确定实际的音频输出延迟。
可以使用--audio-output-latency<ms>命令行参数覆盖音频输出延迟。
注意:此设置在Android以及Windows 10之前的所有Windows版本上都被忽略。
int audio/driver/output_latency.web = 50 🔗
更安全地覆盖Web平台中的audio/driver/output_latency,以避免音频问题,尤其是在移动设备上。
float audio/general/2d_panning_strength = 0.5 🔗
float audio/general/3d_panning_strength = 0.5 🔗
所有AudioPlayer节点的平移效果的基本强度。平移强度可以使用AudioPlayer.panning_strength在每个节点上进一步缩放。0.0的值完全禁用立体声平移,只保留音量衰减。1.0的值完全静音一个通道,如果声音正好位于听众的左侧(或右侧)。
0.5的默认值已针对耳机进行了调整。使用扬声器时,您可能会发现较低的值听起来更好,因为与耳机相比,扬声器的立体声分离度较低。
int audio/general/default_playback_type = 0 🔗
实验性: 未来版本中可能会修改或移除该属性。
指定平台的默认播放类型。
默认值设置为Stream,因为大多数平台没有混合流的问题。
int audio/general/default_playback_type.web = 1 🔗
实验性: 未来版本中可能会修改或移除该属性。
指定Web平台的默认播放类型。
默认值设置为Sample,因为Web平台不适合在Web Audio API之外混合音频流,尤其是在导出单线程应用时。Sample允许以灵活性为代价降低Web平台上的延迟(不支持AudioEffect)。
警告:在Web平台上强制Stream可能会导致高音频延迟和爆裂,尤其是在导出多线程应用时。
bool audio/general/ios/mix_with_others = false 🔗
为iOS的AVAudioSession设置mixWith选项。如果类别设置为播放和记录、播放或多路线,这将覆盖混合行为。
Ambient总是默认设置此设置。
int audio/general/ios/session_category = 0 🔗
设置iOS的AVAudioSessionCategory。使用Playback类别获得声音输出,即使电话处于静音模式。
bool audio/general/text_to_speech = false 🔗
如果true,则启用语音合成支持,请参阅DisplayServer.tts_get_voices()和DisplayServer.tts_speak()。
注意:启用TTS会导致额外的空闲CPU使用并干扰睡眠模式,因此如果不使用TTS,请考虑禁用它。
int audio/video/video_delay_compensation_ms = 0 🔗
设置为播放视频时硬编码音频延迟。最好保持不变,除非你知道你在做什么。
bool collada/use_ambient = false 🔗
如果true,环境灯将从COLLADA模型导入为DirectionalLight。如果false,环境灯将被忽略。
int compression/formats/gzip/compression_level = -1 🔗
gzip的默认压缩级别。影响压缩场景和资源。更高的级别会以压缩速度为代价产生更小的文件。解压速度大多不受压缩级别的影响。-1使用默认的gzip压缩级别,它与6相同,但将来可能会因底层zlib更新而发生变化。
int compression/formats/zlib/compression_level = -1 🔗
Zlib的默认压缩级别。会影响压缩场景和资源。更高的级别会以压缩速度为代价产生更小的文件。解压速度大多不受压缩级别的影响。-1使用默认的gzip压缩级别,它与6相同,但将来可能会因底层zlib更新而发生变化。
int compression/formats/zstd/compression_level = 3 🔗
ZStandard的默认压缩级别。影响压缩场景和资源。更高的级别会以压缩速度为代价导致更小的文件。解压速度大多不受压缩级别的影响。
bool compression/formats/zstd/long_distance_matching = false 🔗
启用远程匹配在ZStandard.
int compression/formats/zstd/window_log_size = 27 🔗
使用与ZStandard的长距离匹配进行压缩时允许的最大大小限制(2次方)。更高的值可以导致更好的压缩,但在压缩和解压缩时需要更多内存。
Color debug/canvas_items/debug_redraw_color = Color(1, 0.2, 0.2, 0.5) 🔗
如果画布项重绘调试处于活动状态,则当它们重绘时,此颜色将在画布项上闪烁。
float debug/canvas_items/debug_redraw_time = 1.0 🔗
如果画布项重绘调试处于活动状态,这将是闪存每次重绘时持续的时间。
bool debug/file_logging/enable_file_logging = false 🔗
如果true,则将所有输出和错误消息记录到文件中。另请参见debug/file_logging/log_path、debug/file_logging/max_log_files和application/run/flush_stdout_on_print。
bool debug/file_logging/enable_file_logging.pc = true 🔗
debug/file_logging/enable_file_logging的桌面覆盖,因为日志文件在移动/Web平台上不容易访问。
String debug/file_logging/log_path = "user://logs/i3d.log" 🔗
存储项目日志文件的路径。建议使用user://下的路径。
这可以在命令行上使用--log-file<file>命令行参数手动指定。如果指定了此命令行参数,日志轮换将自动禁用(参见debug/file_logging/max_log_files)。
int debug/file_logging/max_log_files = 5 🔗
指定允许的最大日志文件数(用于轮换)。设置为1以禁用日志文件轮换。
如果使用--log-file<file>命令行参数,则始终禁用日志轮换。
int debug/s3script/warnings/assert_always_false = 1 🔗
当设置为警告或错误时,当断言调用始终计算为false时,分别产生警告或错误。
int debug/s3script/warnings/assert_always_true = 1 🔗
当设置为警告或错误时,当断言调用始终计算为true时,分别产生警告或错误。
int debug/s3script/warnings/confusable_capture_reassignment = 1 🔗
当设置为警告或错误时,当lambda捕获的局部变量被重新分配时分别产生警告或错误,因为这不会修改外部局部变量。
int debug/s3script/warnings/confusable_identifier = 1 🔗
当设置为警告或错误时,当标识符包含可能与其他字符混淆的字符时,例如混合不同的字母时,分别产生警告或错误。
int debug/s3script/warnings/confusable_local_declaration = 1 🔗
当设置为警告或错误时,当嵌套块中声明的标识符与下面在父块中声明的标识符同名时,分别产生警告或错误。
int debug/s3script/warnings/confusable_local_usage = 1 🔗
当设置为警告或错误时,当使用将在块下方阴影的标识符时,分别产生警告或错误。
int debug/s3script/warnings/constant_used_as_function = 1 🔗
已弃用: 永远不会产生该警告。相反,如果在编译时已知表达式类型,则会生成错误。
当设置为警告或错误时,在将常量用作函数时分别产生警告或错误。
int debug/s3script/warnings/deprecated_keyword = 1 🔗
当设置为警告或错误时,在使用不推荐使用的关键字时分别产生警告或错误。
注意:目前没有弃用的关键字,因此永远不会产生此警告。
int debug/s3script/warnings/empty_file = 1 🔗
当设置为警告或错误时,在解析空文件时分别产生警告或错误。
bool debug/s3script/warnings/enable = true 🔗
如果true,则启用特定的S3Script警告(请参阅debug/s3script/警告/*设置)。如果false,则禁用所有S3Script警告。
int debug/s3script/warnings/enum_variable_without_default = 1 🔗
当设置为警告或错误时,当变量具有枚举类型但没有显式默认值时,但仅当枚举不包含0作为有效值时,才会分别产生警告或错误。
bool debug/s3script/warnings/exclude_addons = true 🔗
如果true,则res://addons文件夹中的脚本不会生成警告。
int debug/s3script/warnings/function_used_as_property = 1 🔗
已弃用: 该警告永远不会触发。将函数用作属性时会返回 Callable。
当设置为警告或错误时,在使用函数时分别产生警告或错误,就好像它是一个属性一样。
int debug/s3script/warnings/get_node_default_without_onready = 2 🔗
当设置为警告或错误时,当Item.get_item()(或简写$)用作没有@onready注释的类变量的默认值时,分别产生警告或错误。
int debug/s3script/warnings/incompatible_ternary = 1 🔗
当设置为警告或错误时,当三元运算符可能发出类型不兼容的值时,分别产生警告或错误。
int debug/s3script/warnings/inference_on_variant = 2 🔗
当设置为警告或错误时,当静态推断类型使用Variant作为初始值时,分别产生警告或错误,这使得静态类型也成为Variant。
int debug/s3script/warnings/inferred_declaration = 0 🔗
当设置为警告或错误时,当变量、常量或参数具有隐式推断的静态类型时,分别产生警告或错误。
注意:如果您希望始终显式指定类型,建议将此警告添加到到debug/s3script/warnings/untyped_declaration。将INFERRED_DECLARATION警告级别高于UNTYPED_DECLARATION警告级别意义不大,不建议使用。
int debug/s3script/warnings/int_as_enum_without_cast = 1 🔗
当设置为警告或错误时,在尝试使用整数作为枚举而不使用显式强制转换时分别产生警告或错误。
int debug/s3script/warnings/int_as_enum_without_match = 1 🔗
当设置为警告或错误时,当尝试使用整数作为枚举时,当该数值没有匹配的枚举成员时,分别产生警告或错误。
int debug/s3script/warnings/integer_division = 1 🔗
当设置为警告或错误时,在将一个整数除以另一个整数时分别产生警告或错误(小数部分将被丢弃)。
int debug/s3script/warnings/missing_tool = 1 🔗
当设置为警告或错误时,当基类脚本有@tools注释,但当前类脚本没有时,分别产生警告或错误。
int debug/s3script/warnings/narrowing_conversion = 1 🔗
当设置为警告或错误时,在将浮点值传递给需要整数的函数时分别产生警告或错误(它将被转换并失去精度)。
int debug/s3script/warnings/native_method_override = 2 🔗
当设置为警告或错误时,当脚本中的方法覆盖本机方法时分别产生警告或错误,因为它可能不会按预期运行。
int debug/s3script/warnings/onready_with_export = 2 🔗
当设置为警告或错误时,当@onready注释与@导出注释一起使用时,会分别产生警告或错误,因为它可能不会按预期运行。
int debug/s3script/warnings/property_used_as_function = 1 🔗
已弃用: 永远不会产生该警告。相反,如果在编译时已知表达式类型,则会生成错误。
当设置为警告或错误时,在使用属性时分别产生警告或错误,就好像它是一个函数一样。
int debug/s3script/warnings/redundant_await = 1 🔗
当设置为警告或错误时,当使用wait调用非协程函数时分别产生警告或错误。
int debug/s3script/warnings/redundant_static_unload = 1 🔗
当设置为警告或错误时,当在没有任何静态变量的脚本中使用@static_unload注释时,分别产生警告或错误。
bool debug/s3script/warnings/renamed_in_i3d_4_hint = true 🔗
启用后,使用自i3D 3以来重命名的属性、枚举或函数将在发生错误时产生提示。
int debug/s3script/warnings/return_value_discarded = 0 🔗
当设置为警告或错误时,在调用函数而不使用其返回值(通过将其分配给变量或将其用作函数参数)时分别产生警告或错误。这些返回值有时用于指示使用Error枚举可能出现的错误。
int debug/s3script/warnings/shadowed_global_identifier = 1 🔗
当设置为警告或错误时,在定义与内置函数或全局类名同名的局部或成员变量、信号或枚举时分别产生警告或错误,从而隐藏它。
int debug/s3script/warnings/shadowed_variable = 1 🔗
当设置为警告或错误时,当局部变量或局部常量阴影当前类中声明的成员时,分别产生警告或错误。
int debug/s3script/warnings/shadowed_variable_base_class = 1 🔗
当设置为警告或错误时,当局部变量或局部常量阴影基类中声明的成员时,分别产生警告或错误。
int debug/s3script/warnings/standalone_expression = 1 🔗
当设置为警告或错误时,在调用可能对周围代码没有影响的表达式时分别产生警告或错误,例如将2+2作为语句编写。
int debug/s3script/warnings/standalone_ternary = 1 🔗
当设置为警告或错误时,在调用可能对周围代码无影响的条件表达式(如将42 if active else 0作为语句编写)时,会分别产生警告或错误。
int debug/s3script/warnings/static_called_on_instance = 1 🔗
当设置为警告或错误时,在从类的实例而不是直接从类调用静态方法时分别产生警告或错误。
int debug/s3script/warnings/unassigned_variable = 1 🔗
当设置为警告或错误时,在使用之前未分配的变量时分别产生警告或错误。
int debug/s3script/warnings/unassigned_variable_op_assign = 1 🔗
当设置为警告或错误时,如果变量之前未分配,则在使用+=之类的赋值操作符分配变量时分别产生警告或错误。
int debug/s3script/warnings/unreachable_code = 1 🔗
当设置为警告或错误时,在检测到不可达代码时(例如在将始终执行的返回语句之后)分别产生警告或错误。
int debug/s3script/warnings/unreachable_pattern = 1 🔗
当设置为警告或错误时,当检测到不可达的匹配模式时,分别产生警告或错误。
int debug/s3script/warnings/unsafe_call_argument = 0 🔗
当设置为警告或错误时,在使用其类型可能与预期的函数参数不兼容的表达式时分别产生警告或错误。
int debug/s3script/warnings/unsafe_cast = 0 🔗
当设置为警告或错误时,当Variant值强制转换为非Variant时分别产生警告或错误。
int debug/s3script/warnings/unsafe_method_access = 0 🔗
当设置为警告或错误时,在调用在类中编译时不能保证存在的方法时分别产生警告或错误。
int debug/s3script/warnings/unsafe_property_access = 0 🔗
当设置为警告或错误时,在访问类中编译时不能保证存在的属性时分别产生警告或错误。
int debug/s3script/warnings/unsafe_void_return = 1 🔗
当设置为警告或错误时,当无法保证调用也是void时,从void函数返回调用时分别产生警告或错误。
int debug/s3script/warnings/untyped_declaration = 0 🔗
当设置为警告或错误时,当变量或参数没有静态类型或函数没有静态返回类型时,分别产生警告或错误。
注意:建议将此警告与EditorSettings.text_editor/completion/add_type_hints一起使用,以帮助实现类型安全。
int debug/s3script/warnings/unused_local_constant = 1 🔗
当设置为警告或错误时,当从不使用本地常量时分别产生警告或错误。
int debug/s3script/warnings/unused_parameter = 1 🔗
当设置为警告或错误时,当从未使用函数参数时分别产生警告或错误。
int debug/s3script/warnings/unused_private_class_variable = 1 🔗
当设置为警告或错误时,当从不使用私有成员变量时分别产生警告或错误。
int debug/s3script/warnings/unused_signal = 1 🔗
当设置为警告或错误时,当声明信号但从未在类中显式使用时分别产生警告或错误。
int debug/s3script/warnings/unused_variable = 1 🔗
当设置为警告或错误时,在未使用局部变量时分别产生警告或错误。
String debug/settings/crash_handler/message = "Please include this when reporting the bug to the project developer." 🔗
引擎崩溃时在回溯之前显示的消息。默认情况下,由于应用于此设置的仅编辑器覆盖,此消息仅用于导出的项目。
String debug/settings/crash_handler/message.editor = "Please include this when reporting the bug on: https://github.com/i3dengine/i3d/issues" 🔗
仅编辑覆盖debug/settings/crash_handler/message。不影响调试或发布模式下导出的项目。
int debug/settings/s3script/max_call_stack = 1024 🔗
调试S3Script允许的最大调用堆栈。
bool debug/settings/physics_interpolation/enable_warnings = true 🔗
如果true,则启用警告,这有助于查明节点在哪里被错误更新,这将导致不正确的插值和视觉故障。
当节点被插值时,转换必须在Item.FixedUpdate()(在物理帧期间)而不是Item.Update()(在帧期间)期间设置。
int debug/settings/profiler/max_functions = 16384 🔗
分析时每帧允许的最大函数数。
int debug/settings/profiler/max_timestamp_query_elements = 256 🔗
可视分析每帧允许的时间戳查询元素的最大数量。
bool debug/settings/stdout/print_fps = false 🔗
每秒打印帧数到每秒标准输出。
bool debug/settings/stdout/print_gpu_profile = false 🔗
每秒将GPU配置文件信息打印到标准输出。这包括GPU平均渲染每帧需要多长时间,分解为渲染管道的不同步骤,例如CanvasItems、阴影、发光等。
bool debug/settings/stdout/verbose_stdout = false 🔗
运行时将更多信息打印到标准输出。它显示诸如内存泄漏、正在加载哪些场景和资源等信息。这也可以使用-v命令行参数启用,即使在导出的项目上也是如此。另请参阅OS.is_stdout_verbose()和@GlobalScope.print_verbose()。
bool debug/shader_language/warnings/device_limit_exceeded = true 🔗
当设置为true时,当着色器超过某些设备限制时会产生警告。目前,检查的唯一设备限制是统一缓冲区大小的限制。将来会添加更多设备限制。
bool debug/shader_language/warnings/enable = true 🔗
如果true,则启用特定的着色器警告(请参阅debug/shader_language/警告/*设置)。如果false,则禁用所有着色器警告。
bool debug/shader_language/warnings/float_comparison = true 🔗
当设置为true时,当两个浮点数直接与==运算符或!=运算符进行比较时会产生警告。
bool debug/shader_language/warnings/formatting_error = true 🔗
当设置为true时,会在遇到某些格式错误时产生警告。目前这仅检查空语句。随着时间的推移,可能会添加更多格式错误。
bool debug/shader_language/warnings/magic_position_write = true 🔗
当该配置项设置为 true时,引擎将兼容旧版着色器代码中常见的写法: POSITION=vec4(vertex,。该用法目前已失效。
bool debug/shader_language/warnings/treat_warnings_as_errors = false 🔗
当设置为true时,警告被视为错误。
bool debug/shader_language/warnings/unused_constant = true 🔗
当设置为true时,在从不使用常量时产生警告。
bool debug/shader_language/warnings/unused_function = true 🔗
当设置为true时,当从未使用函数时产生警告。
bool debug/shader_language/warnings/unused_local_variable = true 🔗
当设置为true时,当从不使用局部变量时产生警告。
bool debug/shader_language/warnings/unused_struct = true 🔗
当设置为true时,在从不使用结构时产生警告。
bool debug/shader_language/warnings/unused_uniform = true 🔗
当设置为true时,当uniform未使用时产生警告。
bool debug/shader_language/warnings/unused_varying = true 🔗
当设置为true时,当从不使用变数时产生警告。
Color debug/shapes/avoidance/agents_radius_color = Color(1, 1, 0, 0.25) 🔗
避免代理半径的颜色,在调试菜单中启用“可见避免”时可见。
bool debug/shapes/avoidance/enable_agents_radius = true 🔗
如果启用,则在调试菜单中启用“可见避免”时显示避免代理半径。
bool debug/shapes/avoidance/enable_obstacles_radius = true 🔗
如果启用,则在调试菜单中启用“可见回避”时显示回避障碍物半径。
bool debug/shapes/avoidance/enable_obstacles_static = true 🔗
如果启用,则在调试菜单中启用“可见回避”时显示静态回避障碍。
Color debug/shapes/avoidance/obstacles_radius_color = Color(1, 0.5, 0, 0.25) 🔗
回避障碍物半径的颜色,在调试菜单中启用“可见回避”时可见。
Color debug/shapes/avoidance/obstacles_static_edge_pushin_color = Color(1, 0, 0, 1) 🔗
静态回避障碍边缘的颜色,当它们的顶点被缠绕以将代理推入时,在调试菜单中启用“可见回避”时可见。
Color debug/shapes/avoidance/obstacles_static_edge_pushout_color = Color(1, 1, 0, 1) 🔗
静态回避障碍边缘的颜色,当它们的顶点被缠绕以将代理推出时,在调试菜单中启用“可见回避”时可见。
Color debug/shapes/avoidance/obstacles_static_face_pushin_color = Color(1, 0, 0, 0) 🔗
当静态回避障碍的顶点被缠绕以将代理推入时,它们面临的颜色,在调试菜单中启用“可见回避”时可见。
Color debug/shapes/avoidance/obstacles_static_face_pushout_color = Color(1, 1, 0, 0.5) 🔗
当静态回避障碍的顶点被缠绕以将代理推出时,它们面临的颜色,在调试菜单中启用“可见回避”时可见。
Color debug/shapes/collision/contact_color = Color(1, 0.2, 0.1, 0.8) 🔗
碰撞形状之间接触点的颜色,在调试菜单中启用“可见碰撞形状”时可见。
bool debug/shapes/collision/draw_2d_outlines = true 🔗
设置在调试菜单中启用“可见碰撞形状”时,2D物理是否会在应用中显示碰撞轮廓。
int debug/shapes/collision/max_contacts_displayed = 10000 🔗
在调试菜单中启用“可见碰撞形状”时要显示的碰撞形状之间的最大接触点数。
Color debug/shapes/collision/shape_color = Color(0, 0.6, 0.7, 0.42) 🔗
碰撞形状的颜色,在调试菜单中启用“可见碰撞形状”时可见。
启用调试时显示启用的导航代理路径的颜色。
光栅化大小(像素),用于在代理启用调试时呈现导航代理路径点。
颜色显示导航区域之间的边缘连接,在调试菜单中启用“可见导航”时可见。
如果启用,则在代理启用调试时显示导航代理路径。
如果启用,则在代理启用调试时显示导航代理通过几何的路径。
如果启用,则在调试菜单中启用“可见导航”时显示导航区域之间的边缘连接。
如果启用,则在调试菜单中启用“可见导航”时,通过几何显示导航区域之间的边缘连接。
如果启用,则在调试菜单中启用“可见导航”时显示导航网格多边形边缘。
如果启用,则在调试菜单中启用“可见导航”时,通过几何显示导航网格多边形边缘。
如果启用,当在调试菜单中启用“可见导航”时,用随机颜色为每个导航网格多边形面着色。
如果启用,则在调试菜单中启用“可见导航”时显示导航链接连接。
如果启用,则在调试菜单中启用“可见导航”时通过几何显示导航链接连接。
颜色显示启用的导航网格多边形边缘,在调试菜单中启用“可见导航”时可见。
颜色显示禁用的导航网格多边形边缘,在调试菜单中启用“可见导航”时可见。
颜色显示启用的导航网格多边形面,在调试菜单中启用“可见导航”时可见。
颜色显示禁用的导航网格多边形面,在调试菜单中启用“可见导航”时可见。
用于显示导航链接连接的颜色,在调试菜单中启用“可见导航”时可见。
用于显示禁用的导航链接连接的颜色,在调试菜单中启用“可见导航”时可见。
Color debug/shapes/paths/geometry_color = Color(0.1, 1, 0.7, 0.4) 🔗
曲线路径几何形状的颜色,在调试菜单中启用“可见路径”时可见。
float debug/shapes/paths/geometry_width = 2.0 🔗
曲线路径几何的线宽,在调试菜单中启用“可见路径”时可见。
String display/display_server/driver 🔗
设置显示服务器要使用的驱动程序。此属性不能直接编辑,而是使用特定于平台的覆盖设置驱动程序。
String display/display_server/driver.android 🔗
Android覆盖display/display_server/driver。
String display/display_server/driver.ios 🔗
iOS覆盖display/display_server/driver。
String display/display_server/driver.linuxbsd 🔗
display/display_server/driver的LinuxBSD覆盖。
String display/display_server/driver.macos 🔗
display/display_server/driver的MacOS覆盖。
String display/display_server/driver.windows 🔗
display/display_server/driver的窗口覆盖。
String display/mouse_cursor/custom_image = "" 🔗
鼠标光标的自定义图像(限制为256×256)。
Vector2 display/mouse_cursor/custom_image_hotspot = Vector2(0, 0) 🔗
自定义鼠标光标图像的热点。
Vector2 display/mouse_cursor/tooltip_position_offset = Vector2(10, 10) 🔗
工具提示相对于鼠标光标热点的位置偏移。
bool display/window/dpi/allow_hidpi = true 🔗
如果true,则允许在Windows、macOS、Android、iOS和Web上显示HiDPI。如果false,则在HiDPI显示器上将使用平台的低DPI回退,这会导致窗口以模糊或像素化的方式显示(并可能导致各种窗口管理错误)。因此,建议将您的项目缩放为多个分辨率,而不是禁用此设置。
注意:此设置对Linux没有影响,因为那里不支持DPI感知回退。
bool display/window/energy_saving/keep_screen_on = true 🔗
如果true,则保持屏幕打开(即使在不活动的情况下),因此屏幕保护程序不会接管。适用于桌面和移动平台。
bool display/window/frame_pacing/android/enable_frame_pacing = true 🔗
启用Swappy以在Android上实现稳定的帧起搏。强烈推荐。
注意:使用OpenXR时,此选项将被强制关闭。
int display/window/frame_pacing/android/swappy_mode = 2 🔗
要使用的交换模式。选项有:
-pipeline_forced_on:尝试尊重Engine.max_fps。流水线始终打开。这与台式电脑的行为相同。
-auto_fps_pipeline_forced_on:自动计算最大fps。实际max_fps将介于0和Engine.max_fps之间。虽然这听起来很方便,但请注意Swappy经常会降级最大fps,直到找到可以满足和持续的东西。这意味着如果你的应用在60hz屏幕上运行在40fps和60fps之间,一段时间后Swappy会降级最大fps,以便应用以完美的30fps渲染。
-auto_fps_auto_pipeline:与auto_fps_pipeline_forced_on相同,但如果Swappy检测到渲染非常快(例如,在60Hz屏幕上渲染需要<8毫秒),Swappy将禁用流水线以最小化输入延迟。这是默认设置。
注意:如果Engine.max_fps为0,实际max_fps将被视为屏幕刷新率(通常为60hz、90hz或120hz,具体取决于设备型号和操作系统设置)。
int display/window/handheld/orientation = 0 🔗
在移动设备上使用的默认屏幕方向。有关可能的值,请参阅ScreenOrientation。
注意:当设置为纵向时,此项目设置不会自动翻转项目分辨率的宽度和高度。相反,您必须相应地设置display/window/size/viewport_width和display/window/size/viewport_height。
bool display/window/ios/allow_high_refresh_rate = true 🔗
如果true,iOS支持高刷新率/“ProMotion”的设备将被允许以高达每秒120帧的速度渲染。
bool display/window/ios/hide_home_indicator = true 🔗
如果true,则主页指示器自动隐藏。这只影响没有物理主页按钮的iOS设备。
bool display/window/ios/hide_status_bar = true 🔗
如果true,则应用程序运行时状态栏被隐藏。
bool display/window/ios/suppress_ui_gesture = true 🔗
如果true,则需要两次滑动才能访问使用手势iOSUI。
注意:如果hide_home_indicator为true,此设置对home指示器没有影响。
bool display/window/per_pixel_transparency/allowed = false 🔗
如果true,则允许窗口背景按像素透明。这会影响性能,因此除非您需要,否则将其保留在false上。另请参阅display/window/size/transparent和rendering/viewport/transparent_background。
bool display/window/size/always_on_top = false 🔗
强制主窗口始终在顶部。
注意:此设置在iOS、Android和Web上被忽略。
bool display/window/size/borderless = false 🔗
强制主窗口无边框。
注意:此设置在iOS、Android和Web上被忽略。
bool display/window/size/extend_to_title = false 🔗
主窗口内容扩展到窗口的全尺寸。与无边框窗口不同,框架保持不变,可用于调整窗口大小,标题栏是透明的,但有最小化/最大化/关闭按钮。
注意:此设置仅在macOS上实现。
Vector2i display/window/size/initial_position = Vector2i(0, 0) 🔗
主窗口初始位置(在虚拟桌面坐标中),仅当display/window/size/initial_position_type设置为“绝对”(0)时才使用此设置。
注意:此设置仅影响导出的项目,或者当项目从命令行运行时。在编辑器中,使用EditorSettings.run/window_placement/rect_custom_position的值代替。
int display/window/size/initial_position_type = 1 🔗
主窗口初始位置。
0-"绝对",display/window/size/initial_position用于设置窗口位置。
1-"主屏幕中心"。
2-"其他屏幕中心",display/window/size/initial_screen用于设置屏幕。
注意:此设置仅影响导出的项目,或者当项目从命令行运行时。在编辑器中,使用EditorSettings.run/window_placement/rect的值代替。
int display/window/size/initial_screen = 0 🔗
主窗口初始屏幕,此设置仅在display/window/size/initial_position_type设置为“其他屏幕中心”(2)时使用。
注意:此设置仅影响导出的项目,或者当项目从命令行运行时。在编辑器中,使用EditorSettings.run/window_placement/screen的值代替。
int display/window/size/mode = 0 🔗
主窗口模式。有关可能的值以及每个模式的行为方式,请参阅WindowMode。
注意:应用嵌入仅在“窗口化”模式下可用。
bool display/window/size/no_focus = false 🔗
主窗口无法聚焦。无焦点窗口将忽略所有输入,鼠标点击除外。
bool display/window/size/resizable = true 🔗
如果true,则默认情况下允许窗口可调整大小。
注意:此属性仅在项目启动时读取。要更改窗口在运行时是否可调整大小,请在根窗口上设置Window.unresizable,而不是使用get_viewport()。get_window()。Window.unresizable采用与此设置相反的值。
注意:某些窗口管理器可以配置为忽略窗口的不可调整大小状态。不要依赖此设置来保证窗口永远不会可调整大小。
注意:此设置在iOS被忽略。
bool display/window/size/sharp_corners = false 🔗
如果true,则主窗口默认使用尖角。
注意:此属性仅在Windows(11)上实现。
bool display/window/size/transparent = false 🔗
如果true,则启用窗口管理器提示主窗口背景可以是透明的。这不会使背景实际上是透明的。要使背景透明,还必须通过启用rendering/viewport/transparent_background使根视口透明。
注意:要使用透明闪屏,请将application/boot_splash/bg_color设置为Color(0,0,0,0)。
注意:如果display/window/per_pixel_transparency/allowed设置为false,则此设置无效。
int display/window/size/viewport_height = 648 🔗
设置应用的主视口高度。在桌面平台上,这也是初始窗口高度,由2D编辑器中的靛蓝色矩形表示。拉伸模式设置在使用canvas_items或视口拉伸模式时也使用此作为参考。另请参阅display/window/size/viewport_width、display/window/size/window_width_override和display/window/size/window_height_override。
int display/window/size/viewport_width = 1152 🔗
设置应用的主视口宽度。在桌面平台上,这也是初始窗口宽度,由2D编辑器中的靛蓝色矩形表示。拉伸模式设置在使用canvas_items或视口拉伸模式时也将此作为参考。另请参阅display/window/size/viewport_height、display/window/size/window_width_override和display/window/size/window_height_override。
int display/window/size/window_height_override = 0 🔗
在桌面平台上,覆盖应用的初始窗口高度。另请参阅display/window/size/window_width_override、display/window/size/viewport_width和display/window/size/viewport_height。
注意:默认情况下,或者当设置为0时,初始窗口高度为display/window/size/viewport_height。此设置在iOS、Android和Web上被忽略。
int display/window/size/window_width_override = 0 🔗
在桌面平台上,覆盖应用的初始窗口宽度。另请参阅display/window/size/window_height_override、display/window/size/viewport_width和display/window/size/viewport_height。
注意:默认情况下,或者当设置为0时,初始窗口宽度为display/window/size/viewport_width。此设置在iOS、Android和Web上被忽略。
String display/window/stretch/aspect = "keep" 🔗
String display/window/stretch/mode = "disabled" 🔗
定义如何拉伸基本大小以适应窗口或屏幕的分辨率。
禁用:不发生拉伸。场景中的一个单元对应屏幕上的一个像素。在此模式下,display/window/stretch/aspect没有影响。推荐用于非应用应用程序。
canvas_items:在项目设置中指定的宽度和高度的基础尺寸被拉伸以覆盖整个屏幕(考虑到display/window/stretch/aspect)。这意味着所有内容都直接以目标分辨率渲染。3D不受影响,而在2D中,精灵像素和屏幕像素之间不再有1:1的对应关系,这可能会导致缩放伪影。推荐用于大多数不使用像素艺术美学的应用,尽管也可以将这种拉伸模式用于像素艺术应用(尤其是在3D中)。
视口:根Viewport的大小精确设置为项目设置显示部分中指定的基本大小。场景首先渲染到这个视口。最后,这个视口被缩放以适应屏幕(考虑到display/window/stretch/aspect)。推荐用于使用像素艺术美学的应用。
float display/window/stretch/scale = 1.0 🔗
用于2D元素的比例因子乘数。这将乘以display/window/stretch/mode确定的最终比例因子。如果使用禁用拉伸模式,则按原样应用此比例因子。这可以调整以使UI在某些显示器上更易于阅读。
String display/window/stretch/scale_mode = "fractional" 🔗
用于确定2D元素的最终缩放系数的策略。除了display/window/stretch/mode确定的自动缩放系数之外,这会影响display/window/stretch/scale的应用方式。
小数:比例因子不会被修改。
整数:比例因子将被平铺为整数值,这意味着屏幕大小将始终是基本视口大小的整数倍。这提供了清晰的像素艺术外观。
注意:当在拉伸模式下使用整数缩放时,将窗口调整为小于基本视口大小将剪辑内容。考虑通过将Window.min_size设置为与display/window/size/viewport_width和display/window/size/viewport_height中定义的基本视口大小相同的值来防止这种情况。
bool display/window/subwindows/embed_subwindows = true 🔗
如果true,则子窗口嵌入在主窗口中(这也称为单窗口模式)。单窗口模式可以更快,因为它不需要为每个弹出窗口和工具提示创建单独的窗口,这可能是一个缓慢的操作,具体取决于使用的操作系统和渲染方法。
如果false,则子窗口被创建为单独的窗口(这也称为多窗口模式)。这允许它们移动到主窗口之外并使用本机操作系统窗口装饰。
这相当于编辑器中的EditorSettings.interface/editor/single_window_mode,只是设置的值被反转了。
int display/window/vsync/vsync_mode = 1 🔗
设置主应用窗口的V-Sync模式。编辑器自己的V-Sync模式可以使用EditorSettings.interface/editor/vsync_mode设置。
有关可能的值以及它们如何影响应用程序的行为,请参阅VSyncMode。
根据平台和渲染方法,如果不支持所需的模式,引擎将回退到已启用。
可以使用--disable-vsync命令行参数在命令行上禁用V-Sync。
注意:Adaptive和MailboxV-Sync模式仅在Forward+和Mobile渲染方法中受支持,不支持兼容性。
注意:此属性仅在项目启动时读取。要在运行时更改V-Sync模式,请调用DisplayServer.window_set_vsync_mode()。
String dotnet/project/assembly_name = "" 🔗
. NET程序集的名称。此名称用作.csproj和.sln文件的名称。默认情况下,它设置为项目的名称(application/config/name),允许将来更改它而不影响.NET程序集。
int dotnet/project/assembly_reload_attempts = 3 🔗
重建后尝试重新加载程序集的次数。NET程序集。实际上也是等待卸载脚本程序集完成的超时时间(以秒为单位)。
String dotnet/project/solution_directory = "" 🔗
包含. sln文件的目录。默认情况下,.sln文件位于项目目录的根目录中,位于project.i3d和.csproj文件旁边。
更改此值允许设置一个多项目场景,其中有多个. csproj。请记住,i3D项目被视为工作区中的C#项目之一,它的根目录应该包含project.i3d和.csproj相邻。
bool editor/export/convert_text_resources_to_binary = true 🔗
如果true,则文本资源(ire)和文本场景(iscn)文件在导出时转换为相应的二进制格式。这会减小文件大小并略微加快加载速度。
注意:由于导出项目中资源的文件扩展名可能会发生变化,因此强烈建议使用@S3Script.load()或ResourceLoader而不是FileAccess来动态加载资源。
注意:项目设置文件(project. i3d)将始终在导出时转换为二进制,无论此设置如何。
int editor/import/atlas_max_width = 2048 🔗
将纹理作为图集导入时使用的最大宽度。使用时该值将四舍五入到最接近的2次方。使用此选项可防止导入的纹理在另一个方向上增长过大。
bool editor/import/reimport_missing_imported_files = true 🔗
bool editor/import/use_multiple_threads = true 🔗
如果true导入资源在多个线程上运行。
bool editor/movie_writer/disable_vsync = false 🔗
如果true,则在编写电影时请求禁用V-Sync(类似于将display/window/vsync/vsync_mode设置为禁用)。如果硬件速度足够快,可以以高于显示器刷新率的帧率渲染、编码和保存视频,这可以加快视频编写速度。
注意:如果操作系统或图形驱动程序强制V-Sync且应用程序无法禁用它,则editor/movie_writer/disable_vsync无效。
int editor/movie_writer/fps = 60 🔗
编写电影时每秒记录在视频中的帧数。模拟速度将调整为始终匹配指定的帧率,这意味着引擎在更高的editor/movie_writer/fps值下运行速度会变慢。某些FPS值将要求您调整editor/movie_writer/mix_rate以防止音频随着时间的推移而去同步。
这可以在命令行上使用--fix d-fps<fps>命令行参数手动指定。
int editor/movie_writer/mix_rate = 48000 🔗
编写电影时在录制的音频中使用的音频混合率(以Hz为单位)。这可能与audio/driver/mix_rate不同,但该值必须可被editor/movie_writer/fps整除,以防止音频随着时间的推移而去同步。
float editor/movie_writer/mjpeg_quality = 0.75 🔗
将视频写入AVI文件时使用的JPEG质量,介于0.01和1.0(含)之间。更高的质量值以更大的文件大小为代价导致更好看的输出。推荐的质量值介于0.75和0.9之间。即使在质量1.0,JPEG压缩仍然是有损的。
注意:这不会影响音频质量或写入PNG图像序列。
String editor/movie_writer/movie_file = "" 🔗
电影的输出路径。文件扩展名决定了将使用的MovieWriter。
i3D有2个内置的MovieWriter:
-带有MJPEG的AVI容器,用于视频和未压缩的音频(. avi文件扩展名)。有损压缩,中等文件大小,快速编码。有损压缩质量可以通过更改editor/movie_writer/mjpeg_quality来调整。生成的文件可以在大多数视频播放器中查看,但必须将其转换为另一种格式,以便在网络上或通过VideoStreamPlayer的i3D进行查看。MJPEG不支持透明度。AVI输出目前限制为最多4 GB大小的文件。
-视频的PNG图像序列和音频的WAV(. png文件扩展名)。无损压缩,大文件大小,编码速度慢。设计用于在录制后使用另一个工具(如FFmpeg)编码到视频文件中。目前不支持透明度,即使根视口设置为透明。
如果您需要编码为不同的格式或通过第三方软件传输流,您可以扩展此MovieWriter类以创建您自己的电影作家。
使用PNG输出时,帧号会附加在文件名的末尾。它从0开始,用8位数字填充,以确保正确排序和更容易处理。例如,如果输出路径是/tmp/hello. png,前两帧将是/tmp/hello0000000.png和/tmp/hello0000001.png。音频将保存在/tmp/hello.wav。
int editor/movie_writer/speaker_mode = 0 🔗
编写电影时在录制的音频中使用的扬声器模式。有关可能的值,请参阅SpeakerMode。
String editor/naming/default_signal_callback_name = "_on_{node_name}_{signal_name}" 🔗
默认信号回调名称的格式(在信号连接对话框中)。可以使用以下替换:{NodeName}、{nodeName}、{node_name}、{SignalName}、{signalName}和{signal_name}。
String editor/naming/default_signal_callback_to_self_name = "_on_{signal_name}" 🔗
当信号连接到发出它的同一节点时,默认信号回调名称的格式(在信号连接对话框中)。可以使用以下替换:{NodeName}、{nodeName}、{node_name}、{SignalName}、{signalName}和{signal_name}。
int editor/naming/node_name_casing = 0 🔗
自动创建节点名称时,设置要在此项目中使用的外壳类型。这主要是一个编辑器设置。
int editor/naming/node_name_num_separator = 0 🔗
使用什么将节点名称与编号分开。这主要是一个编辑器设置。
int editor/naming/scene_name_casing = 2 🔗
从场景根节点生成场景文件名时,设置要在此项目中使用的大小写类型。这主要是一个编辑器设置。
int editor/naming/script_name_casing = 0 🔗
从选定节点生成脚本文件名时,设置要在此项目中使用的大小写类型。这主要是一个编辑器设置。
String editor/run/main_run_args = "" 🔗
运行项目时要附加到i3D自身命令行的命令行参数。这不会影响编辑器本身。
可以通过使用%command%占位符让另一个可执行文件运行i3D。该占位符将被替换为i3D自身的命令行。特定于程序的参数应放在占位符之前,而特定于i3D的参数应放在占位符之后。
例如,这可用于在Linux上的NVIDIA Optimus系统中强制项目在专用GPU上运行::
prime-run %command%
PackedStringArray editor/script/search_in_file_extensions 🔗
包含在脚本编辑器的“在文件中查找”功能中的基于文本的文件扩展名。如果您也希望解析场景文件,特别是如果您使用在场景文件中序列化的内置脚本,您可以添加例如iscn。
注意: 返回的数组是被 copied 的,对它的任何修改都不会更新原始属性的值。有关更多详细信息,请参阅 PackedStringArray 。
String editor/script/templates_search_path = "res://script_templates" 🔗
搜索特定于项目的脚本模板的路径。i3D将在特定于编辑器的路径和特定于项目的路径中搜索脚本模板。
bool editor/version_control/autoload_on_startup = false 🔗
String editor/version_control/plugin_name = "" 🔗
bool filesystem/import/blender/enabled = true 🔗
如果true,则将通过将扩展名为.blend的Blender 3D场景文件转换为glTF 2.0来导入它们。
这需要在文件系统/导入/搅拌机/blender_path的编辑器设置中配置搅拌机可执行文件的路径。搅拌机3.0或更高版本是必需的。
bool filesystem/import/blender/enabled.android = false 🔗
覆盖Android上的filesystem/import/blender/enabled,其中无法从i3D轻松访问Blender。
bool filesystem/import/blender/enabled.web = false 🔗
覆盖Web上无法从i3D轻松访问Blender的filesystem/import/blender/enabled。
bool filesystem/import/fbx2gltf/enabled = true 🔗
如果true,则通过将扩展名为. fbx的欧特克FBX 3D场景文件转换为glTF 2.0来导入它们。
这需要在编辑器设置中配置FBX2glTF可执行文件的路径,该设置位于EditorSettings.filesystem/import/fbx/fbx2gltf_path。
bool filesystem/import/fbx2gltf/enabled.android = false 🔗
在无法从i3D轻松访问FBX2glTF的Android上覆盖filesystem/import/fbx2gltf/enabled。
bool filesystem/import/fbx2gltf/enabled.web = false 🔗
覆盖无法从i3D轻松访问FBX2glTF的Web上的filesystem/import/fbx2gltf/enabled。
int gui/common/default_scroll_deadzone = 0 🔗
ScrollContainer.scroll_deadzone的默认值,除非被覆盖,否则将用于所有ScrollContainer。
bool gui/common/snap_controls_to_pixels = true 🔗
如果true,则将Control节点顶点捕捉到最近的像素,以确保即使在摄像机移动或缩放时它们也保持清晰。
bool gui/common/swap_cancel_ok 🔗
如果true,则交换在Windows上的对话框中取消和确定按钮以遵循界面约定。DisplayServer.get_swap_cancel_ok()可用于查询在运行时是否交换按钮。
注意:这不会影响本机对话框,例如由DisplayServer.dialog_show()生成的对话框。
int gui/common/text_edit_undo_stack_max_size = 1024 🔗
TextEdit字段的最大撤消/重做历史大小。
bool gui/fonts/dynamic_fonts/use_oversampling = true 🔗
String gui/theme/custom = "" 🔗
用于项目的自定义Theme资源文件的路径(.主题或通用. ire/.res扩展名)。
String gui/theme/custom_font = "" 🔗
自定义Font资源的路径,用作项目所有GUI元素的默认值。
int gui/theme/default_font_antialiasing = 1 🔗
默认项目字体的字体防混淆现象模式。请参阅FontFile.antialiasing。
注意:此设置不会影响项目中使用的自定义Font。为此,请使用导入停靠坞(请参阅ResourceImporterDynamicFont.antialiasing)。
bool gui/theme/default_font_generate_mipmaps = false 🔗
如果设置为true,则默认字体将生成mipmap。这可以防止当Control缩小或从远距离查看TextRender时文本看起来颗粒状(如果TextRender.texture_filter设置为显示mipmap的模式)。
启用gui/theme/default_font_generate_mipmaps会增加字体生成时间和内存使用量。仅在实际需要时启用此设置。
注意:此设置不会影响项目中使用的自定义Font。为此,请使用导入停靠坞(参见ResourceImporterDynamicFont.generate_mipmaps)。
int gui/theme/default_font_hinting = 1 🔗
默认项目字体的字体提示模式。请参阅FontFile.hinting。
注意:此设置不会影响项目中使用的自定义Font。为此,请使用导入停靠坞(参见ResourceImporterDynamicFont.hinting)。
bool gui/theme/default_font_multichannel_signed_distance_field = false 🔗
如果设置为true,默认字体将使用多通道有符号距离字段(MSDF)以任何大小进行清晰渲染。由于这种方法不依赖于每次字体大小变化时都光栅化字体,因此可以实时调整字体大小而不会影响性能。对于缩小的Controls(或从远距离查看的TextRenders),文本也不会看起来粗糙。
MSDF字体渲染可以与gui/theme/default_font_generate_mipmaps相结合,以在缩放时进一步提高字体渲染质量。
注意:此设置不会影响项目中使用的自定义Font。为此,请使用导入停靠坞(参见ResourceImporterDynamicFont.multichannel_signed_distance_field)。
int gui/theme/default_font_subpixel_positioning = 1 🔗
默认项目字体的字体字形亚像素定位模式。请参阅FontFile.subpixel_positioning。
注意:此设置不会影响项目中使用的自定义Font。为此,请使用导入停靠坞(参见ResourceImporterDynamicFont.subpixel_positioning)。
float gui/theme/default_theme_scale = 1.0 🔗
注意:此属性仅在项目启动时读取。要在运行时更改默认规模,请设置ThemeDB.fallback_base_scale。
int gui/theme/lcd_subpixel_layout = 1 🔗
LCD亚像素布局用于字体抗混淆现象。参见FontLCDSubpixelLayout。
float gui/timers/button_shortcut_feedback_highlight_time = 0.2 🔗
启用BaseButton.shortcut_feedback时,这是BaseButton在快捷方式后保持突出显示的时间。
int gui/timers/incremental_search_max_interval_msec = 2000 🔗
Tree、ItemList等控件中增量搜索的定时器设置(以毫秒为单位)。
float gui/timers/text_edit_idle_detect_sec = 3 🔗
用于检测TextEdit中空闲的定时器(以秒为单位)。
float gui/timers/tooltip_delay_sec = 0.5 🔗
工具提示的默认延迟(以秒为单位)。
float gui/timers/tooltip_delay_sec.editor_hint = 0.5 🔗
编辑器中工具提示的延迟。
Dictionary input/ui_accept 🔗
默认InputEventAction用于确认焦点按钮、菜单或列表项,或验证输入。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_cancel 🔗
默认InputEventAction丢弃模态或挂起输入。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_copy 🔗
默认InputEventAction将选择复制到剪贴板。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_cut 🔗
默认InputEventAction将选择剪切到剪贴板。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_down 🔗
默认InputEventAction在UI中向下移动。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_end 🔗
默认InputEventAction到Control的结束位置(例如ItemList或Tree中的最后一项),匹配典型桌面UI系统上@GlobalScope.KEY_END的行为。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_filedialog_refresh 🔗
默认InputEventAction刷新FileDialog的当前目录的内容。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
默认InputEventAction切换显示FileDialog中隐藏的文件和目录。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_filedialog_up_one_level 🔗
默认InputEventAction在FileDialog中上升一个目录。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_focus_next 🔗
默认为InputEventAction以聚焦场景中的下一个Control。焦点行为可以通过Control.focus_next进行配置。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_focus_prev 🔗
默认为InputEventAction以聚焦场景中的前一个Control。焦点行为可以通过Control.focus_previous进行配置。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_graph_delete 🔗
默认InputEventAction删除GraphEdit中的GraphNode。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_graph_duplicate 🔗
默认InputEventAction在GraphEdit中复制GraphNode。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_home 🔗
默认InputEventAction转到Control的起始位置(例如ItemList或Tree中的第一个项目),匹配典型桌面UI系统上@GlobalScope.KEY_HOME的行为。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_left 🔗
默认InputEventAction在UI中向左移动。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
默认InputEventAction打开文本字段中的上下文菜单。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_page_down 🔗
默认InputEventAction在Control(例如在ItemList或Tree中)中的页面下移,匹配典型桌面UI系统上@GlobalScope.KEY_PAGEDOWN的行为。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_page_up 🔗
默认InputEventAction在Control中(例如在ItemList或Tree中)上一页,匹配典型桌面UI系统上@GlobalScope.KEY_PAGEUP的行为。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_paste 🔗
从剪贴板粘贴的默认InputEventAction。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_redo 🔗
默认InputEventAction重做撤消的操作。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_right 🔗
默认InputEventAction在UI中向右移动。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_select 🔗
默认InputEventAction选择Control中的项目(例如在ItemList或Tree中)。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_swap_input_direction 🔗
默认InputEventAction交换输入方向,即在从左到右到从右到左的模式之间更改。影响文本编辑控件(LineEdit、TextEdit)。
Dictionary input/ui_text_add_selection_for_next_occurrence 🔗
如果选择当前处于活动状态,文本字段中的最后一个插入符号,则搜索选择的下一个匹配项,添加插入符号并选择下一个匹配项。
如果文本字段中最后一个插入符号当前没有活动的选择,请选择当前在插入符号下的单词。
对于所有出现的最后一个插入符号的选择和所有现有的插入符号,可以按顺序执行该操作。
视口调整为最新添加的插入符号。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_backspace 🔗
默认InputEventAction删除文本光标前的字符。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_backspace_all_to_left 🔗
默认InputEventAction删除文本光标前的所有文本。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_backspace_all_to_left.macos 🔗
macOS特定覆盖用于删除文本光标之前的所有文本的快捷方式。
Dictionary input/ui_text_backspace_word 🔗
默认InputEventAction删除光标之前的所有字符,直到出现空格或标点符号字符。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_backspace_word.macos 🔗
macOS特定覆盖删除单词的快捷方式。
Dictionary input/ui_text_caret_add_above 🔗
默认InputEventAction在文本的每个插入符号上方添加一个额外的插入符号。
Dictionary input/ui_text_caret_add_above.macos 🔗
macOS特定覆盖快捷方式以在每个插入符号上方添加插入符号。
Dictionary input/ui_text_caret_add_below 🔗
默认InputEventAction在文本的每个插入符号下方添加额外的插入符号。
Dictionary input/ui_text_caret_add_below.macos 🔗
macOS特定覆盖快捷方式以在每个插入符号下方添加插入符号。
Dictionary input/ui_text_caret_document_end 🔗
默认InputEventAction将文本光标移动到文本末尾。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_caret_document_end.macos 🔗
macOS特定覆盖快捷方式以将文本光标移动到文本末尾。
Dictionary input/ui_text_caret_document_start 🔗
默认InputEventAction将文本光标移动到文本的开头。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_caret_document_start.macos 🔗
macOS特定覆盖快捷方式以将文本光标移动到文本的开头。
Dictionary input/ui_text_caret_down 🔗
默认InputEventAction将文本光标向下移动。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_caret_left 🔗
默认InputEventAction向左移动文本光标。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_caret_line_end 🔗
默认InputEventAction将文本光标移动到行尾。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_caret_line_end.macos 🔗
macOS特定覆盖快捷方式以将文本光标移动到行尾。
Dictionary input/ui_text_caret_line_start 🔗
默认InputEventAction将文本光标移动到行首。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_caret_line_start.macos 🔗
macOS特定覆盖快捷方式以将文本光标移动到行首。
Dictionary input/ui_text_caret_page_down 🔗
默认InputEventAction将文本光标向下移动一页。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_caret_page_up 🔗
默认InputEventAction将文本光标向上移动一页。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_caret_right 🔗
默认InputEventAction向右移动文本光标。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_caret_up 🔗
默认InputEventAction向上移动文本光标。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_caret_word_left 🔗
默认InputEventAction将文本光标向左移动到下一个空格或标点符号。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_caret_word_left.macos 🔗
macOS特定覆盖快捷方式以将文本光标向后移动一个单词。
Dictionary input/ui_text_caret_word_right 🔗
默认InputEventAction将文本光标向右移动到下一个空格或标点符号。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_caret_word_right.macos 🔗
macOS特定覆盖快捷方式以将文本光标向前移动一个单词。
Dictionary input/ui_text_clear_carets_and_selection 🔗
如果只有一个插入符号处于活动状态并且带有选定内容,则清除选定内容。
如果有多个插入符号处于活动状态,则删除辅助插入符号并清除其选择。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_completion_accept 🔗
默认InputEventAction接受自动完成提示。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_completion_query 🔗
默认InputEventAction请求自动完成。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_completion_replace 🔗
默认InputEventAction接受自动完成提示,替换现有文本。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_dedent 🔗
默认InputEventAction为无缩进文本。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_delete 🔗
默认InputEventAction删除文本光标后的字符。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_delete_all_to_right 🔗
默认InputEventAction删除文本光标后的所有文本。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_delete_all_to_right.macos 🔗
macOS特定覆盖用于删除文本光标后的所有文本的快捷方式。
Dictionary input/ui_text_delete_word 🔗
默认InputEventAction删除光标后的所有字符,直到出现空格或标点符号字符。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_delete_word.macos 🔗
macOS特定覆盖用于删除文本光标后的单词的快捷方式。
Dictionary input/ui_text_indent 🔗
默认InputEventAction缩进当前行。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_newline 🔗
默认InputEventAction在文本光标位置插入新行。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_newline_above 🔗
默认InputEventAction在当前行之前插入新行。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_newline_blank 🔗
默认InputEventAction在当前行之后插入新行。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_scroll_down 🔗
默认InputEventAction向下滚动一行文本。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_scroll_down.macos 🔗
macOS特定覆盖以向下滚动一行的快捷方式。
Dictionary input/ui_text_scroll_up 🔗
默认InputEventAction向上滚动一行文本。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_scroll_up.macos 🔗
macOS特定覆盖向上滚动一行的快捷方式。
Dictionary input/ui_text_select_all 🔗
默认InputEventAction选择所有文本。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_select_word_under_caret 🔗
如果当前没有活动的选择,则选择文本字段中插入符号当前下的单词。如果选择当前处于活动状态,则取消选择当前选择。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_select_word_under_caret.macos 🔗
macOS特定覆盖快捷方式以选择插入符号当前下的单词。
Dictionary input/ui_text_skip_selection_for_next_occurrence 🔗
如果文本字段中的最后一个插入符号当前没有活动的选择,则搜索当前插入符号下的单词的下一次出现并将插入符号移动到下一次出现。对于最后一个插入符号下的单词的其他出现,可以按顺序执行该操作。
如果选择当前与文本字段中的最后一个插入符号处于活动状态,则搜索该选择的下一个匹配项,添加一个插入符号,选择下一个匹配项,然后取消选择上一个选择及其关联的插入符号。对于最后一个插入符号的选择的其他匹配项,可以按顺序执行该操作。
视口调整为最新添加的插入符号。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_submit 🔗
默认InputEventAction提交文本字段。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_text_toggle_insert_mode 🔗
默认InputEventAction在文本字段中切换插入模式。在插入模式下,插入新文本会覆盖光标后面的字符,除非下一个字符是新行。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_undo 🔗
默认InputEventAction撤消最近的操作。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_unicode_start 🔗
默认InputEventAction开始在文本字段中输入Unicode字符十六进制代码。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
Dictionary input/ui_up 🔗
默认InputEventAction在UI中向上移动。
注意:默认ui_*操作不能被删除,因为它们是多个Control的内部逻辑所必需的。但是,分配给操作的事件可以修改。
bool input_devices/buffering/agile_event_flushing = false 🔗
如果true,则键/触摸/操纵杆事件将在每个空闲和物理帧之前刷新。
如果false,则在引擎的迭代之间,每个进程帧只会刷新一次此类事件。
启用此功能可以大大提高对输入的响应能力,特别是在需要每个可见(进程)帧运行多个物理帧的设备中,因为它们不能以目标帧率运行。
注意:目前仅在Android上实现。
bool input_devices/compatibility/legacy_just_pressed_behavior = false 🔗
如果true,Input.is_action_just_pressed()和Input.is_action_just_released()只会在动作仍处于各自状态时返回true,即在同一帧上按下和释放的动作将被遗漏。
如果false,则不会丢失任何输入。
注意:在几乎所有情况下,您都应该更喜欢false设置。遗留行为是启用支持依赖旧逻辑的旧项目,而无需更改脚本。
String input_devices/pen_tablet/driver 🔗
指定要使用的平板驱动程序。如果留空,将使用默认驱动程序。
注意:当前使用的驱动程序可以在运行时通过--tablet-driver命令行参数进行覆盖。
注意:使用DisplayServer.tablet_set_current_driver()在运行时切换平板电脑驱动程序。
String input_devices/pen_tablet/driver.windows 🔗
覆盖Windows上的input_devices/pen_tablet/driver。支持的值为:
-auto(默认),如果在Wacom平板电脑属性或系统设置中禁用了Windows Ink,则使用wintab,否则使用winink。
-winink,使用Windows原生“Windows Ink”驱动程序。
-wintab,使用Wacom“WinTab”驱动程序。
-虚拟,平板电脑输入被禁用。
bool input_devices/pointing/android/enable_long_press_as_right_click = false 🔗
如果true,则Android触摸屏上的长按事件将转换为右键单击事件。
bool input_devices/pointing/android/enable_pan_and_scale_gestures = false 🔗
如果true,则在Android设备上启用多点触控平移和缩放手势。
int input_devices/pointing/android/rotary_input_scroll_axis = 1 🔗
在Wear OS设备上,定义鼠标滚轮旋转输入映射到哪个轴。这种旋转输入通常通过旋转智能手表上的物理或虚拟(基于触摸)边框来执行。
bool input_devices/pointing/emulate_mouse_from_touch = true 🔗
如果true,则在触摸屏上点击或滑动时发送鼠标输入事件。
bool input_devices/pointing/emulate_touch_from_mouse = false 🔗
如果true,则在单击或拖动鼠标时发送触摸输入事件。
bool input_devices/sensors/enable_accelerometer = false 🔗
如果true,则启用加速度计传感器并且Input.get_accelerometer()返回有效数据。
bool input_devices/sensors/enable_gravity = false 🔗
如果true,则启用重力传感器并且Input.get_gravity()返回有效数据。
bool input_devices/sensors/enable_gyroscope = false 🔗
如果true,则启用陀螺仪传感器并且Input.get_gyroscope()返回有效数据。
bool input_devices/sensors/enable_magnetometer = false 🔗
如果true,则启用磁力计传感器并且Input.get_magnetometer()返回有效数据。
String internationalization/locale/fallback = "en" 🔗
如果翻译在给定语言中不可用,则回退到的语言环境。如果留空,将使用en(英语)。
注意:不要与TextServerFallback混淆。
bool internationalization/locale/include_text_server_data = false 🔗
如果true,则文本服务器中断迭代规则集、字典和其他可选数据包含在导出的项目中。
注:"ICU/HarfBuzz/Graphite"文本服务器数据包括缅甸语、汉语、日语、高棉语、老挝语和泰语字典以及Unicode标准附件#29和Unicode标准附件#14单词和换行规则。数据大约4 MB大。
注意:TextServerFallback不使用其他数据。
String internationalization/locale/test = "" 🔗
如果非空,则将使用此语言环境而不是自动检测到的系统语言环境。
注意:此设置也适用于导出的项目。要仅影响编辑器中的测试,请使用编辑器功能标签覆盖此设置以进行本地化测试。
bool internationalization/pseudolocalization/double_vowels = false 🔗
伪本地化期间字符串中的双元音,以模拟由于本地化而导致的文本加长。
float internationalization/pseudolocalization/expansion_ratio = 0.0 🔗
伪本地化期间使用的扩展率。0.3的值对于大多数实际目的来说就足够了,并且会将每个字符串的长度增加30%。
bool internationalization/pseudolocalization/fake_bidi = false 🔗
如果true,则在启用伪本地化时模拟双向(从右到左)文本。这可用于发现RTL布局和UI镜像的问题,如果项目本地化为RTL语言(如阿拉伯语或希伯来语),这些问题将突然出现。另见internationalization/rendering/force_right_to_left_layout_direction。
bool internationalization/pseudolocalization/override = false 🔗
将字符串中的所有字符替换为*。用于查找不可本地化的字符串。
String internationalization/pseudolocalization/prefix = "[" 🔗
将附加到伪本地化字符串的前缀。
bool internationalization/pseudolocalization/replace_with_accents = true 🔗
在伪本地化期间用重音变体替换所有字符。
bool internationalization/pseudolocalization/skip_placeholders = true 🔗
在伪本地化期间跳过字符串格式的占位符,例如%s或%f。用于识别需要额外控制字符才能正确显示的字符串。
String internationalization/pseudolocalization/suffix = "]" 🔗
将附加到伪本地化字符串的后缀。
bool internationalization/pseudolocalization/use_pseudolocalization = false 🔗
如果true,则为项目启用伪本地化。这可用于发现项目本地化为字符串比源语言长的语言后可能出现的不可翻译的字符串或布局问题。
注意:此属性仅在项目启动时读取。要在运行时切换伪本地化,请改用TranslationServer.pseudolocalization_enabled。
bool internationalization/rendering/force_right_to_left_layout_direction = false 🔗
强制所有控件的布局方向和文本写入方向为RTL,即使当前区域设置旨在使用从左到右的布局和文本写入方向。这应仅用于测试目的。另请参阅internationalization/pseudolocalization/fake_bidi。
bool internationalization/rendering/root_node_auto_translate = true 🔗
如果true,则根节点将使用Item.AUTO_TRANSLATE_MODE_ALWAYS,否则将使用Item.AUTO_TRANSLATE_MODE_DISABLED。
注意:此属性仅在项目启动时读取。要在运行时更改自动翻译模式,请改为设置SceneTree.root的Item.auto_translate_mode。
int internationalization/rendering/root_node_layout_direction = 0 🔗
根节点默认布局方向。
String internationalization/rendering/text_driver = "" 🔗
指定要使用的TextServer。如果留空,将使用默认值。
“ICU/HarfBuzz/Graphite”(TextServerAdvanced)是最先进的文本驱动程序,支持从右到左的排版和复杂的脚本(对于阿拉伯语、希伯来语等语言)。“回退”文本驱动程序(TextServerFallback)不支持从右到左的排版和复杂的脚本。
注意:正在使用的驱动程序可以在运行时通过--text-driver覆盖。
注意:有一个额外的Dummy文本驱动程序可用,它禁用所有文本渲染和字体相关功能。此驱动程序未在项目设置中列出,但可以在运行编辑器或项目时使用--text-driver Dummy启用。
2D导航层1的可选名称。如果留空,该层将显示为“层1”。
2D导航层2的可选名称。如果留空,该层将显示为“第2层”。
2D导航层3的可选名称。如果留空,该层将显示为“第3层”。
2D导航层4的可选名称。如果留空,该层将显示为“第4层”。
2D导航层5的可选名称。如果留空,该层将显示为“第5层”。
2D导航层6的可选名称。如果留空,该层将显示为“第6层”。
2D导航层7的可选名称。如果留空,该层将显示为“第7层”。
2D导航层8的可选名称。如果留空,该层将显示为“第8层”。
2D导航层9的可选名称。如果留空,该层将显示为“第9层”。
2D导航层10的可选名称。如果留空,该层将显示为“第10层”。
2D导航层11的可选名称。如果留空,该层将显示为“第11层”。
2D导航层12的可选名称。如果留空,该层将显示为“第12层”。
2D导航层13的可选名称。如果留空,该层将显示为“第13层”。
2D导航层14的可选名称。如果留空,该层将显示为“第14层”。
2D导航层15的可选名称。如果留空,该层将显示为“第15层”。
2D导航层16的可选名称。如果留空,该层将显示为“第16层”。
2D导航层17的可选名称。如果留空,该层将显示为“第17层”。
2D导航层18的可选名称。如果留空,该层将显示为“第18层”。
2D导航层19的可选名称。如果留空,该层将显示为“第19层”。
2D导航层20的可选名称。如果留空,该层将显示为“第20层”。
2D导航层21的可选名称。如果留空,该层将显示为“第21层”。
2D导航层22的可选名称。如果留空,该层将显示为“第22层”。
2D导航层23的可选名称。如果留空,该层将显示为“第23层”。
2D导航层24的可选名称。如果留空,该层将显示为“第24层”。
2D导航层25的可选名称。如果留空,该层将显示为“第25层”。
2D导航层26的可选名称。如果留空,该层将显示为“第26层”。
2D导航层27的可选名称。如果留空,该层将显示为“第27层”。
2D导航层28的可选名称。如果留空,该层将显示为“第28层”。
2D导航层29的可选名称。如果留空,该层将显示为“第29层”。
2D导航层30的可选名称。如果留空,该层将显示为“第30层”。
2D导航层31的可选名称。如果留空,该层将显示为“第31层”。
2D导航层32的可选名称。如果留空,该层将显示为“层32”。
String layer_names/2d_physics/layer_1 = "" 🔗
2D物理层1的可选名称。如果留空,该层将显示为“层1”。
String layer_names/2d_physics/layer_2 = "" 🔗
2D物理层2的可选名称。如果留空,该层将显示为“第2层”。
String layer_names/2d_physics/layer_3 = "" 🔗
2D物理层3的可选名称。如果留空,该层将显示为“第3层”。
String layer_names/2d_physics/layer_4 = "" 🔗
2D物理第4层的可选名称。如果留空,该层将显示为“第4层”。
String layer_names/2d_physics/layer_5 = "" 🔗
2D物理层5的可选名称。如果留空,该层将显示为“第5层”。
String layer_names/2d_physics/layer_6 = "" 🔗
2D物理层6的可选名称。如果留空,该层将显示为“第6层”。
String layer_names/2d_physics/layer_7 = "" 🔗
2D物理层7的可选名称。如果留空,该层将显示为“第7层”。
String layer_names/2d_physics/layer_8 = "" 🔗
2D物理第8层的可选名称。如果留空,该层将显示为“第8层”。
String layer_names/2d_physics/layer_9 = "" 🔗
2D物理层9的可选名称。如果留空,该层将显示为“第9层”。
String layer_names/2d_physics/layer_10 = "" 🔗
2D物理层10的可选名称。如果留空,该层将显示为“第10层”。
String layer_names/2d_physics/layer_11 = "" 🔗
2D物理层11的可选名称。如果留空,该层将显示为“第11层”。
String layer_names/2d_physics/layer_12 = "" 🔗
2D物理层12的可选名称。如果留空,该层将显示为“第12层”。
String layer_names/2d_physics/layer_13 = "" 🔗
2D物理层13的可选名称。如果留空,该层将显示为“第13层”。
String layer_names/2d_physics/layer_14 = "" 🔗
2D物理层14的可选名称。如果留空,该层将显示为“第14层”。
String layer_names/2d_physics/layer_15 = "" 🔗
2D物理层15的可选名称。如果留空,该层将显示为“第15层”。
String layer_names/2d_physics/layer_16 = "" 🔗
2D物理层16的可选名称。如果留空,该层将显示为“第16层”。
String layer_names/2d_physics/layer_17 = "" 🔗
2D物理层17的可选名称。如果留空,该层将显示为“第17层”。
String layer_names/2d_physics/layer_18 = "" 🔗
2D物理层18的可选名称。如果留空,该层将显示为“第18层”。
String layer_names/2d_physics/layer_19 = "" 🔗
2D物理层19的可选名称。如果留空,该层将显示为“第19层”。
String layer_names/2d_physics/layer_20 = "" 🔗
2D物理层20的可选名称。如果留空,该层将显示为“第20层”。
String layer_names/2d_physics/layer_21 = "" 🔗
2D物理层21的可选名称。如果留空,该层将显示为“第21层”。
String layer_names/2d_physics/layer_22 = "" 🔗
2D物理层22的可选名称。如果留空,该层将显示为“第22层”。
String layer_names/2d_physics/layer_23 = "" 🔗
2D物理层23的可选名称。如果留空,该层将显示为“第23层”。
String layer_names/2d_physics/layer_24 = "" 🔗
2D物理层24的可选名称。如果留空,该层将显示为“第24层”。
String layer_names/2d_physics/layer_25 = "" 🔗
2D物理层25的可选名称。如果留空,该层将显示为“第25层”。
String layer_names/2d_physics/layer_26 = "" 🔗
2D物理层26的可选名称。如果留空,该层将显示为“第26层”。
String layer_names/2d_physics/layer_27 = "" 🔗
2D物理层27的可选名称。如果留空,该层将显示为“第27层”。
String layer_names/2d_physics/layer_28 = "" 🔗
2D物理层28的可选名称。如果留空,该层将显示为“第28层”。
String layer_names/2d_physics/layer_29 = "" 🔗
2D物理层29的可选名称。如果留空,该层将显示为“第29层”。
String layer_names/2d_physics/layer_30 = "" 🔗
2D物理层30的可选名称。如果留空,该层将显示为“第30层”。
String layer_names/2d_physics/layer_31 = "" 🔗
2D物理层31的可选名称。如果留空,该层将显示为“第31层”。
String layer_names/2d_physics/layer_32 = "" 🔗
2D物理层32的可选名称。如果留空,该层将显示为“层32”。
String layer_names/2d_render/layer_1 = "" 🔗
2D渲染层1的可选名称。如果留空,该层将显示为“层1”。
String layer_names/2d_render/layer_2 = "" 🔗
2D渲染第2层的可选名称。如果留空,该层将显示为“第2层”。
String layer_names/2d_render/layer_3 = "" 🔗
2D渲染层3的可选名称。如果留空,该层将显示为“第3层”。
String layer_names/2d_render/layer_4 = "" 🔗
2D渲染层4的可选名称。如果留空,该层将显示为“第4层”。
String layer_names/2d_render/layer_5 = "" 🔗
2D渲染层5的可选名称。如果留空,该层将显示为“第5层”。
String layer_names/2d_render/layer_6 = "" 🔗
2D渲染层6的可选名称。如果留空,该层将显示为“第6层”。
String layer_names/2d_render/layer_7 = "" 🔗
2D渲染层7的可选名称。如果留空,该层将显示为“第7层”。
String layer_names/2d_render/layer_8 = "" 🔗
2D渲染第8层的可选名称。如果留空,该层将显示为“第8层”。
String layer_names/2d_render/layer_9 = "" 🔗
2D渲染层9的可选名称。如果留空,该层将显示为“第9层”。
String layer_names/2d_render/layer_10 = "" 🔗
2D渲染图层10的可选名称。如果留空,该图层将显示为“图层10”。
String layer_names/2d_render/layer_11 = "" 🔗
2D渲染层11的可选名称。如果留空,该层将显示为“第11层”。
String layer_names/2d_render/layer_12 = "" 🔗
2D渲染层12的可选名称。如果留空,该层将显示为“第12层”。
String layer_names/2d_render/layer_13 = "" 🔗
2D渲染层13的可选名称。如果留空,该层将显示为“第13层”。
String layer_names/2d_render/layer_14 = "" 🔗
2D渲染层14的可选名称。如果留空,该层将显示为“第14层”。
String layer_names/2d_render/layer_15 = "" 🔗
2D渲染层15的可选名称。如果留空,该层将显示为“第15层”。
String layer_names/2d_render/layer_16 = "" 🔗
2D渲染层16的可选名称。如果留空,该层将显示为“第16层”。
String layer_names/2d_render/layer_17 = "" 🔗
2D渲染图层17的可选名称。如果留空,该图层将显示为“图层17”。
String layer_names/2d_render/layer_18 = "" 🔗
2D渲染层18的可选名称。如果留空,该层将显示为“第18层”。
String layer_names/2d_render/layer_19 = "" 🔗
2D渲染层19的可选名称。如果留空,该层将显示为“第19层”。
String layer_names/2d_render/layer_20 = "" 🔗
2D渲染层20的可选名称。如果留空,该层将显示为“第20层”。
3D导航层1的可选名称。如果留空,该层将显示为“图层1”。
3D导航图层2的可选名称。如果留空,该图层将显示为“图层2”。
3D导航层3的可选名称。如果留空,该层将显示为“第3层”。
3D导航层4的可选名称。如果留空,该层将显示为“第4层”。
3D导航层5的可选名称。如果留空,该层将显示为“第5层”。
3D导航层6的可选名称。如果留空,该层将显示为“第6层”。
3D导航层7的可选名称。如果留空,该层将显示为“第7层”。
3D导航层8的可选名称。如果留空,该层将显示为“第8层”。
3D导航层9的可选名称。如果留空,该层将显示为“第9层”。
3D导航图层10的可选名称。如果留空,该图层将显示为“图层10”。
3D导航层11的可选名称。如果留空,该层将显示为“第11层”。
3D导航层12的可选名称。如果留空,该层将显示为“第12层”。
3D导航层13的可选名称。如果留空,该层将显示为“第13层”。
3D导航层14的可选名称。如果留空,该层将显示为“第14层”。
3D导航层15的可选名称。如果留空,该层将显示为“第15层”。
3D导航层16的可选名称。如果留空,该层将显示为“第16层”。
3D导航图层17的可选名称。如果留空,该图层将显示为“图层17”。
3D导航层18的可选名称。如果留空,该层将显示为“第18层”。
3D导航层19的可选名称。如果留空,该层将显示为“第19层”。
3D导航层20的可选名称。如果留空,该层将显示为“第20层”。
3D导航层21的可选名称。如果留空,该层将显示为“第21层”。
3D导航层22的可选名称。如果留空,该层将显示为“第22层”。
3D导航层23的可选名称。如果留空,该层将显示为“第23层”。
3D导航层24的可选名称。如果留空,该层将显示为“第24层”。
3D导航层25的可选名称。如果留空,该层将显示为“第25层”。
3D导航层26的可选名称。如果留空,该层将显示为“第26层”。
3D导航层27的可选名称。如果留空,该层将显示为“第27层”。
3D导航层28的可选名称。如果留空,该层将显示为“第28层”。
3D导航层29的可选名称。如果留空,该层将显示为“第29层”。
3D导航层30的可选名称。如果留空,该层将显示为“第30层”。
3D导航层31的可选名称。如果留空,该层将显示为“第31层”。
3D导航层32的可选名称。如果留空,该层将显示为“层32”。
String layer_names/3d_physics/layer_1 = "" 🔗
3D物理层1的可选名称。如果留空,该层将显示为“层1”。
String layer_names/3d_physics/layer_2 = "" 🔗
3D物理层2的可选名称。如果留空,该层将显示为“第2层”。
String layer_names/3d_physics/layer_3 = "" 🔗
3D物理层3的可选名称。如果留空,该层将显示为“第3层”。
String layer_names/3d_physics/layer_4 = "" 🔗
3D物理层4的可选名称。如果留空,该层将显示为“第4层”。
String layer_names/3d_physics/layer_5 = "" 🔗
3D物理层5的可选名称。如果留空,该层将显示为“第5层”。
String layer_names/3d_physics/layer_6 = "" 🔗
3D物理层6的可选名称。如果留空,该层将显示为“第6层”。
String layer_names/3d_physics/layer_7 = "" 🔗
3D物理层7的可选名称。如果留空,该层将显示为“第7层”。
String layer_names/3d_physics/layer_8 = "" 🔗
3D物理第8层的可选名称。如果留空,该层将显示为“第8层”。
String layer_names/3d_physics/layer_9 = "" 🔗
3D物理层9的可选名称。如果留空,该层将显示为“第9层”。
String layer_names/3d_physics/layer_10 = "" 🔗
3D物理层10的可选名称。如果留空,该层将显示为“第10层”。
String layer_names/3d_physics/layer_11 = "" 🔗
3D物理层11的可选名称。如果留空,该层将显示为“第11层”。
String layer_names/3d_physics/layer_12 = "" 🔗
3D物理层12的可选名称。如果留空,该层将显示为“第12层”。
String layer_names/3d_physics/layer_13 = "" 🔗
3D物理层13的可选名称。如果留空,该层将显示为“第13层”。
String layer_names/3d_physics/layer_14 = "" 🔗
3D物理层14的可选名称。如果留空,该层将显示为“第14层”。
String layer_names/3d_physics/layer_15 = "" 🔗
3D物理层15的可选名称。如果留空,该层将显示为“第15层”。
String layer_names/3d_physics/layer_16 = "" 🔗
3D物理层16的可选名称。如果留空,该层将显示为“第16层”。
String layer_names/3d_physics/layer_17 = "" 🔗
3D物理层17的可选名称。如果留空,该层将显示为“第17层”。
String layer_names/3d_physics/layer_18 = "" 🔗
3D物理层18的可选名称。如果留空,该层将显示为“第18层”。
String layer_names/3d_physics/layer_19 = "" 🔗
3D物理层19的可选名称。如果留空,该层将显示为“第19层”。
String layer_names/3d_physics/layer_20 = "" 🔗
3D物理层20的可选名称。如果留空,该层将显示为“第20层”。
String layer_names/3d_physics/layer_21 = "" 🔗
3D物理层21的可选名称。如果留空,该层将显示为“第21层”。
String layer_names/3d_physics/layer_22 = "" 🔗
3D物理层22的可选名称。如果留空,该层将显示为“第22层”。
String layer_names/3d_physics/layer_23 = "" 🔗
3D物理层23的可选名称。如果留空,该层将显示为“第23层”。
String layer_names/3d_physics/layer_24 = "" 🔗
3D物理层24的可选名称。如果留空,该层将显示为“第24层”。
String layer_names/3d_physics/layer_25 = "" 🔗
3D物理层25的可选名称。如果留空,该层将显示为“第25层”。
String layer_names/3d_physics/layer_26 = "" 🔗
3D物理层26的可选名称。如果留空,该层将显示为“第26层”。
String layer_names/3d_physics/layer_27 = "" 🔗
3D物理层27的可选名称。如果留空,该层将显示为“第27层”。
String layer_names/3d_physics/layer_28 = "" 🔗
3D物理层28的可选名称。如果留空,该层将显示为“第28层”。
String layer_names/3d_physics/layer_29 = "" 🔗
3D物理层29的可选名称。如果留空,该层将显示为“第29层”。
String layer_names/3d_physics/layer_30 = "" 🔗
3D物理层30的可选名称。如果留空,该层将显示为“第30层”。
String layer_names/3d_physics/layer_31 = "" 🔗
3D物理层31的可选名称。如果留空,该层将显示为“第31层”。
String layer_names/3d_physics/layer_32 = "" 🔗
3D物理层32的可选名称。如果留空,该层将显示为“层32”。
String layer_names/3d_render/layer_1 = "" 🔗
3D渲染层1的可选名称。如果留空,该层将显示为“层1”。
String layer_names/3d_render/layer_2 = "" 🔗
3D渲染层2的可选名称。如果留空,该层将显示为“第2层”。
String layer_names/3d_render/layer_3 = "" 🔗
3D渲染层3的可选名称。如果留空,该层将显示为“第3层”。
String layer_names/3d_render/layer_4 = "" 🔗
3D渲染层4的可选名称。如果留空,该层将显示为“第4层”。
String layer_names/3d_render/layer_5 = "" 🔗
3D渲染层5的可选名称。如果留空,该层将显示为“第5层”。
String layer_names/3d_render/layer_6 = "" 🔗
3D渲染层6的可选名称。如果留空,该层将显示为“第6层”。
String layer_names/3d_render/layer_7 = "" 🔗
3D渲染层7的可选名称。如果留空,该层将显示为“第7层”。
String layer_names/3d_render/layer_8 = "" 🔗
3D渲染图层8的可选名称。如果留空,该图层将显示为“第8层”。
String layer_names/3d_render/layer_9 = "" 🔗
3D渲染层9的可选名称。如果留空,该层将显示为“第9层”。
String layer_names/3d_render/layer_10 = "" 🔗
3D渲染图层10的可选名称。如果留空,该图层将显示为“图层10”。
String layer_names/3d_render/layer_11 = "" 🔗
3D渲染层11的可选名称。如果留空,该层将显示为“第11层”。
String layer_names/3d_render/layer_12 = "" 🔗
3D渲染层12的可选名称。如果留空,该层将显示为“第12层”。
String layer_names/3d_render/layer_13 = "" 🔗
3D渲染层13的可选名称。如果留空,该层将显示为“第13层”。
String layer_names/3d_render/layer_14 = "" 🔗
3D渲染层14的可选名称。如果留空,该层将显示为“第14层”。
String layer_names/3d_render/layer_15 = "" 🔗
3D渲染层15的可选名称。如果留空,该层将显示为“第15层”。
String layer_names/3d_render/layer_16 = "" 🔗
3D渲染层16的可选名称。如果留空,该层将显示为“第16层”。
String layer_names/3d_render/layer_17 = "" 🔗
3D渲染图层17的可选名称。如果留空,该图层将显示为“图层17”。
String layer_names/3d_render/layer_18 = "" 🔗
3D渲染层18的可选名称。如果留空,该层将显示为“第18层”。
String layer_names/3d_render/layer_19 = "" 🔗
3D渲染层19的可选名称。如果留空,该层将显示为“第19层”。
String layer_names/3d_render/layer_20 = "" 🔗
3D渲染层20的可选名称。如果留空,该层将显示为“第20层”。
String layer_names/avoidance/layer_1 = "" 🔗
导航回避层1的可选名称。如果留空,该层将显示为“层1”。
String layer_names/avoidance/layer_2 = "" 🔗
导航回避层2的可选名称。如果留空,该层将显示为“第2层”。
String layer_names/avoidance/layer_3 = "" 🔗
导航回避层3的可选名称。如果留空,该层将显示为“第3层”。
String layer_names/avoidance/layer_4 = "" 🔗
导航回避层4的可选名称。如果留空,该层将显示为“第4层”。
String layer_names/avoidance/layer_5 = "" 🔗
导航回避层5的可选名称。如果留空,该层将显示为“第5层”。
String layer_names/avoidance/layer_6 = "" 🔗
导航回避层6的可选名称。如果留空,该层将显示为“第6层”。
String layer_names/avoidance/layer_7 = "" 🔗
导航回避层7的可选名称。如果留空,该层将显示为“第7层”。
String layer_names/avoidance/layer_8 = "" 🔗
导航避免层8的可选名称。如果留空,该层将显示为“第8层”。
String layer_names/avoidance/layer_9 = "" 🔗
导航回避层9的可选名称。如果留空,该层将显示为“第9层”。
String layer_names/avoidance/layer_10 = "" 🔗
导航回避层10的可选名称。如果留空,该层将显示为“第10层”。
String layer_names/avoidance/layer_11 = "" 🔗
导航回避层11的可选名称。如果留空,该层将显示为“第11层”。
String layer_names/avoidance/layer_12 = "" 🔗
导航回避层12的可选名称。如果留空,该层将显示为“第12层”。
String layer_names/avoidance/layer_13 = "" 🔗
导航回避层13的可选名称。如果留空,该层将显示为“第13层”。
String layer_names/avoidance/layer_14 = "" 🔗
导航回避层14的可选名称。如果留空,该层将显示为“第14层”。
String layer_names/avoidance/layer_15 = "" 🔗
导航回避层15的可选名称。如果留空,该层将显示为“第15层”。
String layer_names/avoidance/layer_16 = "" 🔗
导航回避层16的可选名称。如果留空,该层将显示为“第16层”。
String layer_names/avoidance/layer_17 = "" 🔗
导航回避层17的可选名称。如果留空,该层将显示为“第17层”。
String layer_names/avoidance/layer_18 = "" 🔗
导航回避层18的可选名称。如果留空,该层将显示为“第18层”。
String layer_names/avoidance/layer_19 = "" 🔗
导航回避层19的可选名称。如果留空,该层将显示为“第19层”。
String layer_names/avoidance/layer_20 = "" 🔗
导航回避层20的可选名称。如果留空,该层将显示为“第20层”。
String layer_names/avoidance/layer_21 = "" 🔗
导航回避层21的可选名称。如果留空,该层将显示为“第21层”。
String layer_names/avoidance/layer_22 = "" 🔗
导航回避层22的可选名称。如果留空,该层将显示为“第22层”。
String layer_names/avoidance/layer_23 = "" 🔗
导航回避层23的可选名称。如果留空,该层将显示为“第23层”。
String layer_names/avoidance/layer_24 = "" 🔗
导航回避层24的可选名称。如果留空,该层将显示为“第24层”。
String layer_names/avoidance/layer_25 = "" 🔗
导航回避层25的可选名称。如果留空,该层将显示为“第25层”。
String layer_names/avoidance/layer_26 = "" 🔗
导航回避层26的可选名称。如果留空,该层将显示为“第26层”。
String layer_names/avoidance/layer_27 = "" 🔗
导航回避层27的可选名称。如果留空,该层将显示为“第27层”。
String layer_names/avoidance/layer_28 = "" 🔗
导航回避层28的可选名称。如果留空,该层将显示为“第28层”。
String layer_names/avoidance/layer_29 = "" 🔗
导航回避层29的可选名称。如果留空,该层将显示为“第29层”。
String layer_names/avoidance/layer_30 = "" 🔗
导航回避层30的可选名称。如果留空,该层将显示为“第30层”。
String layer_names/avoidance/layer_31 = "" 🔗
导航回避层31的可选名称。如果留空,该层将显示为“第31层”。
String layer_names/avoidance/layer_32 = "" 🔗
导航回避层32的可选名称。如果留空,该层将显示为“层32”。
int memory/limits/message_queue/max_size_mb = 32 🔗
i3D使用消息队列来延迟一些函数调用。如果空间不足(您将看到错误),您可以在此处增加大小。
3D导航地图的默认单元格高度。请参见NavigationServer3D.map_set_cell_height()。
3D导航地图的默认单元格大小。请参见NavigationServer3D.map_set_cell_size()。
3D导航地图的默认边缘连接边距。参见NavigationServer3D.map_set_edge_connection_margin()。
3D导航地图的默认链接连接半径。参见NavigationServer3D.map_set_link_connection_radius()。
3D导航地图的默认向上方向。参见NavigationServer3D.map_set_up()。
3D导航地图的默认合并光栅化单元格比例。参见NavigationServer3D.map_set_merge_rasterizer_cell_scale()。
如果启用3D导航区域,将使用边缘连接与导航地图边缘连接边距附近的其他导航区域连接。此设置仅影响World3D默认导航地图。
如果启用和避免计算使用多个线程,则线程以高优先级运行。
如果启用,避免计算将使用多个线程。
如果启用并且异步导航网格烘焙使用多个线程,则线程以高优先级运行。
如果启用异步导航网格烘焙使用多个线程。
如果启用,并且烘烤可能会导致发动机崩溃,烘烤将被中断并引发带有解释的错误消息。
可以在同一寻路图上同时运行寻路查询的最大线程数,例如同一导航图。由于需要为每个线程准备额外的数据副本,额外的线程会增加内存消耗和同步时间。-1的值表示无限制,并使用最大可用OS处理器计数。当操作系统不支持线程时,默认为1。
如果启用,导航地图同步将使用在后台线程上运行的异步进程。这避免了主线程的停顿,但会为任何导航地图更改增加额外的延迟。
int network/limits/debugger/max_chars_per_second = 32768 🔗
允许作为调试器输出发送的最大字符数。超过此值,内容将被删除。这有助于不停止调试器连接。
int network/limits/debugger/max_errors_per_second = 400 🔗
允许从调试器发送的最大错误数。超过此值,内容将被删除。这有助于不停止调试器连接。
int network/limits/debugger/max_queued_messages = 2048 🔗
调试器队列中的最大消息数。超过此值,内容将被删除。这有助于限制调试器内存使用。
int network/limits/debugger/max_warnings_per_second = 400 🔗
允许从调试器发送的最大警告数。超过此值,内容将被删除。这有助于不停止调试器连接。
int network/limits/packet_peer_stream/max_buffer_po2 = 16 🔗
用于反序列化i3D数据的数据包对等流的默认大小(以字节为单位,指定为2的幂)。默认值16等于65,536字节。超过此大小,数据将被丢弃。
int network/limits/tcp/connect_timeout_seconds = 30 🔗
使用TCP的连接尝试超时(以秒为单位)。
int network/limits/webrtc/max_channel_in_buffer_kb = 64 🔗
WebRTCDataChannel输入缓冲区的最大大小(以kiB为单位)。
String network/tls/certificate_bundle_override = "" 🔗
用于TLS连接的CA证书包。如果设置为非空值,这将覆盖i3D的默认Mozilla证书包。如果留空,将使用默认证书包。
如果有疑问,请将此设置留空。
bool network/tls/enable_tls_v1.3 = true 🔗
如果true,则启用TLSv1.3协商。
注意:仅在使用Mbed TLS 3.0或更高版本时受支持(Linux分发包可以针对较旧的系统Mbed TLS包进行编译),否则支持的最大TLS版本始终为TLSv1.2。
float physics/2d/default_angular_damp = 1.0 🔗
2D中默认的旋转运动阻尼。阻尼用于随着时间的推移逐渐减慢物理物体的速度。当组合它们自己的阻尼值并且不存在区域阻尼值时,刚体会回落到这个值。
建议的值在0到30的范围内。在值0处,对象将以相同的速度继续移动。较大的值将更快地停止对象。等于或大于物理滴答率的值(physics/common/physics_ticks_per_second)将在一次迭代中使对象停止。
注:i3D阻尼计算是速度相关的,这意味着移动得更快的物体需要更长的时间才能静止。它们不模拟惯性、摩擦力或空气阻力。因此,较重或较大的物体将以与较轻或较小的物体相同的比例失去速度。
在每个物理刻度期间,i3D将RigidBodies的线速度乘以1.0-combined_damp/physics_ticks_per_second。默认情况下,物体结合阻尼因子:combined_damp是物体的阻尼值与该值或物体所在区域的值之和。参见DampMode。
警告:i3D的阻尼计算取决于模拟滴答率。更改physics/common/physics_ticks_per_second可能会显着改变模拟的结果和感觉。对于大于0的整个阻尼值范围都是如此。要恢复类似的感觉,您还需要更改阻尼值。这需要的更改不是成比例的,并且因情况而异。
float physics/2d/default_gravity = 980.0 🔗
2D 中默认的重力强度(单位为像素每秒平方)。
**注意:** 此属性仅在项目启动时读取。要在运行时更改默认重力,请使用以下代码示例:
# Set the default gravity strength to 980.
PhysicsServer2D.area_set_param(get_viewport().find_world_2d().space, PhysicsServer2D.AREA_PARAM_GRAVITY, 980)
// Set the default gravity strength to 980.
PhysicsServer2D.AreaSetParam(GetViewport().FindWorld2D().Space, PhysicsServer2D.AreaParameter.Gravity, 980);
Vector2 physics/2d/default_gravity_vector = Vector2(0, 1) 🔗
2D 中的默认重力方向。
注意: 此属性仅在项目启动时读取。要在运行时更改默认重力向量,请使用以下代码示例:
# Set the default gravity direction to `Vector2(0, 1)`.
PhysicsServer2D.area_set_param(get_viewport().find_world_2d().space, PhysicsServer2D.AREA_PARAM_GRAVITY_VECTOR, Vector2.DOWN)
// Set the default gravity direction to `Vector2(0, 1)`.
PhysicsServer2D.AreaSetParam(GetViewport().FindWorld2D().Space, PhysicsServer2D.AreaParameter.GravityVector, Vector2.Down)
float physics/2d/default_linear_damp = 0.1 🔗
2D中默认的线性运动阻尼。阻尼用于随着时间的推移逐渐减慢物理物体的速度。当组合它们自己的阻尼值并且不存在区域阻尼值时,刚体会回落到这个值。
建议的值在0到30的范围内。在值0处,对象将以相同的速度继续移动。较大的值将更快地停止对象。等于或大于物理滴答率的值(physics/common/physics_ticks_per_second)将在一次迭代中使对象停止。
注:i3D阻尼计算是速度相关的,这意味着移动得更快的物体需要更长的时间才能静止。它们不模拟惯性、摩擦力或空气阻力。因此,较重或较大的物体将以与较轻或较小的物体相同的比例失去速度。
在每个物理刻度期间,i3D将RigidBodies的线速度乘以1.0-combined_damp/physics_ticks_per_second,其中combined_damp是身体的线性阻尼和这个值的总和,或者身体所在的区域值,假设身体默认组合阻尼值。参见DampMode。
警告:i3D的阻尼计算取决于模拟滴答率。更改physics/common/physics_ticks_per_second可能会显着改变模拟的结果和感觉。对于大于0的整个阻尼值范围都是如此。要恢复类似的感觉,您还需要更改阻尼值。这需要的更改不是成比例的,并且因情况而异。
String physics/2d/physics_engine = "DEFAULT" 🔗
设置用于2D物理的物理引擎。
DEFAULT目前等效于i3D物理2D,但可能会在未来的版本中更改。如果要确保您的项目保持在同一引擎上,请选择显式实现。
i3D物理2D是i3D的内部2D物理引擎。
Dummy是一个2D物理服务器,它什么都不做,只返回虚拟值,有效地禁用了所有2D物理功能。
第三方扩展和模块可以添加其他物理引擎以使用此设置进行选择。
bool physics/2d/run_on_separate_thread = false 🔗
如果true,则2D物理服务器在单独的线程上运行,从而更好地利用多核CPU。如果false,则2D物理服务器在主线程上运行。在单独的线程上运行物理服务器可以提高性能,但将API访问限制为仅物理进程。
float physics/2d/sleep_threshold_angular = 0.139626 🔗
阈值角速度,在该阈值下,二维物理体将被认为是不活动的。参见PhysicsServer2D.SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD。
float physics/2d/sleep_threshold_linear = 2.0 🔗
阈值线速度,在这种情况下,二维物理体将被认为是不活动的。参见PhysicsServer2D.SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD。
float physics/2d/solver/contact_max_allowed_penetration = 0.3 🔗
一个形状在被认为是碰撞之前可以穿透另一个形状的最大距离。参见PhysicsServer2D.SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION。
float physics/2d/solver/contact_max_separation = 1.5 🔗
一个形状与另一个形状的最大距离,在它们被认为是分离的并且接触被丢弃之前。参见PhysicsServer2D.SPACE_PARAM_CONTACT_MAX_SEPARATION。
float physics/2d/solver/contact_recycle_radius = 1.0 🔗
在必须重新计算碰撞状态之前,一对物体必须移动的最大距离。参见PhysicsServer2D.SPACE_PARAM_CONTACT_RECYCLE_RADIUS。
float physics/2d/solver/default_constraint_bias = 0.2 🔗
所有物理约束的默认求解器偏差。定义有多少主体对强制约束做出反应。参见PhysicsServer2D.SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS。
单个约束可以具有特定的偏置值(参见Joint2D.bias)。
float physics/2d/solver/default_contact_bias = 0.8 🔗
所有物理触点的默认求解器偏差。定义有多少物体对强制触点分离做出反应。参见PhysicsServer2D.SPACE_PARAM_CONTACT_DEFAULT_BIAS。
单个形状可以具有特定的偏置值(参见Shape2D.custom_solver_bias)。
int physics/2d/solver/solver_iterations = 16 🔗
所有接触和约束的求解器迭代次数。迭代次数越多,碰撞就越准确。然而,更多的迭代需要更多的CPU能力,这会降低性能。参见PhysicsServer2D.SPACE_PARAM_SOLVER_ITERATIONS。
float physics/2d/time_before_sleep = 0.5 🔗
处于静止状态的时间(以秒为单位),在此之前,2D物理体将进入睡眠状态。参见PhysicsServer2D.SPACE_PARAM_BODY_TIME_TO_SLEEP。
float physics/3d/default_angular_damp = 0.1 🔗
3D中默认的旋转运动阻尼。阻尼用于随着时间的推移逐渐减慢物理物体的速度。当组合它们自己的阻尼值并且不存在区域阻尼值时,RigidBodies会回落到这个值。
建议的值在0到30的范围内。在值0处,对象将以相同的速度继续移动。较大的值将更快地停止对象。等于或大于物理滴答率的值(physics/common/physics_ticks_per_second)将在一次迭代中使对象停止。
注:i3D阻尼计算是速度相关的,这意味着移动得更快的物体需要更长的时间才能静止。它们不模拟惯性、摩擦力或空气阻力。因此,较重或较大的物体将以与较轻或较小的物体相同的比例失去速度。
在每个物理刻度期间,i3D将RigidBodies的角速度乘以1.0-combined_damp/physics_ticks_per_second。默认情况下,物体结合阻尼因子:combined_damp是物体的阻尼值与该值或物体所在区域的值之和。参见DampMode。
警告:i3D的阻尼计算取决于模拟滴答率。更改physics/common/physics_ticks_per_second可能会显着改变模拟的结果和感觉。对于大于0的整个阻尼值范围都是如此。要恢复类似的感觉,您还需要更改阻尼值。这需要的更改不是成比例的,并且因情况而异。
float physics/3d/default_gravity = 9.8 🔗
3D 中默认的重力强度(单位为米每二次方秒)。注意:此属性仅在项目启动时读取。要在运行时更改默认重力,请使用以下代码示例
# 将默认的重力强度设为 9.8 。
PhysicsServer3D.area_set_param(get_viewport().find_world_3d().space, PhysicsServer3D.AREA_PARAM_GRAVITY, 9.8)
// 将默认的重力强度设为 9.8 。
PhysicsServer3D.AreaSetParam(GetViewport().FindWorld3D().Space, PhysicsServer3D.AreaParameter.Gravity, 9.8);
Vector3 physics/3d/default_gravity_vector = Vector3(0, -1, 0) 🔗
3D 中的默认重力方向。
注意: 此属性仅在项目启动时读取。要在运行时更改默认重力向量,请使用以下代码示例:
# 将默认的重力方向设置为 `Vector3(0, -1, 0)`.
PhysicsServer3D.area_set_param(get_viewport().find_world_3d().space, PhysicsServer3D.AREA_PARAM_GRAVITY_VECTOR, Vector3.DOWN)
// 将默认的重力方向设置为 `Vector3(0, -1, 0)`.
PhysicsServer3D.AreaSetParam(GetViewport().FindWorld3D().Space, PhysicsServer3D.AreaParameter.GravityVector, Vector3.Down)
float physics/3d/default_linear_damp = 0.1 🔗
3D中默认的线性运动阻尼。阻尼用于随着时间的推移逐渐减慢物理物体的速度。当组合它们自己的阻尼值并且不存在区域阻尼值时,刚体会回落到这个值。
建议的值在0到30的范围内。在值0处,对象将以相同的速度继续移动。较大的值将更快地停止对象。等于或大于物理滴答率的值(physics/common/physics_ticks_per_second)将在一次迭代中使对象停止。
注:i3D阻尼计算是速度相关的,这意味着移动得更快的物体需要更长的时间才能静止。它们不模拟惯性、摩擦力或空气阻力。因此,较重或较大的物体将以与较轻或较小的物体相同的比例失去速度。
在每个物理刻度期间,i3D将RigidBodies的线速度乘以1.0-combined_damp/physics_ticks_per_second。默认情况下,物体结合阻尼因子:combined_damp是物体的阻尼值与该值或物体所在区域的值之和。参见DampMode。
警告:i3D的阻尼计算取决于模拟滴答率。更改physics/common/physics_ticks_per_second可能会显着改变模拟的结果和感觉。对于大于0的整个阻尼值范围都是如此。要恢复类似的感觉,您还需要更改阻尼值。这需要的更改不是成比例的,并且因情况而异。
String physics/3d/physics_engine = "DEFAULT" 🔗
设置用于3D物理的物理引擎。
DEFAULT目前等效于i3DPhysics3D,但可能会在未来的版本中更改。如果要确保您的项目保持在同一引擎上,请选择显式实现。
i3DPhysics3D是i3D的内部3D物理引擎。
Jolt Physics是一种替代的物理引擎,通常比i3DPhysics3D更快、更可靠。由于它是最近实现的,它目前被认为是实验性的,它的行为可能会在未来的版本中发生变化。
Dummy是一个3D物理服务器,它什么都不做,只返回虚拟值,有效地禁用所有3D物理功能。
第三方扩展和模块可以添加其他物理引擎以使用此设置进行选择。
bool physics/3d/run_on_separate_thread = false 🔗
如果true,则3D物理服务器在单独的线程上运行,从而更好地利用多核CPU。如果false,则3D物理服务器在主线程上运行。在单独的线程上运行物理服务器可以提高性能,但将API访问限制为仅物理进程。
注意:当physics/3d/physics_engine设置为Jolt Physics时,启用此设置将阻止3D物理服务器在报告错误和警告时能够提供任何上下文,并且将始终将节点称为<未知>。
float physics/3d/sleep_threshold_angular = 0.139626 🔗
阈值角速度,在这种情况下,3D物理体将被认为是不活动的。参见PhysicsServer3D.SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD。
float physics/3d/sleep_threshold_linear = 0.1 🔗
阈值线速度,在这种情况下,3D物理体将被认为是不活动的。参见PhysicsServer3D.SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD。
float physics/3d/solver/contact_max_allowed_penetration = 0.01 🔗
一个形状在被认为是碰撞之前可以穿透另一个形状的最大距离。参见PhysicsServer3D.SPACE_PARAM_CONTACT_MAX_ALLOWED_PENETRATION。
float physics/3d/solver/contact_max_separation = 0.05 🔗
一个形状与另一个形状的最大距离,在它们被认为是分离的并且触点被丢弃之前。参见PhysicsServer3D.SPACE_PARAM_CONTACT_MAX_SEPARATION。
float physics/3d/solver/contact_recycle_radius = 0.01 🔗
在必须重新计算碰撞状态之前,一对物体必须移动的最大距离。参见PhysicsServer3D.SPACE_PARAM_CONTACT_RECYCLE_RADIUS。
float physics/3d/solver/default_contact_bias = 0.8 🔗
所有物理触点的默认求解器偏差。定义有多少物体对强制触点分离做出反应。参见PhysicsServer3D.SPACE_PARAM_CONTACT_DEFAULT_BIAS。
单个形状可以具有特定的偏置值(参见Shape3D.custom_solver_bias)。
int physics/3d/solver/solver_iterations = 16 🔗
所有接触和约束的求解器迭代次数。迭代次数越多,碰撞就越准确。然而,更多的迭代需要更多的CPU能力,这会降低性能。参见PhysicsServer3D.SPACE_PARAM_SOLVER_ITERATIONS。
float physics/3d/time_before_sleep = 0.5 🔗
不活动的时间(以秒为单位),在此之前,3D物理体将进入休眠状态。参见PhysicsServer3D.SPACE_PARAM_BODY_TIME_TO_SLEEP。
bool physics/common/enable_object_picking = true 🔗
在根视口上启用Viewport.physics_object_picking。
int physics/common/max_physics_steps_per_frame = 8 🔗
控制每个渲染帧可以模拟的最大物理步数。调整默认值以避免昂贵的物理模拟无限期触发更昂贵的模拟的“死亡螺旋”情况。但是,如果渲染FPS小于physics/common/physics_ticks_per_second的1/max_physics_steps_per_frame,应用将显得变慢。即使在物理计算中始终使用delta,也会发生这种情况。为了避免这种情况,如果您将physics/common/max_physics_steps_per_frame增加到明显高于其默认值的水平,请增加physics/common/physics_ticks_per_second。
注意:此属性仅在项目启动时读取。要更改运行时每帧模拟物理步数的最大值,请设置Engine.max_physics_steps_per_frame。
bool physics/common/physics_interpolation = false 🔗
如果true,渲染器将在最后两个变换之间插入物理对象的变换,以便即使物理帧与渲染帧不一致,也能看到平滑的运动。另见Item.physics_interpolation_mode和Item.reset_physics_interpolation()。
注意:如果true,物理抖动修复应通过将physics/common/physics_jitter_fix设置为0.0来禁用。
注意:此属性仅在项目启动时读取。要在运行时切换物理插值,请设置SceneTree.physics_interpolation。
float physics/common/physics_jitter_fix = 0.5 🔗
控制与实时同步的物理滴答数。对于0或更少,滴答数是同步的。建议将此类值用于网络应用,因为时钟同步很重要。较高的值会导致应用内时钟和真实时钟的偏差较大,但可以消除帧抖动。默认值0.5对大多数人来说应该足够好了;高于2的值可能会导致应用对丢帧做出明显延迟的反应,因此不推荐使用。
注意:当physics/common/physics_interpolation启用时,抖动修复会在运行时自动禁用。
注意:使用自定义物理插值解决方案时,应通过将physics/common/physics_jitter_fix设置为0.0来禁用物理抖动修复。
注意:此属性仅在项目启动时读取。要在运行时更改物理抖动修复,请设置Engine.physics_jitter_fix。
int physics/common/physics_ticks_per_second = 60 🔗
每秒的固定迭代次数。这控制物理模拟和Item.FixedUpdate()方法的运行频率。另请参见application/run/max_fps。
注意:此属性仅在项目启动时读取。要在运行时更改物理FPS,请设置Engine.physics_ticks_per_second。
注意:每个渲染帧最多只能模拟physics/common/max_physics_steps_per_frame物理刻度。如果每个渲染帧必须模拟更多的物理刻度才能跟上渲染,项目将显得变慢(即使在物理计算中一致使用delta)。因此,如果增加physics/common/max_physics_steps_per_frame明显高于其默认值,建议也增加physics/common/physics_ticks_per_second。
float physics/jolt_physics_3d/collisions/active_edge_threshold = 0.872665 🔗
ConcavePolygonShape3D或HeightMapShape3D中两个相邻三角形之间的最大角度,以弧度为单位,这些三角形之间的边缘被认为是无效的。
与非活动边缘的碰撞将覆盖其法线,而不是三角形的表面法线。这有助于缓解鬼碰撞。
注意:将其设置得太高可能会导致对象无法正确地去除。
注意:这适用于所有形状查询,以及模拟中的物理体。
注意:这不适用于启用Jolt增强的内部边缘去除,它取代了它。
注意:此设置在应用程序的生命周期内只会读取一次。
float physics/jolt_physics_3d/collisions/collision_margin_fraction = 0.08 🔗
用于某些凸形碰撞形状(如BoxShape3D、CylinderShape3D和ConvexPolygonShape3D)的碰撞余量,作为形状最短轴的一小部分,以Shape3D.margin为上限。这主要用于加速凸形的冲突检测。
注意:Jolt中的碰撞边距不会为形状添加任何额外的大小。相反,形状首先缩小边距,然后再扩大相同的量,从而形成圆角的形状。
注意:将此值设置得太接近0.0也可能对凸形冲突检测的准确性产生负面影响。
注意:此设置在应用程序的生命周期内只会读取一次。
int physics/jolt_physics_3d/joints/world_node = 0 🔗
当两个节点中的一个被省略时,由关节绑定的两个节点中的哪一个应该代表世界,如JointBase.node_a或JointBase.node_b。这可以被认为是省略的节点在关节的位置是StaticBulk。当JointBase.node_a代表世界时,关节限制更容易表达。
注:在i3D物理中,只有JointBase.node_b可以代表世界。
float physics/jolt_physics_3d/limits/max_angular_velocity = 47.1239 🔗
RigidBulk可以达到的最大角速度,以弧度每秒为单位。
这主要用于故障保险,以防止模拟爆炸,因为快速移动的物体与复杂的物理结构碰撞会导致它们失控。快速移动的物体也会对冲突检测系统造成很大影响,这会大大减慢模拟速度。
int physics/jolt_physics_3d/limits/max_bodies = 10240 🔗
同时支持的最大数量的PhysicsBulkBase,清醒或睡眠。超过此限制时,将报告错误,超过该点的任何行为都是未定义的行为。
注意:此限制也适用于编辑器。
int physics/jolt_physics_3d/limits/max_body_pairs = 65536 🔗
允许处理的最大身体对数。超过此限制时,将报告警告,当身体相互通过时,碰撞将被随机忽略。
int physics/jolt_physics_3d/limits/max_contact_constraints = 20480 🔗
允许处理的接触约束的最大数量。超过此限制时,将报告警告,当物体相互通过时,碰撞将被随机忽略。
float physics/jolt_physics_3d/limits/max_linear_velocity = 500.0 🔗
RigidBulk可以达到的最大线速度,以米/秒为单位。
这主要用于故障保险,以防止模拟爆炸,因为快速移动的物体与复杂的物理结构碰撞会导致它们失控。快速移动的物体也会对冲突检测系统造成很大影响,这会大大减慢模拟速度。
int physics/jolt_physics_3d/limits/temporary_memory_buffer_size = 32 🔗
为MiB中Jolt中使用的堆栈分配器预先分配的内存量。此分配器在物理步骤中用于存储仅在其中需要的东西,例如哪些物体处于接触状态,它们如何形成岛屿以及解决接触所需的数据。
float physics/jolt_physics_3d/limits/world_boundary_shape_size = 2000.0 🔗
WorldBoundaryShape3D边界的大小,适用于所有三个维度。平面实际上是在这个尺寸的盒子内居中的,盒子之外的任何东西都不会与它碰撞。这是必要的,因为使用Jolt时WorldBoundaryShape3D不是无界的,以防止精度问题。
注意:将此值设置得太高会使冲突检测不太准确。
注:与WorldBoundaryShape3D有效边的碰撞将不一致。
float physics/jolt_physics_3d/motion_queries/recovery_amount = 0.4 🔗
在运动查询期间,每次迭代的总渗透率的分数。
注意:这会影响方法CharacterBulk.move_and_slide()、PhysicsBulkBase.move_and_collide()、PhysicsBulkBase.test_move()和PhysicsServer3D.body_test_motion()。
注意:此设置在应用程序的生命周期内只会读取一次。
int physics/jolt_physics_3d/motion_queries/recovery_iterations = 4 🔗
在运动查询期间去测试时要运行的迭代次数。
注意:这会影响方法CharacterBulk.move_and_slide()、PhysicsBulkBase.move_and_collide()、PhysicsBulkBase.test_move()和PhysicsServer3D.body_test_motion()。
注意:此设置在应用程序的生命周期内只会读取一次。
bool physics/jolt_physics_3d/motion_queries/use_enhanced_internal_edge_removal = true 🔗
如果true,则在运动查询期间启用Jolt增强的内部边缘去除。这有助于缓解鬼碰撞,但仅限于单个主体内的边缘,这意味着单独主体之间的边缘仍然会导致鬼碰撞。
注意:这会影响方法CharacterBulk.move_and_slide()、PhysicsBulkBase.move_and_collide()、PhysicsBulkBase.test_move()和PhysicsServer3D.body_test_motion()。
注意:此设置在应用程序的生命周期内只会读取一次。
bool physics/jolt_physics_3d/queries/enable_ray_cast_face_index = false 🔗
如果true,则在PhysicsDirectSpaceState3D.intersect_ray()的结果中填充face_index字段,也可通过RayCast.get_collision_face_index()访问。如果false,则face_index字段将保留其默认值-1。
注意:启用此设置将使Jolt对ConcavePolygonShape3D的内存使用量增加约25%。
注意:此设置在应用程序的生命周期内只会读取一次。
bool physics/jolt_physics_3d/queries/use_enhanced_internal_edge_removal = false 🔗
如果true,则在形状查询期间启用Jolt增强的内部边缘去除。当使用形状查询进行字符移动等操作时,这有助于缓解鬼冲突,但仅限于单个主体内的边缘,这意味着单独主体之间的边缘仍然会导致鬼冲突。
注:这影响方法PhysicsDirectSpaceState3D.cast_motion(),PhysicsDirectSpaceState3D.collide_shape(),PhysicsDirectSpaceState3D.get_rest_info()和PhysicsDirectSpaceState3D.intersect_shape()。
注意:启用此设置可能会导致某些形状完全从结果中剔除,但您将获得每个主体至少一个交集。
注意:此设置在应用程序的生命周期内只会读取一次。
bool physics/jolt_physics_3d/simulation/allow_sleep = true 🔗
如果true,RigidBulk节点的速度低于physics/jolt_physics_3d/simulation/sleep_velocity_threshold中定义的阈值,则允许RigidBulk节点在physics/jolt_physics_3d/simulation/sleep_time_threshold中设置的持续时间内进入睡眠状态。这可以在有非移动RigidBulk节点时提高物理模拟性能,代价是某些节点在某些场景中可能无法唤醒。考虑暂时禁用此功能以排除RigidBulk节点在应该移动时未移动的故障。
bool physics/jolt_physics_3d/simulation/areas_detect_static_bodies = false 🔗
如果true,AreaTrigger节点能够检测到与StaticBulk节点的重叠。
注意:如果您允许许多/大型AreaTrigger与复杂的静态几何重叠,例如ConcavePolygonShape3D或HeightMapShape3D,启用此设置可能会带来沉重的CPU和内存成本。强烈建议您设置冲突层和掩码,以便只有少数小型AreaTrigger节点可以检测到StaticBulk节点。
注意:这也适用于与RigidBulk.FREEZE_MODE_STATIC冻结的RigidBulk重叠。
注意:这不需要检测与AnimatableBulk的重叠,因为它是一个运动学体,尽管继承自StaticBulk。
float physics/jolt_physics_3d/simulation/baumgarte_stabilization_factor = 0.2 🔗
在物理步骤中要修复的RigidBulk的位置误差有多少,其中0.0为零,1.0为全额。这会影响身体脱落的速度。
注意:将此值设置得太高会使RigidBulk节点不稳定。
float physics/jolt_physics_3d/simulation/body_pair_contact_cache_angle_threshold = 0.0349066 🔗
一个物体对可以移动并且仍然重复使用碰撞的最大相对角度来自上一个物理步骤,以弧度为单位。
float physics/jolt_physics_3d/simulation/body_pair_contact_cache_distance_threshold = 0.001 🔗
一个物体对可以移动并且仍然重复使用碰撞的最大相对距离是前一个物理步骤的结果,以米为单位。
bool physics/jolt_physics_3d/simulation/body_pair_contact_cache_enabled = true 🔗
如果true,则启用主体对联系人缓存,这消除了在两个主体之间的相对方向没有太大变化时进行潜在的昂贵冲突检测的需要。
float physics/jolt_physics_3d/simulation/bounce_velocity_threshold = 1.0 🔗
碰撞前所需的最小速度可以是有弹性的,以米每秒为单位。
注意:此设置在应用程序的生命周期内只会读取一次。
float physics/jolt_physics_3d/simulation/continuous_cd_max_penetration = 0.25 🔗
使用连续冲突检测时可能穿透另一个物体的物体内半径分数。
float physics/jolt_physics_3d/simulation/continuous_cd_movement_threshold = 0.75 🔗
物体每一步必须移动的物体内半径的分数,以利用连续冲突检测。
bool physics/jolt_physics_3d/simulation/generate_all_kinematic_contacts = false 🔗
如果true,则使用RigidBulk.FREEZE_MODE_KINEMATIC冻结的RigidBulk能够与其他运动学和静态物体碰撞,从而为它们生成接触。
注意:如果您允许具有非零RigidBulk.max_contacts_reported的许多/大型冻结运动学体与复杂的静态几何重叠,例如ConcavePolygonShape3D或HeightMapShape3D,则此设置可能会消耗大量CPU和内存。
float physics/jolt_physics_3d/simulation/penetration_slop = 0.02 🔗
允许多少物体相互穿透,以米为单位。
int physics/jolt_physics_3d/simulation/position_steps = 2 🔗
求解器位置迭代的次数。迭代次数越多,模拟就越准确,代价是CPU性能。
float physics/jolt_physics_3d/simulation/sleep_time_threshold = 0.5 🔗
RigidBulk在睡觉前将花费低于睡眠速度阈值的时间(以秒为单位)。
float physics/jolt_physics_3d/simulation/sleep_velocity_threshold = 0.03 🔗
RigidBulk边界框上特定点的线速度,低于该速度可以使其进入睡眠状态,以米/秒为单位。这些点有助于捕捉RigidBulk的线性和角度运动。
float physics/jolt_physics_3d/simulation/soft_body_point_radius = 0.01 🔗
SoftBulk的点有多大,以米为单位。更高的值可以防止布料与其他表面完全齐平等行为,并导致Z战。
float physics/jolt_physics_3d/simulation/speculative_contact_distance = 0.02 🔗
物理体周围的半径,其中将检测到推测性接触点,以米为单位。这主要用于在模拟期间防止RigidBulk节点的隧道/穿透。
注意:将此设置得太高可能会导致幽灵碰撞,因为推测性接触是基于冲突检测步骤期间的最近点,到两个物体碰撞时,这些点可能不是实际的最近点。
bool physics/jolt_physics_3d/simulation/use_enhanced_internal_edge_removal = true 🔗
如果true,则启用Jolt对RigidBulk的增强内部边缘去除。例如,当RigidBulk与两个完美连接的BoxShape3D的边缘碰撞时,这有助于缓解鬼碰撞。移除仅适用于单个物体的内部边缘,这意味着单独物体之间的边缘仍然会导致鬼碰撞。
int physics/jolt_physics_3d/simulation/velocity_steps = 10 🔗
求解器速度迭代的次数。迭代次数越多,模拟就越准确,代价是CPU性能。
注意:这需要至少是2才能使摩擦起作用,因为摩擦是使用上一次迭代的非穿透脉冲施加的。
int rendering/2d/batching/item_buffer_size = 16384 🔗
可以批处理到单个绘图调用中的画布项命令的最大数量。
int rendering/2d/batching/uniform_set_cache_size = 4096 🔗
批处理绘制调用时,2D渲染器将缓存的最大统一集合数。
注意:每帧使用大量独特精灵纹理的项目可能会受益于增加此值。
int rendering/2d/sdf/oversize = 1 🔗
控制2D有符号距离字段应覆盖多少原始视口大小。此SDF可以在CanvasItem着色器中采样,并用于GPUParticles2D碰撞。较高的值允许位于视口之外的部分遮挡物仍被考虑到生成的有符号距离字段中,但以性能为代价。如果您注意到遮挡物离开视口时粒子穿过LightOccluder2D,请增加此设置。
指定的百分比在每个轴和两侧添加。例如,默认设置为120%,带符号的距离字段将覆盖每一侧(上、右、下、左)视口外的视口大小的20%。
注意:此属性仅在项目启动时读取。要在运行时更改2D SDF超大百分比,请改用RenderingServer.viewport_set_sdf_oversize_and_scale()。
int rendering/2d/sdf/scale = 1 🔗
用于2D符号距离字段的分辨率比例。随着摄像机的移动,更高的值会导致更精确、更稳定的符号距离字段,但会以性能为代价。默认值(50%)在每个轴上以视口大小分辨率的一半呈现,这意味着SDF是用视口像素数的25%生成的。
注意:此属性仅在项目启动时读取。要在运行时更改2D SDF分辨率比例,请改用RenderingServer.viewport_set_sdf_oversize_and_scale()。
int rendering/2d/shadow_atlas/size = 2048 🔗
以像素为单位的2D阴影图集的大小。更高的值会产生更精确的Light2D阴影,但会以性能和视频内存使用为代价。指定的值向上舍入到最接近的2次方。
注意:此属性仅在项目启动时读取。要在运行时更改2D阴影图集大小,请改用RenderingServer.canvas_set_shadow_texture_size()。
bool rendering/2d/snap/snap_2d_transforms_to_pixel = false 🔗
如果true,CanvasItem节点将在内部捕捉到全像素。对于低分辨率像素艺术应用很有用。它们的位置仍然可以是亚像素,但小数不会在位置四舍五入时生效。这可能会导致更清晰的外观,但代价是移动不太流畅,尤其是在启用Camera2D平滑时。
注意:此属性仅在项目启动时读取。要在运行时切换2D转换捕捉,请改用根目录Viewport上的RenderingServer.viewport_set_snap_2d_transforms_to_pixel()。
注意:Control节点默认被捕捉到最近的像素。这由gui/common/snap_controls_to_pixels控制。
注意:不建议将此设置与rendering/2d/snap/snap_2d_vertices_to_pixel一起使用,因为运动可能看起来更不流畅。宁愿只启用此设置。
bool rendering/2d/snap/snap_2d_vertices_to_pixel = false 🔗
如果true,CanvasItem节点的顶点将捕捉到全像素。对于低分辨率像素艺术应用很有用。只影响最终的顶点位置,不影响变换。这可能会导致更清晰的外观,但代价是移动不太流畅,尤其是在启用Camera2D平滑时。
注意:此属性仅在项目启动时读取。要在运行时切换2D顶点抓拍,请改用根目录Viewport上的RenderingServer.viewport_set_snap_2d_vertices_to_pixel()。
注意:Control节点默认被捕捉到最近的像素。这由gui/common/snap_controls_to_pixels控制。
注意:不建议将此设置与rendering/2d/snap/snap_2d_transforms_to_pixel一起使用,因为移动可能看起来更不流畅。宁愿只启用该设置。
int rendering/anti_aliasing/quality/msaa_2d = 0 🔗
设置用于2D/Canvas渲染的多样本抗锯齿(MSAA)样本数(2次方)。MSAA用于减少多边形边缘周围的混淆现象。较高的MSAA值会导致边缘更平滑,但在某些硬件上可能会明显变慢,尤其是集成图形,因为它们的内存带宽有限。这对着色器引起的混淆现象或纹理混淆现象没有影响。
注意:MSAA仅在Forward+和Mobile渲染方法中受支持,不支持兼容性。
注意:此属性仅在项目启动时读取。要在运行时设置2D MSAA样本的数量,请设置Viewport.msaa_2d或使用RenderingServer.viewport_set_msaa_2d()。
int rendering/anti_aliasing/quality/msaa_3d = 0 🔗
设置用于3D渲染的多样本抗锯齿(MSAA)样本数量(2次方)。MSAA用于减少多边形边缘周围的混淆现象。较高的MSAA值会导致边缘更平滑,但在某些硬件上可能会明显变慢,尤其是集成图形,因为它们的内存带宽有限。另请参阅rendering/scaling_3d/mode以了解超采样,它提供更高的质量,但成本要高得多。这对着色器引起的混淆现象或纹理混淆现象没有影响。
注意:此属性仅在项目启动时读取。要在运行时设置3D MSAA样本的数量,请设置Viewport.msaa_3d或使用RenderingServer.viewport_set_msaa_3d()。
int rendering/anti_aliasing/quality/screen_space_aa = 0 🔗
为默认屏幕Viewport设置屏幕空间抗锯齿模式。屏幕空间抗锯齿通过在后处理着色器中选择性地模糊边缘来工作。它不同于MSAA,后者在渲染对象时获取多个覆盖样本。屏幕空间AA方法通常比MSAA更快,并且会消除镜面混淆现象,但往往会使场景看起来模糊。模糊通过自动使用负mipmap LOD偏差来部分抵消(参见rendering/textures/default_filters/texture_mipmap_bias)。
对抗镜面混淆现象的另一种方法是启用rendering/anti_aliasing/screen_space_roughness_limiter/enabled。
注意:屏幕空间抗锯齿仅在Forward+和Mobile渲染方法中受支持,不支持兼容性。
注意:此属性仅在项目启动时读取。要在运行时设置屏幕空间抗锯齿模式,请改为在根Viewport上设置Viewport.screen_space_aa,或使用RenderingServer.viewport_set_screen_space_aa()。
bool rendering/anti_aliasing/quality/use_debanding = false 🔗
如果true,则使用快速后处理过滤器使条带在3D中显着不那么明显。2D渲染不受去条带影响,除非Environment.background_mode是Environment.BG_CANVAS。
在某些情况下,去条带可能会引入稍微明显的抖动模式。建议仅在实际需要时启用去条带,因为抖动模式会使无损压缩的屏幕截图更大。
注意:此属性仅在项目启动时读取。要在运行时设置解带,请改为在根Viewport上设置Viewport.use_debanding,或使用RenderingServer.viewport_set_use_debanding()。
bool rendering/anti_aliasing/quality/use_taa = false 🔗
为默认屏幕Viewport启用时间抗锯齿。TAA通过抖动摄像机并累积最后渲染帧的图像来工作,运动矢量渲染用于解释摄像机和物体的运动。启用TAA可以使图像更加模糊,这通过自动使用负mipmap LOD偏差来部分抵消(参见rendering/textures/default_filters/texture_mipmap_bias)。
注意:实现尚未完成。一些视觉实例,例如粒子和蒙皮网格,可能会显示运动中的重影伪影。
注意:TAA仅在Forward+渲染方法中受支持,不支持Mobile或Compatiity。
注意:此属性仅在项目启动时读取。要在运行时设置TAA,请改为在根Viewport上设置Viewport.use_taa,或使用RenderingServer.viewport_set_use_taa()。
float rendering/anti_aliasing/screen_space_roughness_limiter/amount = 0.25 🔗
注意:此属性仅在项目启动时读取。要在运行时控制屏幕空间粗糙度限制器,请调用RenderingServer.screen_space_roughness_limiter_set_active()。
bool rendering/anti_aliasing/screen_space_roughness_limiter/enabled = true 🔗
如果true,则启用空间过滤器以限制具有高频细节的区域的粗糙度。这可以在一定程度上帮助减少镜面混淆现象,尽管不如启用rendering/anti_aliasing/quality/use_taa。此过滤器的性能成本很小,因此如果它对您的场景没有明显好处,请考虑禁用它。
注意:屏幕空间粗糙度限制器仅在Forward+和Mobile渲染方法中受支持,不支持兼容性。
注意:此属性仅在项目启动时读取。要在运行时控制屏幕空间粗糙度限制器,请调用RenderingServer.screen_space_roughness_limiter_set_active()。
float rendering/anti_aliasing/screen_space_roughness_limiter/limit = 0.18 🔗
注意:此属性仅在项目启动时读取。要在运行时控制屏幕空间粗糙度限制器,请调用RenderingServer.screen_space_roughness_limiter_set_active()。
int rendering/camera/depth_of_field/depth_of_field_bokeh_quality = 1 🔗
设置景深效果的质量。更高质量拍摄更多样本,速度较慢但看起来更流畅。
int rendering/camera/depth_of_field/depth_of_field_bokeh_shape = 1 🔗
设置景深形状。可以是框、六边形或圆。框是最快的。圆是最逼真的,但也是计算成本最高的。
bool rendering/camera/depth_of_field/depth_of_field_use_jitter = false 🔗
如果true,则抖动DOF样本以使效果稍微模糊并隐藏从低采样率创建的线条。当与少量样本一起使用时,这可能会导致略微颗粒状的外观。
String rendering/driver/depth_prepass/disable_for_vendors = "PowerVR,Mali,Adreno,Apple" 🔗
对某些供应商有条件地禁用rendering/driver/depth_prepass/enable。默认情况下,禁用移动设备的深度前置,因为移动设备因其独特的架构而无法从深度前置中受益。
bool rendering/driver/depth_prepass/enable = true 🔗
如果true,则在渲染3D材质之前执行先前的深度传递。这会在透支较高的场景中显着提高性能,当使用复杂的材质和照明时。但是,在遮挡表面很少的场景中,深度预传递可能会降低性能。如果您的应用是从一个固定的角度观看的,这样可以轻松避免透支(例如自上而下或侧面滚动的视角),请考虑禁用深度预传递以提高性能。可以在运行时更改此设置,以根据当前正在查看的场景优化性能。
注意:仅在使用前向+或兼容性渲染方法时才支持深度前置。使用移动渲染方法时,不执行深度前置。
int rendering/driver/threads/thread_model = 1 🔗
实验性: 该设置有几个已知的错误,这可能会导致崩溃,尤其是在使用粒子或调整窗口大小时。现阶段不建议在生产环境中使用。
用于渲染的线程模型。在线程上渲染可能会提高性能,但同步到主线程可能会导致更多抖动。
Color rendering/environment/defaults/default_clear_color = Color(0.3, 0.3, 0.3, 1) 🔗
默认背景透明颜色。每个Viewport使用其Environment可覆盖。请特别参阅Environment.background_mode和Environment.background_color。要以编程方式更改此默认颜色,请使用RenderingServer.set_default_clear_color()。
String rendering/environment/defaults/default_environment = "" 🔗
Environment当场景没有指定自己的环境时,将用作后备环境。无论您是否设置了环境,默认环境都会在场景加载时加载。如果您不依赖后备环境,则不需要设置此属性。
int rendering/environment/glow/upscale_mode = 1 🔗
设置辉光效果在复制到屏幕上之前如何升级。线性更快,但看起来块状。双立方速度较慢,但看起来很光滑。
int rendering/environment/glow/upscale_mode.mobile = 0 🔗
由于性能问题或驱动程序支持,移动设备上rendering/environment/glow/upscale_mode的低端覆盖。
int rendering/environment/screen_space_reflection/roughness_quality = 1 🔗
设置粗糙屏幕空间反射的质量。关闭将使所有屏幕空间反射清晰,而较高的值使粗糙反射看起来更好。
float rendering/environment/ssao/adaptive_target = 0.5 🔗
当rendering/environment/ssao/quality设置为Ultra时使用的质量目标。0.0的值提供类似于中的质量和速度,而1.0的值提供比任何其他设置更高的质量,但以性能为代价。
int rendering/environment/ssao/blur_passes = 2 🔗
计算屏幕空间环境遮挡时使用的模糊通道数。较高的数字将导致更流畅的外观,但计算速度较慢,高频细节较少。
float rendering/environment/ssao/fadeout_from = 50.0 🔗
屏幕空间环境遮挡效果开始淡出的距离。从远处使用此隐藏环境遮挡。
float rendering/environment/ssao/fadeout_to = 300.0 🔗
屏幕空间环境遮挡完全淡出的距离。从远处使用此隐藏环境遮挡。
bool rendering/environment/ssao/half_size = true 🔗
如果true,屏幕空间环境遮挡将以一半大小呈现,然后在添加到场景之前进行放大。这明显更快,但可能会错过小细节。如果false,屏幕空间环境遮挡将以全尺寸呈现。
int rendering/environment/ssao/quality = 2 🔗
设置屏幕空间环境遮挡效果的质量。更高的值获取更多样本,因此会以性能为代价带来更好的质量。设置为Ultra将使用rendering/environment/ssao/adaptive_target设置。
float rendering/environment/ssil/adaptive_target = 0.5 🔗
当rendering/environment/ssil/quality设置为Ultra时使用的质量目标。0.0的值提供类似于中的质量和速度,而1.0的值提供比任何其他设置更高的质量,但以性能为代价。当使用自适应目标时,性能成本随场景的复杂性而变化。
int rendering/environment/ssil/blur_passes = 4 🔗
计算屏幕空间间接照明时使用的模糊通道数。较高的数字将导致更流畅的外观,但计算速度较慢,高频细节较少。
float rendering/environment/ssil/fadeout_from = 50.0 🔗
屏幕空间间接光照效果开始淡出的距离。使用它来隐藏来自远处的屏幕空间间接光照。
float rendering/environment/ssil/fadeout_to = 300.0 🔗
屏幕空间间接照明完全淡出的距离。使用它来隐藏来自远处的屏幕空间间接照明。
bool rendering/environment/ssil/half_size = true 🔗
如果true,屏幕空间间接照明将以一半大小呈现,然后在添加到场景之前进行放大。这明显更快,但可能会错过小细节,并可能导致某些对象在边缘发光。
int rendering/environment/ssil/quality = 2 🔗
设置屏幕空间间接光照效果的质量。更高的值需要更多的样本,因此会以性能为代价带来更好的质量。设置为Ultra将使用rendering/environment/ssil/adaptive_target设置。
float rendering/environment/subsurface_scattering/subsurface_scattering_depth_scale = 0.01 🔗
缩放应用亚表面散射效果的深度。高值可能允许光散射到网格的一部分或屏幕空间附近但深度很远的另一个网格中。另请参阅rendering/environment/subsurface_scattering/subsurface_scattering_scale。
注意:此属性仅在项目启动时读取。要在运行时设置地下散射深度刻度,请调用RenderingServer.sub_surface_scattering_set_scale()。
int rendering/environment/subsurface_scattering/subsurface_scattering_quality = 1 🔗
设置地下散射效果的质量。较高的值较慢,但看起来更好。这会影响将BaseMaterial3D.subsurf_scatter_enabled设置为true的材质的渲染,以及设置SSS_STRENGTH的ShaderMaterial。
注意:此属性仅在项目启动时读取。要在运行时设置地下散射质量,请调用RenderingServer.sub_surface_scattering_set_quality()。
float rendering/environment/subsurface_scattering/subsurface_scattering_scale = 0.05 🔗
缩放采集样本以获得次表面散射效果的距离。更改此值不会影响性能,但较高的值将导致显着的伪影,因为样本将变得明显分散。较低的值导致散射光传播较小。另请参阅rendering/environment/subsurface_scattering/subsurface_scattering_depth_scale。
注意:此属性仅在项目启动时读取。要在运行时设置地下散射比例,请调用RenderingServer.sub_surface_scattering_set_scale()。
int rendering/environment/volumetric_fog/use_filter = 1 🔗
在集成之前启用体积雾效果的过滤。这大大模糊了雾,减少了精细的细节,但也消除了粗糙的边缘和混淆现象。当需要更多细节时禁用。
int rendering/environment/volumetric_fog/volume_depth = 64 🔗
沿着Froxel缓冲区的深度使用的切片数,用于体积雾。较低的数量会更有效,但可能会导致摄像机移动过程中出现伪影。另请参见Environment.volumetric_fog_length。
int rendering/environment/volumetric_fog/volume_size = 64 🔗
基本尺寸用于确定摄像机X轴和Y轴上的Froxel缓冲区大小。最终尺寸按屏幕长宽比缩放,因此实际值可能与设置的不同。为更详细的雾设置更大的尺寸,为更好的性能设置更小的尺寸。
String rendering/gl_compatibility/driver = "opengl3" 🔗
设置渲染器在使用兼容性渲染器时使用的驱动程序。编辑此属性对默认配置没有影响,因为第一方平台都有特定于平台的覆盖。使用这些覆盖为每个平台配置驱动程序。
这可以使用--renent-drive<drive>命令行参数来覆盖。
支持的值是:
-opengl3,桌面平台上的OpenGL 3.3,移动平台上的OpenGL ES 3.0,Web上的WebGL 2.0。
-opengl3_angle,使用ANGLE兼容层的OpenGL ES 3.0,在macOS(通过本机OpenGL)和Windows(通过Direct3D 11)上受支持。
-opengl3_es,Linux/BSD上的OpenGL ES 3.0。
注意:这些选项的可用性取决于引擎编译时是否支持它们(由SCons选项opengl3和angle_libs确定)。
注意:作为回退或用户指定的命令行参数的结果,引擎可能会自动更改实际的渲染驱动程序。要获取运行时使用的实际渲染驱动程序,请使用RenderingServer.get_current_rendering_driver_name()而不是读取此项目设置的值。
String rendering/gl_compatibility/driver.android = "opengl3" 🔗
rendering/gl_compatibility/driver的Android覆盖。
仅支持一种选项:
-opengl3,来自原生驱动程序的OpenGL ES 3.0。
String rendering/gl_compatibility/driver.ios = "opengl3" 🔗
iOS覆盖rendering/gl_compatibility/driver。
仅支持一种选项:
-opengl3,来自原生驱动程序的OpenGL ES 3.0。
String rendering/gl_compatibility/driver.linuxbsd = "opengl3" 🔗
rendering/gl_compatibility/driver的LinuxBSD覆盖。
支持两种选择:
-opengl3(默认),来自本机驱动程序的OpenGL 3.3。
-opengl3_es,来自本机驱动程序的OpenGL ES 3.0。如果启用了rendering/gl_compatibility/fallback_to_gles,如果不支持OpenGL 3.3,这将用作后备。
String rendering/gl_compatibility/driver.macos = "opengl3" 🔗
rendering/gl_compatibility/driver的macOS覆盖。
支持两种选择:
-opengl3(默认),来自本机驱动程序的OpenGL 3.3。如果启用了rendering/gl_compatibility/fallback_to_native,如果ANGLE配置为首选驱动程序但不受支持,这将用作后备。
-opengl3_angle,OpenGL ES 3.0在原生OpenGL驱动程序上使用ANGLE兼容层。如果启用了rendering/gl_compatibility/fallback_to_angle,如果不支持OpenGL 3.3,这将用作后备。
String rendering/gl_compatibility/driver.web = "opengl3" 🔗
rendering/gl_compatibility/driver的Web覆盖。
仅支持一种选项:
-opengl3, WebGL 2.0。底层原生API取决于目标操作系统、浏览器和浏览器配置。
String rendering/gl_compatibility/driver.windows = "opengl3" 🔗
rendering/gl_compatibility/driver的窗口覆盖。
支持两种选择:
-opengl3(默认),来自本机驱动程序的OpenGL 3.3。如果启用了rendering/gl_compatibility/fallback_to_native,如果ANGLE配置为首选驱动程序但不受支持,这将用作后备。
-opengl3_angle,OpenGL ES 3.0在原生Direct3D 11驱动程序上使用ANGLE兼容层。如果启用了rendering/gl_compatibility/fallback_to_angle,如果不支持OpenGL 3.3,这将用作后备。默认情况下,ANGLE用作rendering/gl_compatibility/force_angle_on_devices中列出的某些设备的默认驱动程序。
bool rendering/gl_compatibility/fallback_to_angle = true 🔗
如果true,则如果不支持本机OpenGL或设备在rendering/gl_compatibility/force_angle_on_devices中列出,兼容性渲染器将回退到ANGLE。
注意:此设置仅在Windows上实现。
bool rendering/gl_compatibility/fallback_to_gles = true 🔗
如果true,如果不支持桌面OpenGL,兼容性渲染器将回退到OpenGLES。
注意:此设置仅在Linux/X11上实现。
bool rendering/gl_compatibility/fallback_to_native = true 🔗
如果true,则如果不支持ANGLE或找不到ANGLE动态库,兼容性渲染器将回退到本机OpenGL。
注意:此设置在macOS和Windows上实现。
Array rendering/gl_compatibility/force_angle_on_devices 🔗
应该始终使用角度渲染器的设备Array。
每个条目都是带有以下键的Dictionary:供应商和名称。name可以设置为*以添加具有指定供应商的所有设备。
注意:此设置仅在Windows上实现。
int rendering/gl_compatibility/item_buffer_size = 16384 🔗
在单个视口更新中可以绘制的最大画布项命令数。如果发出更多渲染命令,它们将被忽略。降低此限制可能会提高带宽有限设备的性能。如果您发现并非所有对象都在一帧中绘制,请增加此限制。
bool rendering/gl_compatibility/nvidia_disable_threaded_optimization = true 🔗
如果true,则禁用NVIDIA驱动程序的线程优化功能,这在大多数OpenGL应用程序中会导致卡顿。
注意:此设置仅适用于Windows,因为在其他平台上默认禁用线程优化。
bool rendering/global_illumination/gi/use_half_resolution = false 🔗
如果true,则以减半分辨率呈现VoxelGI和SDFGI(Environment.sdfgi_enabled)缓冲区(例如,当视口大小为1920×1080时为960×540)。启用VoxelGI或SDFGI时,这会显着提高性能,代价是多边形边缘上可能可见的伪影。随着视口分辨率的增加,质量损失变得不那么明显。Lightmass渲染不受此设置的影响。
注意:此属性仅在项目启动时读取。要在运行时设置半分辨率GI,请调用RenderingServer.gi_set_use_half_resolution()。
int rendering/global_illumination/sdfgi/frames_to_converge = 5 🔗
用于收敛符号距离场全局光照的帧数。较高的值导致较少的噪声结果,代价是需要更长的时间才能完全收敛。这意味着场景的全局光照在更长的时间内会过于黑暗,尤其是当摄像机快速移动时。实际收敛速度取决于渲染的帧率。例如,默认设置为30帧,在60 FPS下渲染将使SDFGI在0.5秒后完全收敛。另请参阅rendering/global_illumination/sdfgi/frames_to_update_lights和rendering/global_illumination/sdfgi/probe_ray_count。
注意:此属性仅在项目启动时读取。要在运行时控制SDFGI收敛速度,请调用RenderingServer.environment_set_sdfgi_frames_to_converge()。
int rendering/global_illumination/sdfgi/frames_to_update_lights = 2 🔗
在符号距离字段全局照明中更新动态光源的帧数。较高的值需要更多时间来更新来自动态光源的间接照明,但当存在许多动态光源时会产生更好的性能。另请参阅rendering/global_illumination/sdfgi/frames_to_converge和rendering/global_illumination/sdfgi/probe_ray_count。
注意:这仅影响Light.light_bake_mode为Light.BAKE_DYNAMIC(这是默认值)的Light节点。考虑使非移动灯使用Light.BAKE_STATIC烘烤模式来提高性能。
注意:此属性仅在项目启动时读取。要在运行时控制SDFGI光源更新速度,请调用RenderingServer.environment_set_sdfgi_frames_to_update_light()。
int rendering/global_illumination/sdfgi/probe_ray_count = 1 🔗
计算符号距离场全局光照时每帧要投射的光线数。更高的值会导致更少的噪声结果,但会以性能为代价。另请参见rendering/global_illumination/sdfgi/frames_to_converge和rendering/global_illumination/sdfgi/frames_to_update_lights。
注意:此属性仅在项目启动时读取。要在运行时控制SDFGI质量,请调用RenderingServer.environment_set_sdfgi_ray_count()。
int rendering/global_illumination/voxel_gi/quality = 0 🔗
要使用的VoxelGI质量。高质量可以带来更精确的照明和更好的反射,但渲染速度较慢。此设置不会影响烘焙数据,也不需要再次烘焙VoxelGI即可应用。
注意:此属性仅在项目启动时读取。要在运行时控制VoxelGI质量,请调用RenderingServer.voxel_gi_set_quality()。
int rendering/lightmapping/bake_performance/max_rays_per_pass = 4 🔗
使用Lightmass烘焙光照贴图时每遍可以投掷的最大光线数。根据场景,调整此值可能会在烘焙光照贴图时导致更高的GPU利用率,从而加快烘焙时间。
注意:使用对您的系统来说太高的值可能会导致崩溃,因为GPU长时间无响应,并且图形驱动程序被操作系统重置。
int rendering/lightmapping/bake_performance/max_rays_per_probe_pass = 64 🔗
使用Lightmass在LightProbe中烘焙动态对象照明时,每遍可以投掷的最大光线数。根据场景,调整此值可能会在烘焙光照贴图时导致更高的GPU利用率,从而加快烘焙时间。
注意:使用对您的系统来说太高的值可能会导致崩溃,因为GPU长时间无响应,并且图形驱动程序被操作系统重置。
int rendering/lightmapping/bake_performance/max_transparency_rays = 8 🔗
使用Lightmass烘焙光照贴图时,每次通过时可以投掷的最大重试光线数。根据场景,减少此值可能会导致更快的烘焙时间。
注意:使用对您的系统来说太高的值可能会导致崩溃,因为GPU长时间无响应,并且图形驱动程序被操作系统重置。
int rendering/lightmapping/bake_performance/region_size = 512 🔗
使用Lightmass烘焙光照贴图时使用的区域大小。指定值向上舍入到最接近的2次方。
注意:使用对您的系统来说太高的值可能会导致崩溃,因为GPU长时间无响应,并且图形驱动程序被操作系统重置。
int rendering/lightmapping/bake_quality/high_quality_probe_ray_count = 512 🔗
当Lightmass.quality为Lightmass.BAKE_QUALITY_HIGH时,在LightProbe中用于烘焙动态对象照明的光线数。
int rendering/lightmapping/bake_quality/high_quality_ray_count = 512 🔗
当Lightmass.quality设置为Lightmass.BAKE_QUALITY_HIGH,在Lightmass烘焙光照贴图所需的光线数量。
int rendering/lightmapping/bake_quality/low_quality_probe_ray_count = 64 🔗
当Lightmass.quality为Lightmass.BAKE_QUALITY_LOW时,在LightProbe中用于烘焙动态对象照明的光线数。
int rendering/lightmapping/bake_quality/low_quality_ray_count = 32 🔗
当Lightmass.quality设置为Lightmass.BAKE_QUALITY_LOW时, 使用Lightmass烘焙光照贴图所需的光线数量。
int rendering/lightmapping/bake_quality/medium_quality_probe_ray_count = 256 🔗
当Lightmass.quality为Lightmass.BAKE_QUALITY_MEDIUM时,在LightProbe中用于烘焙动态对象照明的光线数。
int rendering/lightmapping/bake_quality/medium_quality_ray_count = 128 🔗
当Lightmass.quality设置为Lightmass.BAKE_QUALITY_MEDIUM时,使用Lightmass烘焙光照贴图所需的光线数量。
int rendering/lightmapping/bake_quality/ultra_quality_probe_ray_count = 2048 🔗
当Lightmass.quality为Lightmass.BAKE_QUALITY_ULTRA时,在LightProbe中用于烘焙动态对象照明的光线数。
int rendering/lightmapping/bake_quality/ultra_quality_ray_count = 2048 🔗
当Lightmass.quality设置为Lightmass.BAKE_QUALITY_ULTRA时,使用Lightmass烘焙光照贴图所需的光线数量。
int rendering/lightmapping/denoising/denoiser = 0 🔗
用于去噪光照贴图的去噪工具。
使用OpenImageDenoise(OIDN)需要在编辑器设置中配置OIDN可执行文件的路径,位于EditorSettings.filesystem/tools/oidn/oidn_denoise_path。OIDN可以从OpenImageDenoise的下载页面下载。
OIDN将在可用时使用GPU加速。与使用计算着色器进行加速的JNLM不同,OIDN使用特定于供应商的加速方法。要获得GPU加速,必须根据您的GPU在系统上安装以下库:
-NVIDIA GPU:CUDA库
-AMD GPU:HIP库
-英特尔GPU:SYCL库
如果系统上没有配置GPU加速,则将改为执行基于多线程CPU的去噪。在大多数情况下,这种基于CPU的去噪明显比JNLM去噪器慢。
bool rendering/lightmapping/lightmap_gi/use_bicubic_filter = true 🔗
如果true,则在光照贴图采样期间应用双三次滤波器。这使得光照贴图看起来更流畅,性能成本适中。
注意:双三次滤镜夸大了当光照贴图的分辨率足够低时发生的“出血”效果。
float rendering/lightmapping/primitive_meshes/texel_size = 0.2 🔗
如果启用PrimitiveMesh.add_uv2,则用于计算PrimitiveMesh资源上的Mesh.lightmap_size_hint的texel_size。
float rendering/lightmapping/probe_capture/update_speed = 15 🔗
从LightProbes表示动态对象照明时,framerate-independent更新速度。更高的值使动态对象照明更新更快。更高的值可以防止快速移动的对象上显示“过时”的间接照明,代价是当对象从明亮区域移动到阴影区域时可能会闪烁。
bool rendering/lights_and_shadows/directional_shadow/16_bits = true 🔗
方向阴影深度图使用16位。启用此功能会导致阴影精度降低,并可能导致阴影痤疮,但可以提高某些设备的性能。
int rendering/lights_and_shadows/directional_shadow/size = 4096 🔗
方向阴影的大小(以像素为单位)。更高的值将导致更清晰的阴影,但以性能为代价。该值向上舍入到最接近的2次方。
int rendering/lights_and_shadows/directional_shadow/size.mobile = 2048 🔗
由于性能问题或驱动程序支持,移动设备上rendering/lights_and_shadows/directional_shadow/size的低端覆盖。
int rendering/lights_and_shadows/directional_shadow/soft_shadow_filter_quality = 2 🔗
DirectionalLights投射的阴影的质量设置。更高质量的设置在从阴影贴图读取时使用更多样本,因此速度较慢。低质量的设置可能会导致阴影看起来颗粒状。
注意:Soft极低设置将自动将常数阴影模糊乘以0.75x以减少可见的噪点量。此自动模糊更改仅影响Light.shadow_blur中定义的常数模糊因子,而不影响DirectionalLights'Light.light_angular_distance执行的变量模糊。
注意:Soft High和Soft Ultra设置将自动将常数阴影模糊分别乘以1.5×和2×,以更好地利用增加的样本数。这种增加的模糊也提高了动态物体阴影的稳定性。
int rendering/lights_and_shadows/directional_shadow/soft_shadow_filter_quality.mobile = 0 🔗
由于性能问题或驱动程序支持,移动设备上rendering/lights_and_shadows/directional_shadow/soft_shadow_filter_quality的低端覆盖。
bool rendering/lights_and_shadows/positional_shadow/atlas_16_bits = true 🔗
使用16位全向/点阴影深度图。启用此功能会导致阴影精度降低,并可能导致阴影痤疮,但可以提高某些设备的性能。
int rendering/lights_and_shadows/positional_shadow/atlas_quadrant_0_subdiv = 2 🔗
阴影映射的细分象限大小。请参阅阴影映射文档。
int rendering/lights_and_shadows/positional_shadow/atlas_quadrant_1_subdiv = 2 🔗
阴影映射的细分象限大小。请参阅阴影映射文档。
int rendering/lights_and_shadows/positional_shadow/atlas_quadrant_2_subdiv = 3 🔗
阴影映射的细分象限大小。请参阅阴影映射文档。
int rendering/lights_and_shadows/positional_shadow/atlas_quadrant_3_subdiv = 4 🔗
阴影映射的细分象限大小。请参阅阴影映射文档。
int rendering/lights_and_shadows/positional_shadow/atlas_size = 4096 🔗
阴影图集的大小(用于OmniLights和SpotLights)。请参阅文档。
int rendering/lights_and_shadows/positional_shadow/atlas_size.mobile = 2048 🔗
由于性能问题或驱动程序支持,移动设备上rendering/lights_and_shadows/positional_shadow/atlas_size的低端覆盖。
int rendering/lights_and_shadows/positional_shadow/soft_shadow_filter_quality = 2 🔗
PointLights和SpotLights投射的阴影的质量设置。更高质量的设置在从阴影贴图读取时使用更多样本,因此速度较慢。低质量的设置可能会导致阴影看起来颗粒状。
注意:Soft极低设置将自动将常数阴影模糊乘以0.75x以减少可见的噪点量。此自动模糊更改仅影响Light.shadow_blur中定义的常数模糊因子,而不影响DirectionalLights'Light.light_angular_distance执行的变量模糊。
注意:Soft High和Soft Ultra设置将自动将阴影模糊分别乘以1.5倍和2倍,以更好地利用增加的样本数。这种增加的模糊也提高了动态对象阴影的稳定性。
int rendering/lights_and_shadows/positional_shadow/soft_shadow_filter_quality.mobile = 0 🔗
由于性能问题或驱动程序支持,移动设备上rendering/lights_and_shadows/positional_shadow/soft_shadow_filter_quality的低端覆盖。
bool rendering/lights_and_shadows/tighter_shadow_caster_culling = true 🔗
如果true,则无法将阴影投射到视图截头体中的项目将不会渲染到阴影贴图中。
这可以提高性能。
bool rendering/lights_and_shadows/use_physical_light_units = false 🔗
允许对光源使用基于物理的单元。基于物理的单元往往比i3D使用的任意单元大得多,但它们可用于将i3D内的照明与现实世界的照明相匹配。由于自然界中存在的照明条件的大动态范围,i3D在渲染前将曝光烘焙到各种照明量中。大多数光源在运行时基于活动的CameraAttributes资源自动烘焙曝光,但Lightmass和VoxelGI需要在烘焙时设置CameraAttributes资源以降低动态范围。在运行时,i3D会自动协调烘焙曝光与活动曝光,以确保照明保持一致。
float rendering/limits/cluster_builder/max_clustered_elements = 512 🔗
摄像机视图中可以一次渲染的最大聚类元素数(PointLight+SpotLight+DecalActor+ReflectionProbe)。如果摄像机视图中存在更多聚类元素,其中一些将不会被渲染(导致摄像机移动期间弹出)。启用光源和贴花上的距离淡入淡出(Light.distance_fade_enabled、DecalActor.distance_fade_enabled)可以帮助避免达到此限制。
降低此值可能会提高某些设置上的GPU性能,即使项目中从未达到集群元素的最大数量。
注意:此设置仅在使用Forward+渲染方法时有效,不适用于Mobile和Com电话兼容性。
int rendering/limits/global_shader_variables/buffer_size = 65536 🔗
global shader uniform buffer可以使用的maximum uniform count。每个项目占用一个插槽。换句话说,单个统一浮点数和统一vec4将在缓冲区中占用相同数量的空间。
注意:使用兼容性渲染器时,由于硬件限制,大多数移动设备(以及所有Web导出)的最大大小将被限制为1024。
int rendering/limits/opengl/max_lights_per_object = 8 🔗
每个对象可渲染的全向光和聚光灯的最大数量。默认值为8,这意味着每个表面最多可以受到8个全向光和8个聚光灯的影响。这进一步受到硬件支持和rendering/limits/opengl/max_renderable_lights的限制。设置此低将略微减少内存使用,可能会减少着色器编译时间,并可能导致在低端、移动或Web设备上更快地渲染。
注意:此设置仅在使用兼容性渲染方法时有效,而不是Forward+和Mobile。
int rendering/limits/opengl/max_renderable_elements = 65536 🔗
在一帧中可渲染的元素的最大数量。如果每帧可见的元素比这多,它们将不会被绘制。请记住,元素指的是网格表面,而不是网格本身。将此设置为低将略微减少内存使用,并可能减少着色器编译时间,尤其是在Web上。对于大多数用途,默认值是合适的,但考虑在Web导出时尽可能降低。
注意:此设置仅在使用兼容性渲染方法时有效,而不是Forward+和Mobile。
int rendering/limits/opengl/max_renderable_lights = 32 🔗
在一帧中可渲染的最大位置灯数量。如果使用的灯比这个数字多,它们将被忽略。设置此低将略微减少内存使用,并可能减少着色器编译时间,尤其是在Web上。对于大多数用途,默认值是合适的,但考虑在Web导出时尽可能降低。
注意:此设置仅在使用兼容性渲染方法时有效,而不是Forward+和Mobile。
int rendering/limits/spatial_indexer/threaded_cull_minimum_instances = 1000 🔗
场景中必须存在的最小实例数以启用对多个线程的剔除计算。如果场景的实例少于此数量,则在单个线程上完成剔除。
int rendering/limits/spatial_indexer/update_iterations_per_frame = 10 🔗
float rendering/limits/time/time_rollover_secs = 3600 🔗
TIME着色器内置变量滚动之前的最大时间(以秒为单位)。TIME变量每帧递增delta,当超过该值时,它会滚动到0.0。由于大浮点值不如小浮点值精确,因此应将其设置为尽可能低,以最大限度地提高着色器中TIME内置变量的精度。这在着色器精度显着降低的移动平台上尤其重要。但是,如果设置得太低,着色器动画可能会在项目运行时从头开始。
在桌面平台上,建议使用低于4096的值,最好低于2048。在移动平台上,建议使用低于64的值,最好低于32。
float rendering/mesh_lod/lod_change/threshold_pixels = 1.0 🔗
自动LOD偏差,用于在ReflectionProbe中渲染的网格。较高的值将使用生成LOD变化的网格的较不详细版本。如果设置为0.0,则禁用自动LOD。增加rendering/mesh_lod/lod_change/threshold_pixels以牺牲几何细节来提高性能。
注意:rendering/mesh_lod/lod_change/threshold_pixels不影响GeometryRender可见性范围(也称为“手动”LOD或分层LOD)。
注意:此属性仅在项目启动时读取。要在运行时调整自动LOD阈值,请在根Viewport上设置Viewport.mesh_lod_threshold。
int rendering/occlusion_culling/bvh_build_quality = 2 🔗
渲染遮挡剔除缓冲区时使用的边界卷层次结构质量。更高的值将导致更准确的遮挡剔除,代价是更高的CPU使用率。另请参阅rendering/occlusion_culling/occlusion_rays_per_thread。
注意:此属性仅在项目启动时读取。要在运行时调整BVH构建质量,请使用RenderingServer.viewport_set_occlusion_culling_build_quality()。
bool rendering/occlusion_culling/jitter_projection = true 🔗
如果true,则用于渲染遮挡缓冲区的投影将被抖动。这有助于防止在通过小间隙可见时错误地剔除对象。
int rendering/occlusion_culling/occlusion_rays_per_thread = 512 🔗
每个CPU线程跟踪的遮挡射线数。更高的值将导致更准确的遮挡剔除,代价是更高的CPU使用率。遮挡剔除缓冲区的像素数大致等于occlusion_rays_per_thread*number_of_logical_cpu_cores,因此它将取决于系统的CPU。因此,内核较少的CPU将使用较低的分辨率来尝试保持性能成本,即使是跨设备。另见rendering/occlusion_culling/bvh_build_quality。
注意:此属性仅在项目启动时读取。要调整运行时每个线程跟踪的遮挡射线数,请使用RenderingServer.viewport_set_occlusion_rays_per_thread()。
bool rendering/occlusion_culling/use_occlusion_culling = false 🔗
如果true,则OcclusionRender节点将可用于根视口中的3D遮挡剔除。在自定义视口中,Viewport.use_occlusion_culling必须设置为true。
注意:启用遮挡剔除对CPU有成本。只有在您实际计划使用时才启用遮挡剔除。具有很少或没有对象阻塞视图的大型开放场景通常不会从遮挡剔除中受益太多。与遮挡剔除相比,大型开放场景通常更受益于网格LOD和可见性范围(GeometryRender.visibility_range_begin和GeometryRender.visibility_range_end)。
注意:由于内存限制,Web导出模板中默认不支持遮挡剔除,可以通过使用module_raycast_enabled=yes编译自定义Web导出模板来启用。
int rendering/reflections/reflection_atlas/reflection_count = 64 🔗
要存储在反射图集中的立方体贴图的数量。场景中ReflectionProbe的数量将受到此数量的限制。更高的数字需要更多的VRAM。
int rendering/reflections/reflection_atlas/reflection_size = 256 🔗
ReflectionProbe的立方体贴图面大小。较高的数字需要更多的VRAM,并且可能会使反射探头更新变慢。
int rendering/reflections/reflection_atlas/reflection_size.mobile = 128 🔗
由于性能问题或驱动程序支持,移动设备上rendering/reflections/reflection_atlas/reflection_size的低端覆盖。
bool rendering/reflections/sky_reflections/fast_filter_high_quality = false 🔗
使用更高质量的快速过滤算法。比使用默认质量慢得多,但会导致更平滑的反射。只应在场景特别详细时使用。
int rendering/reflections/sky_reflections/ggx_samples = 32 🔗
设置对Sky和ReflectionProbe使用重要性采样时要采集的样本数。更高的值将导致更平滑、更高质量的反射,但会增加计算辐射贴图的时间。通常,对于更简单、低动态范围的环境需要更少的样本,而对于HDR环境和具有高详细级别的环境需要更多的样本。
int rendering/reflections/sky_reflections/ggx_samples.mobile = 16 🔗
由于性能问题或驱动程序支持,移动设备上rendering/reflections/sky_reflections/ggx_samples的低端覆盖。
int rendering/reflections/sky_reflections/roughness_layers = 8 🔗
限制使用重要性采样时在辐射贴图中使用的层数。较低的数字会稍微快一点,占用较少的VRAM。
bool rendering/reflections/sky_reflections/texture_array_reflections = true 🔗
如果true,则对反射探测和全景背景(天空)使用纹理数组而不是mipmap。这减少了抖动噪声和反射上的放大伪影,但计算速度明显较慢,并且使用rendering/reflections/sky_reflections/roughness_layers倍的内存。
bool rendering/reflections/sky_reflections/texture_array_reflections.mobile = false 🔗
由于性能问题或驱动程序支持,移动设备上rendering/reflections/sky_reflections/texture_array_reflections的低端覆盖。
String rendering/renderer/rendering_method = "forward_plus" 🔗
设置项目将使用的渲染器。选项有:
forward_plus(Forward+):专为桌面设备设计的高端渲染器。具有更高的基本开销,但可以很好地扩展复杂场景。不适合旧设备或移动设备。
mobile(Mobile):专为移动设备设计的现代渲染器。比Forward+具有更低的基本开销,但不能很好地扩展到具有许多元素的大型场景。
gl_compatibility(兼容性):为旧设备设计的低端渲染器。基于OpenGL 3.3/OpenGL ES 3.0/WebGL 2 API的限制。
这可以使用--renent-method<method>命令行参数覆盖。
注意:由于回退或用户指定的命令行参数,引擎可能会自动更改实际渲染方法。要获取运行时使用的实际渲染方法,请使用RenderingServer.get_current_rendering_method()而不是读取此项目设置的值。
String rendering/renderer/rendering_method.mobile = "mobile" 🔗
覆盖移动设备上的rendering/renderer/rendering_method。
String rendering/renderer/rendering_method.web = "gl_compatibility" 🔗
覆盖Web上的rendering/renderer/rendering_method。
int rendering/rendering_device/d3d12/agility_sdk_version = 613 🔗
要使用的Direct3D 12敏捷SDK的版本代码(D3D12SDKVersion)。这必须与安装在编辑器二进制文件旁边和当前编辑器版本的导出模板目录中的次要版本相匹配。例如,如果您安装了1.613.3,则需要在此处输入613。
int rendering/rendering_device/d3d12/max_misc_descriptors_per_frame = 512 🔗
Direct3D 12渲染驱动程序每帧使用的杂项描述符堆中的条目数,用于清除纹理等各种操作。
根据场景的复杂性,这个值可能会降低,也可能需要提高。
int rendering/rendering_device/d3d12/max_resource_descriptors_per_frame = 16384 🔗
Direct3D 12渲染驱动程序每帧使用的资源描述符堆中的条目数,用于大多数渲染操作。
根据场景的复杂性,这个值可能会降低,也可能需要提高。
int rendering/rendering_device/d3d12/max_sampler_descriptors_per_frame = 1024 🔗
Direct3D 12渲染驱动程序每帧使用的采样器描述符堆中的条目数,用于大多数渲染操作。
根据场景的复杂性,这个值可能会降低,也可能需要提高。
String rendering/rendering_device/driver = "vulkan" 🔗
设置渲染器在使用RenderingDevice-based渲染器(如Forward+或Mobile渲染器)时使用的驱动程序。编辑此属性在默认配置中无效,因为第一方平台都有特定于平台的覆盖。使用这些覆盖为每个平台配置驱动程序。
这可以使用--renent-drive<drive>命令行参数来覆盖。
支持的值是:
-金属,金属(支持苹果硅Mac和iOS)。
-Vulkan, Vulkan(支持所有桌面和移动平台)。
-d3d12, Direct3D 12(在Windows上支持)。
注意:这些选项的可用性取决于引擎是否在编译时支持它们(由SCons选项Vulkan、金属和d3d12确定)。
注意:如果给定平台没有注册的驱动程序,如果启用了rendering/rendering_device/fallback_to_opengl3,它可以回退到兼容性渲染器(OpenGL 3)。无论该属性如何,此回退都会自动发生在Web平台上。
注意:作为回退或用户指定的命令行参数的结果,引擎可能会自动更改实际的渲染驱动程序。要获取运行时使用的实际渲染驱动程序,请使用RenderingServer.get_current_rendering_driver_name()而不是读取此项目设置的值。
String rendering/rendering_device/driver.android = "vulkan" 🔗
rendering/rendering_device/driver的Android覆盖。
仅支持一种选项:
-Vulkan,来自原生驱动程序的Vulkan。
注意:如果Vulkan在编译时被禁用,则没有替代的RenderingDevice驱动程序。
String rendering/rendering_device/driver.ios = "metal" 🔗
iOS覆盖rendering/rendering_device/driver。
支持两种选择:
-金属(默认),来自原生驱动程序的金属。
-Vulkan,Vulkan over Metal via MoltenVK。
String rendering/rendering_device/driver.linuxbsd = "vulkan" 🔗
rendering/rendering_device/driver的LinuxBSD覆盖。
仅支持一种选项:
-Vulkan,来自原生驱动程序的Vulkan。
注意:如果Vulkan在编译时被禁用,则没有替代的RenderingDevice驱动程序。
String rendering/rendering_device/driver.macos = "metal" 🔗
rendering/rendering_device/driver的macOS覆盖。
支持两种选择:
-金属(默认),来自本机驱动程序的金属,仅在Apple Si Mac上受支持。在Intel Mac上,由于未实现Metal支持,它将自动回退到Vulkan。
-Vulkan,Vulkan over Metal via MoltenVK,在Apple Si和Intel Mac上都支持。
String rendering/rendering_device/driver.windows = "vulkan" 🔗
rendering/rendering_device/driver的窗口覆盖。
支持两种选择:
-Vulkan(默认),来自本机驱动程序的Vulkan。如果启用了rendering/rendering_device/fallback_to_vulkan,如果不支持Direct3D 12,这将用作后备。
-d3d12,来自本机驱动程序的Direct3D 12。如果启用了rendering/rendering_device/fallback_to_d3d12,如果不支持Vulkan,这将用作后备。
bool rendering/rendering_device/fallback_to_d3d12 = true 🔗
如果true,如果不支持Vulkan,前向渲染器将回退到Direct3D 12。如果在编译时禁用了Vulkan驱动程序支持,则无论此设置如何,都会尝试回退。
注意:此设置仅在Windows上实现。
bool rendering/rendering_device/fallback_to_opengl3 = true 🔗
如果true,如果不支持Direct3D 12、Metal和Vulkan,前向渲染器将回退到OpenGL 3。
注意:此设置仅在Windows、Android、macOS、iOS和Linux/X11上实现。
bool rendering/rendering_device/fallback_to_vulkan = true 🔗
如果true,则如果不支持Direct3D 12(Windows)或Metal(macOSx86_64),则前向渲染器将回退到Vulkan。如果在编译时禁用Direct3D 12(Windows)或Metal(macOS)驱动程序支持,则无论此设置如何,都会尝试回退。
注意:此设置仅在Windows和macOS上实现。
bool rendering/rendering_device/pipeline_cache/enable = true 🔗
如果图形API支持,请启用保存到磁盘的管道缓存。
注意:此属性无法控制GPU驱动程序本身所做的管道缓存。如果您希望模拟用户首次启动应用时获得的体验,只有在删除驱动程序缓存内容的同时关闭此功能。
float rendering/rendering_device/pipeline_cache/save_chunk_size_mb = 3.0 🔗
确定管道缓存保存到磁盘的间隔。值越低,保存的频率越高。
int rendering/rendering_device/staging_buffer/block_size_kb = 256 🔗
暂存缓冲区中分配的块的大小。暂存缓冲区是引擎用于将数据上传到或下载到GPU的中间资源。此设置决定了复制操作中可以传输的最大数据量。增加这一点将导致更快的数据传输,但代价是额外的内存。
注意:此属性仅在项目启动时读取。目前无法在运行时更改此值。
int rendering/rendering_device/staging_buffer/max_size_mb = 128 🔗
暂存缓冲区允许使用的最大内存量。如果上传或下载的数据量超过此量,GPU将停止并等待前一帧完成。
注意:此属性仅在项目启动时读取。目前无法在运行时更改此值。
int rendering/rendering_device/staging_buffer/texture_download_region_size_px = 64 🔗
使用RenderingDevice.texture_get_data_async()等方法时用于从GPU下载纹理数据的区域大小(以像素为单位)。
注意:此属性的上限由rendering/rendering_device/staging_buffer/block_size_kb控制,以及是否可以按照请求的格式分配具有此区域大小的单个纹理数据块。
注意:此属性仅在项目启动时读取。目前无法在运行时更改此值。
int rendering/rendering_device/staging_buffer/texture_upload_region_size_px = 64 🔗
使用RenderingDevice.texture_update()等方法时用于从GPU上传纹理数据的区域大小(以像素为单位)。
注意:此属性的上限由rendering/rendering_device/staging_buffer/block_size_kb控制,以及是否可以按照请求的格式分配具有此区域大小的单个纹理数据块。
注意:此属性仅在项目启动时读取。目前无法在运行时更改此值。
int rendering/rendering_device/vsync/frame_queue_size = 2 🔗
在停止等待GPU之前在CPU端跟踪的帧数。
尝试V-Sync Simulator,这是一个模拟演示文稿的交互式界面,可以更好地了解它在各种条件下如何受到不同变量的影响。
注意:此属性仅在项目启动时读取。目前无法在运行时更改此值。
int rendering/rendering_device/vsync/swapchain_image_count = 3 🔗
交换链将包含的图像数(后缓冲区+前缓冲区)。
2对应双缓冲,3对应三缓冲。
双缓冲可以为您提供最低的延迟/延迟,但如果V-Sync开启并且系统无法以60 fps的速度渲染,帧速率将以倍数下降(例如30 fps、15、7.5等)。三重缓冲为您提供更高的帧速率(特别是如果系统无法达到恒定的60 fps),代价是最多1帧延迟,使用DisplayServer.VSYNC_ENABLED(FIFO)。
对DisplayServer.VSYNC_ENABLED使用双缓冲。如果您计划使用DisplayServer.VSYNC_MAILBOX模式,则必须使用三缓冲。
尝试V-Sync Simulator,这是一个模拟演示文稿的交互式界面,可以更好地了解它在各种条件下如何受到不同变量的影响。
注意:此属性仅在项目启动时读取。目前无法在运行时更改此值。
注意:某些平台可能会限制实际价值。
int rendering/rendering_device/vulkan/max_descriptors_per_pool = 64 🔗
每个池的描述符数量。i3D的Vulkan后端将线性池用于将在单个帧内创建和销毁的描述符。不是每帧都销毁每一个描述符,而是可以通过重置它们所属的池来一次销毁它们。
较大的数目在一定程度上效率更高,之后只会浪费RAM(当每帧不超过1个池时,效率最高)。少数可能最终每个描述符只有一个池,这对性能产生负面影响。
注意:更改此属性需要重新启动才能生效。
float rendering/scaling_3d/fsr_sharpness = 0.2 🔗
确定使用FSR放大模式时放大图像的清晰度。清晰度与每个整数减半。值从0.0(最清晰)到2.0。高于2.0的值不会产生明显差异。
int rendering/scaling_3d/mode = 0 🔗
设置缩放3D模式。双线性缩放以不同的分辨率呈现,以对视口进行欠采样或超采样。FidelityFX超级分辨率1.0,缩写为FSR,是一种升级技术,通过使用空间感知的升级算法以快速帧速率生成高质量图像。FSR比双线性略贵,但它产生的画质明显更高。在特别低端的GPU上,FSR的额外成本可能不值得(相比之下,使用分辨率略高的双线性缩放来匹配性能)。
注意:FSR仅在使用Forward+渲染方法时有效,而不是Mobile或Compatiity。如果使用不兼容的渲染方法,FSR将回退到双线性缩放。
int rendering/scaling_3d/mode.ios 🔗
iOS覆盖rendering/scaling_3d/mode。这允许选择MetalFX空间和MetalFX时间缩放模式,这是使用Metal渲染驱动程序的平台独有的。
int rendering/scaling_3d/mode.macos 🔗
rendering/scaling_3d/mode的macOS覆盖。这允许选择MetalFX空间和MetalFX时间缩放模式,这是使用Metal渲染驱动程序的平台独有的。
float rendering/scaling_3d/scale = 1.0 🔗
根据视口大小缩放3D渲染缓冲区使用rendering/scaling_3d/mode中指定的图像过滤器将输出图像缩放到完整的视口大小。低于1.0的值可用于以质量为代价加速3D渲染(欠采样)。大于1.0的值仅对双线性模式有效,可用于以高性能成本(超采样)提高3D渲染质量。另请参阅rendering/anti_aliasing/quality/msaa_3d以获得多样本抗锯齿,这显着更便宜,但只能平滑多边形的边缘。
bool rendering/shader_compiler/shader_cache/compress = true 🔗
bool rendering/shader_compiler/shader_cache/enabled = true 🔗
启用着色器缓存,它将编译后的着色器存储到磁盘,以防止下次需要着色器时着色器编译卡顿。
bool rendering/shader_compiler/shader_cache/strip_debug = false 🔗
bool rendering/shader_compiler/shader_cache/strip_debug.release = true 🔗
bool rendering/shader_compiler/shader_cache/use_zstd_compression = true 🔗
bool rendering/shading/overrides/force_lambert_over_burley = false 🔗
如果true,则使用更快但质量更低的Lambert材质照明模型而不是Burley。
bool rendering/shading/overrides/force_lambert_over_burley.mobile = true 🔗
由于性能问题或驱动程序支持,移动设备上rendering/shading/overrides/force_lambert_over_burley的低端覆盖。
bool rendering/shading/overrides/force_vertex_shading = false 🔗
如果true,则强制对所有渲染进行顶点着色。这可以大大提高性能,但也会大大降低质量。可用于优化低端移动设备的性能。
int rendering/textures/canvas_textures/default_texture_filter = 1 🔗
用于CanvasItem内置纹理的默认纹理过滤模式。在着色器中,此纹理作为TEXTURE访问。
注:关于像素艺术美学,另见rendering/2d/snap/snap_2d_vertices_to_pixel和rendering/2d/snap/snap_2d_transforms_to_pixel。
int rendering/textures/canvas_textures/default_texture_repeat = 0 🔗
用于CanvasItem内置纹理的默认纹理重复模式。在着色器中,此纹理作为TEXTURE访问。
int rendering/textures/decals/filter = 3 🔗
用于DecalActor节点的过滤质量。当使用各向异性过滤模式之一时,各向异性过滤级别由rendering/textures/default_filters/anisotropic_filtering_level控制。
int rendering/textures/default_filters/anisotropic_filtering_level = 2 🔗
设置对纹理使用各向异性过滤时的最大样本数(2的幂)。更高的样本数将导致倾斜角度的纹理更清晰,但计算成本更高。0的值会强制禁用各向异性过滤,即使在启用它的材质上也是如此。
如果贴花和投影仪配置为使用各向异性过滤,各向异性过滤级别也会影响它们。请参阅rendering/textures/decals/filter和rendering/textures/light_projectors/filter。
注意:在3D中,为了使此设置具有效果,请将材质上的BaseMaterial3D.texture_filter设置为BaseMaterial3D.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC或BaseMaterial3D.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC。
注意:在2D中,要使此设置具有效果,请在显示纹理的CanvasItem节点上(或在CanvasTexture中)将CanvasItem.texture_filter设置为CanvasItem.TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC或CanvasItem.TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC。然而,各向异性过滤在2D中很少有用,因此只有在产生有意义的视觉差异时才对2D中的纹理启用它。
注意:此属性仅在项目启动时读取。要在运行时更改各向异性过滤级别,请改为在根Viewport上设置Viewport.anisotropic_filtering_level。
float rendering/textures/default_filters/texture_mipmap_bias = 0.0 🔗
通过读取较低或较高的mipmap(也称为“纹理LOD偏差”)来影响最终纹理清晰度。负值使mipmap纹理在远距离观察时更清晰但更粗糙,而正值使mipmap纹理更模糊(即使在近距离观察时)。
启用时间抗锯齿(rendering/anti_aliasing/quality/use_taa)将自动对此值应用-0.5偏移量,而启用FXAA(rendering/anti_aliasing/quality/screen_space_aa)将自动对此值应用-0.25偏移量。如果TAA和FXAA同时启用,则对该值应用-0.75偏移量。
注意:如果rendering/scaling_3d/scale低于1.0(独占),则rendering/textures/default_filters/texture_mipmap_bias用于调整自动mipmap偏差,该偏差是内部根据比例因子计算的。公式是log2(scaling_3d_scale)+mipmap_bias。
bool rendering/textures/default_filters/use_nearest_mipmap_filter = false 🔗
如果true,则在使用mipmap时使用最近邻mipmap过滤(也称为“双线性过滤”),这将导致mipmap阶段之间出现可见的接缝。这可能会提高移动设备的性能,因为使用的内存带宽更少。如果false,则使用线性mipmap过滤(也称为“三线性过滤”)。
注意:此属性仅在项目启动时读取。目前无法在运行时更改此设置。
int rendering/textures/light_projectors/filter = 3 🔗
用于PointLight和SpotLight投影仪的过滤质量。使用各向异性过滤模式之一时,各向异性过滤级别由rendering/textures/default_filters/anisotropic_filtering_level控制。
bool rendering/textures/lossless_compression/force_png = false 🔗
如果true,纹理导入器将使用PNG格式导入无损纹理。否则,它将默认使用WebP。
bool rendering/textures/vram_compression/cache_gpu_compressor = true 🔗
如果true,GPU纹理压缩器将缓存本地RenderingDevice及其资源(着色器和管道),从而以内存成本更快地进行后续导入。
bool rendering/textures/vram_compression/compress_with_gpu = true 🔗
如果true,纹理导入器将利用GPU压缩纹理,从而缩短大图像的导入时间。
注意:这仅在支持Vulkan、Direct3D 12或Metal作为渲染驱动程序的设备上运行。
注意:目前这仅影响某些压缩格式(BC1、BC3、BC4、BC5和BC6),所有这些格式都是桌面平台和控制台独有的。
bool rendering/textures/vram_compression/import_etc2_astc = false 🔗
如果true,纹理导入器将使用爱立信纹理压缩2算法导入VRAM压缩纹理,用于低质量纹理和法线贴图,使用自适应可缩放纹理压缩算法导入高质量纹理(4×4块大小)。
注意:此设置是覆盖。纹理导入器将始终导入主机平台需要的格式,即使设置为false。
注意:更改此设置不会影响之前已经导入的纹理。要使此设置适用于已经导入的纹理,请退出编辑器,删除位于项目文件夹内的. i3d/进口/文件夹,然后重新启动编辑器(参见application/config/use_hidden_project_data_directory)。
bool rendering/textures/vram_compression/import_s3tc_bptc = false 🔗
如果true,纹理导入器将使用S3纹理压缩算法(DXT1-5)导入VRAM压缩的纹理,用于较低质量的纹理,使用BPTC算法(BC6H和BC7)导入高质量的纹理。此算法仅在PC桌面平台和控制台上受支持。
注意:此设置是覆盖。纹理导入器将始终导入主机平台需要的格式,即使设置为false。
注意:更改此设置不会影响之前已经导入的纹理。要使此设置适用于已经导入的纹理,请退出编辑器,删除位于项目文件夹内的. i3d/进口/文件夹,然后重新启动编辑器(参见application/config/use_hidden_project_data_directory)。
int rendering/textures/webp_compression/compression_method = 2 🔗
WebP的默认压缩方法。影响有损和无损WebP。更高的值会以压缩速度为代价导致更小的文件。解压速度大多不受压缩方法的影响。支持的值为0到6。请注意,高于4的压缩方法非常慢,节省的资金很少。
float rendering/textures/webp_compression/lossless_compression_factor = 25 🔗
无损WebP的默认压缩因子。解压速度大多不受压缩因子的影响。支持的值为0到100。
bool rendering/viewport/hdr_2d = false 🔗
如果true,则在根视口上启用Viewport.use_hdr_2d。2D渲染将使用与3D帧缓冲区的位深度匹配的高动态范围(HDR)格式帧缓冲区。当使用Forward+渲染器时,这将是一个RGBA16帧缓冲区,而当使用Mobile渲染器时,它将是一个RGB10_A2帧缓冲区。此外,2D渲染将发生在线性色彩空间中,并将在闪光到屏幕之前立即转换为sRGB空间。实际上,这意味着视口的最终结果不会被钳制到0-1范围内,并且可以在没有色彩空间调整的情况下用于3D渲染。这允许2D渲染利用需要高动态范围的效果(例如2D发光),以及大幅改善需要高度详细渐变的效果的外观。
注意:此设置在使用兼容性渲染器时无效,出于性能原因,它总是在低动态范围内渲染。
注意:此属性仅在项目启动时读取。要在运行时切换HDR 2D,请在根Viewport上设置Viewport.use_hdr_2d。
bool rendering/viewport/transparent_background = false 🔗
如果true,则在根视口上启用Viewport.transparent_bg。这允许在同时启用display/window/size/transparent和display/window/per_pixel_transparency/allowed后每像素透明度有效。
设置主视口的默认可变速率着色(VRS)模式。请参阅Viewport.vrs_mode以在运行时更改此设置,并参阅VRSMode以获取可能的值。
String rendering/vrs/texture = "" 🔗
如果 rendering/vrs/mode 设置为 纹理,这是作为 VRS 图像加载的默认纹理的路径。
纹理 必须 使用无损压缩格式,以便能够精确匹配颜色。以下 VRS 密度映射到各种颜色,颜色越亮表示阴影精度越低::
- 1×1 = rgb(0, 0, 0) - #000000
- 1×2 = rgb(0, 85, 0) - #005500
- 2×1 = rgb(85, 0, 0) - #550000
- 2×2 = rgb(85, 85, 0) - #555500
- 2×4 = rgb(85, 170, 0) - #55aa00
- 4×2 = rgb(170, 85, 0) - #aa5500
- 4×4 = rgb(170, 170, 0) - #aaaa00
- 4×8 = rgb(170, 255, 0) - #aaff00 - Not supported on most hardware
- 8×4 = rgb(255, 170, 0) - #ffaa00 - Not supported on most hardware
- 8×8 = rgb(255, 255, 0) - #ffff00 - Not supported on most hardware
float threading/worker_pool/low_priority_thread_ratio = 0.3 🔗
将为低优先级任务保留的WorkerThreadPool线程的比例。例如,如果有10个线程可用,并且此值设置为0.3,则将为低优先级任务保留3个工作线程。实际值不会超过CPU内核数减去1,如果可能,至少有一个工作线程将专用于低优先级任务。
int threading/worker_pool/max_threads = -1 🔗
WorkerThreadPool要使用的最大线程数。-1的值表示没有限制。
bool xr/openxr/binding_modifiers/analog_threshold = false 🔗
如果true,如果XR运行时支持,则启用模拟阈值绑定修饰符。
bool xr/openxr/binding_modifiers/dpad_binding = false 🔗
如果true,如果XR运行时支持,则启用D-pad绑定修饰符。
String xr/openxr/default_action_map = "res://openxr_action_map.ires" 🔗
默认加载的动作映射配置。
bool xr/openxr/enabled = false 🔗
如果true,i3D将在启动时设置和初始化OpenXR。
int xr/openxr/environment_blend_mode = "0" 🔗
指定OpenXR应如何融入环境。这特定于某些AR和直通设备,其中摄像机图像由XR合成器混合。
int xr/openxr/extensions/debug_message_types = "15" 🔗
指定我们请求调试消息的消息类型。需要设置xr/openxr/extensions/debug_utils和XR运行时支持的扩展。
int xr/openxr/extensions/debug_utils = "0" 🔗
在支持调试utils扩展的XR运行时上启用调试实用程序。设置报告的最大严重性(0=禁用,1=错误,2=警告,3=信息,4=详细)。
bool xr/openxr/extensions/eye_gaze_interaction = false 🔗
指定是否为此项目启用眼动追踪。根据平台,可能需要额外的导出配置。
bool xr/openxr/extensions/hand_interaction_profile = false 🔗
如果true,如果平台支持,手部交互配置文件扩展将被激活。
bool xr/openxr/extensions/hand_tracking = false 🔗
如果true,则启用手部跟踪扩展(如果可用)。
注意:默认情况下,手动跟踪仅适用于XR运行时选择的数据源。对于SteamVR,这是控制器推断的数据源,对于大多数其他运行时,这是无阻碍的数据源。没有办法查询这个。如果运行时支持OpenXR数据源扩展,您可以使用xr/openxr/extensions/hand_tracking_controller_data_source和/或xr/openxr/extensions/hand_tracking_unobstructed_data_source来指示您希望启用这些数据源。如果两者都没有选择,则不启用数据源扩展,并且XR运行时默认行为仍然存在。
bool xr/openxr/extensions/hand_tracking_controller_data_source = false 🔗
如果true,则请求支持控制器推断数据源。如果支持,即使用户手中有控制器,您也会收到手部跟踪数据,手指位置会自动从控制器输入和/或传感器中推断出来。
节点:这要求XR运行时支持OpenXR数据源扩展和控制器推断的手跟踪。如果不支持,此设置将被忽略。必须启用xr/openxr/extensions/hand_tracking才能使用此设置。
bool xr/openxr/extensions/hand_tracking_unobstructed_data_source = false 🔗
如果true,则请求支持畅通无阻的数据源。如果支持,您将根据通常由光学跟踪确定的用户实际手指位置接收手部跟踪数据。
节点:这需要XR运行时支持OpenXR数据源扩展和无阻碍的手动跟踪。如果不支持,此设置将被忽略。必须启用xr/openxr/extensions/hand_tracking才能使用此设置。
int xr/openxr/form_factor = "0" 🔗
指定是否应为HMD或手持设备配置OpenXR。
bool xr/openxr/foveation_dynamic = false 🔗
如果true并且支持foveation,则会根据帧率自动将foveation级别调整到xr/openxr/foveation_level上设置的级别。
注意:仅适用于兼容性渲染方法。
int xr/openxr/foveation_level = "0" 🔗
如果支持,应用的中央凹水平:0=关闭,1=低,2=中等,3=高。
注意:仅适用于兼容性渲染方法。在Android以外的平台上,如果启用了rendering/anti_aliasing/quality/msaa_3d,此功能将被禁用。
int xr/openxr/reference_space = "1" 🔗
指定默认引用空间。
bool xr/openxr/startup_alert = true 🔗
如果true,当OpenXR初始化在启动时失败时,i3D将显示警报模式。
bool xr/openxr/submit_depth_buffer = false 🔗
如果true,OpenXR将管理深度缓冲区并使用深度缓冲区进行高级重投影,前提是XR运行时支持这一点。请注意,i3D中的某些渲染功能不能与此功能一起使用。
int xr/openxr/view_configuration = "1" 🔗
指定用于配置OpenXR设置单声道或立体声渲染的视图配置。
bool xr/shaders/enabled = false 🔗
如果true,i3D将编译XR所需的着色器。
方法说明¶
void add_property_info(hint: Dictionary) 🔗
向属性添加自定义属性信息。字典必须包含:
"name":String(属性的名称)"type":int(参见Variant.Type)
可选的 "hint":int(参见PropertyHint)和 "hint_string":String
ProjectSettings.set("category/property_name", 0)
var property_info = {
"name": "category/property_name",
"type": TYPE_INT,
"hint": PROPERTY_HINT_ENUM,
"hint_string": "one,two,three"
}
ProjectSettings.add_property_info(property_info)
ProjectSettings.Singleton.Set("category/property_name", 0);
var propertyInfo = new i3D.Collections.Dictionary
{
{"name", "category/propertyName"},
{"type", (int)Variant.Type.Int},
{"hint", (int)PropertyHint.Enum},
{"hint_string", "one,two,three"},
};
ProjectSettings.AddPropertyInfo(propertyInfo);
清除整个配置(不推荐,可能会损坏东西)。
Array[Dictionary] get_global_class_list() 🔗
返回已注册全局类的Array。每个全局类都表示为一个包含以下条目的Dictionary:
-base是基类的名称;
-class是注册的全局类的名称;
-icon是全局类的自定义图标的路径,如果有的话;
-语言是编写全局类的编程语言的名称;
-path是包含全局类的文件的路径。
注意:脚本和图标路径都是项目文件系统的本地路径,即它们以res://开头。
int get_order(name: String) const 🔗
返回配置值的顺序(保存到配置文件时会产生影响)。
Variant get_setting(name: String, default_value: Variant = null) const 🔗
返回由 name 标识的设置的值。如果该设置不存在且指定了 default_value,则返回 default_value 的值。否则,返回 null。
print(ProjectSettings.get_setting("application/config/name"))
print(ProjectSettings.get_setting("application/config/custom_description", "No description specified."))
S3.Print(ProjectSettings.GetSetting("application/config/name"));
S3.Print(ProjectSettings.GetSetting("application/config/custom_description", "No description specified."));
注意:此方法不会自动考虑潜在的功能覆盖。请使用get_setting_with_override()来无缝处理
Variant get_setting_with_override(name: StringName) const 🔗
与 get_setting() 类似,但如果存在任何有效的功能标记覆盖,则应用这些覆盖。
Example:如果设置覆盖 “application/config/name.windows” 存在,并且以下代码在 Windows 操作系统上执行,则会打印覆盖后的设置,而不是原始设置:
print(ProjectSettings.get_setting_with_override("application/config/name"))
S3.Print(ProjectSettings.GetSettingWithOverride("application/config/name"));
String globalize_path(path: String) const 🔗
返回与本地化的 path(以 res:// 或 user:// 开头)相对应的绝对原生操作系统路径。返回的路径将根据操作系统和用户偏好而有所不同。请参阅localize_path()。
注意: 在导出的项目中,使用 res:// 的 globalize_path() 将不起作用。相反,在从导出的项目运行时,将可执行文件的基本目录添加到路径的开头:
var path = ""
if OS.has_feature("editor"):
# Running from an editor binary.
# `path` will contain the absolute path to `hello.txt` located in the project root.
path = ProjectSettings.globalize_path("res://hello.txt")
else:
# Running from an exported project.
# `path` will contain the absolute path to `hello.txt` next to the executable.
# This is *not* identical to using `ProjectSettings.globalize_path()` with a `res://` path,
# but is close enough in spirit.
path = OS.get_executable_path().get_base_dir().path_join("hello.txt")
bool has_setting(name: String) const 🔗
如果存在配置值,则返回true。
bool load_resource_pack(pack: String, replace_files: bool = true, offset: int = 0) 🔗
将pack指定的. pck或.zip文件的内容加载到资源文件系统(res://)中。成功时返回true。
注意:如果pack中的文件与资源文件系统中的文件共享相同的路径,除非replace_files设置为false,否则任何加载该文件的尝试都将使用pack中的文件。
注意:可选的offset参数可用于指定到资源包开头的偏移量(以字节为单位)。这仅支持. pck文件。
注意:DirAccess调用此函数后不会显示对res://内容所做的更改。
String localize_path(path: String) const 🔗
返回与绝对本机OSpath对应的本地化路径(以res://开头)。另请参见globalize_path()。
将配置保存到project. i3d文件。
注意:此方法适用于编辑器插件,因为修改后的ProjectSettings无法在正在运行的应用程序中重新加载。如果要更改导出项目中的项目设置,请使用save_custom()保存overrid. cfg文件。
Error save_custom(file: String) 🔗
将配置保存到自定义文件。文件扩展名必须是. i3d(以基于文本的ConfigFile格式保存)或.二进制(以二进制格式保存)。您还可以保存override.cfg文件,该文件也是文本,但可以在导出的项目中使用,而不是其他格式。
void set_as_basic(name: String, basic: bool) 🔗
定义指定的设置是基本设置还是高级设置。基本设置将始终显示在项目设置中。只有当用户启用“高级设置”选项时,才会显示高级设置。
void set_as_internal(name: String, internal: bool) 🔗
定义指定的设置是否被视为内部设置。内部设置不会显示在项目设置对话框中。这对于需要存储自己的内部设置而不直接向用户公开的插件非常有用。
void set_initial_value(name: String, value: Variant) 🔗
设置指定设置的初始值。这是设置恢复到的值。
void set_order(name: String, position: int) 🔗
设置配置值的顺序(保存到配置文件时会产生影响)。
void set_restart_if_changed(name: String, restart: bool) 🔗
设置设置是否需要重新启动编辑器才能正确生效。
注意:这只是向用户显示必须重新启动编辑器才能使更改生效的提示。启用set_restart_if_changed()不会在更改时延迟正在设置的设置。
void set_setting(name: String, value: Variant) 🔗
设置某个设置项的值。
ProjectSettings.set_setting("application/config/name", "Example")
ProjectSettings.SetSetting("application/config/name", "Example");
这也可用于清除自定义项目设置。要做到这一点,将设置值更改为null