```maxscript -- 定义需要查找的名称列表 local targetNames = #( "pelvis", "spine_0", "spine_3", "neck_0", "head_0", "clavicle_R", "arm_upper_R", "arm_lower_R", "hand_R", "weapon_hand_R", "clavicle_L", "arm_upper_L", "arm_lower_L", "hand_L", "weapon_hand_L", "leg_upper_R", "leg_lower_R", "ankle_R", "ball_R", "leg_upper_L", "leg_lower_L", "ankle_L", "ball_L", "finger_thumb_0_R", "finger_thumb_1_R", "finger_thumb_2_R", "finger_index_0_R", "finger_index_1_R", "finger_index_2_R", "finger_middle_0_R", "finger_middle_1_R", "finger_middle_2_R", "finger_ring_0_R", "finger_ring_1_R", "finger_ring_2_R", "finger_pinky_0_R", "finger_pinky_1_R", "finger_pinky_2_R", "finger_thumb_0_L", "finger_thumb_1_L", "finger_thumb_2_L", "finger_index_0_L", "finger_index_1_L", "finger_index_2_L", "finger_middle_0_L", "finger_middle_1_L", "finger_middle_2_L", "finger_ring_0_L", "finger_ring_1_L", "finger_ring_2_L", "finger_pinky_0_L", "finger_pinky_1_L", "finger_pinky_2_L" ) -- 清空当前选择 clearSelection() -- 遍历场景中的所有物体 for obj in objects do ( -- 遍历目标名称列表 for targetName in targetNames do ( -- 检查物体名称是否包含目标名称 if matchPattern obj.name pattern:("*" + targetName + "*") do ( -- 如果包含,则选中该物体 selectMore obj -- 跳出内层循环,继续检查下一个物体 exit ) ) ) ``` 额外需要注意的逻辑点 1. `matchPattern` 函数使用通配符 `*` 来匹配包含目标名称的物体名称,这意味着即使物体名称前后有其他字符,只要包含目标名称就会被选中。如果需要精确匹配,可以去掉通配符。 2. 在使用 `selectMore` 函数时,它会在已有选择的基础上继续添加物体到选择集。如果在开始前没有清空选择集,可能会导致结果包含之前已经选择的物体。 3. 代码假设场景中的物体名称不会出现复杂的命名冲突,例如名称包含多个目标名称的情况。如果出现这种情况,可能需要更复杂的逻辑来处理。 [2025-06-01 03:25:41 | AI写代码神器 | 679点数解答]