ClickDetector
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
ClickDetector cho phép Scripts và LocalScripts để nhận được đầu vào điểm trên 3D qua sự kiện của họ MouseClick .Chúng hoạt động khi được cha mẹ hóa sang BasePart , Model , hoặc Folder đối tượng.Chúng phát hiện các sự kiện chuột cơ bản: nhập, rời khỏi, nhấp chuột trái và nhấp chuột phải.Nhập chạm vào trên TouchEnabled các thiết bị cũng kích hoạt sự kiện nhấp.
Các kịch bản điều khiển mặc định gắn ButtonR2 vào tương tác với ClickDetectors bằng ContextActionService:BindActivate(), cũng có thể được sử dụng để thay thế điều này.Khi sử dụng gamepad, điểm trung tâm kích hoạt MouseHoverEnter và MouseHoverLeave .Nút kích hoạt gắn bắn ra MouseClick .
MaxActivationDistance có thể được sử dụng để giới hạn khoảng cách mà một người chơi có thể ở từ một máy dò nhấp trước khi nó không còn có thể nhấp vào.
ClickDetector sự kiện bắt lửa trên cả khách và máy chủ.Vì một LocalScript sẽ chỉ chạy nếu nó xuất phát từ một Player hoặc người chơi Character, thường không hữu ích để đặt một LocalScript bên trong một ClickDetector, vì kịch bản sẽ không chạy hoặc đối tượng sẽ không thể nhấp vào.Nếu bạn cần một LocalScript để phát hiện sự kiện ClickDetector , StarterPlayerScripts có thể là một nơi tốt hơn thay thế.
Ưu tiên nhập
Nếu nhiều ClickDetectors có thể phát hiện nhập력 của người dùng, chỉ có sâu nhất sẽ kích hoạt sự kiện. Nếu hai ClickDetectors là anh em, người đầu tiên sẽ được ưu tiên.
Nếu một hành động gắn với ContextActionService sử dụng cùng một đầu vào như một ClickDetector , hành động gắn với ContextActionService sẽ có ưu tiên hơn các sự kiện của máy phát hiện nhấp chuột.
UserInputService.InputBegan sẽ bắn trước khi sự kiện ClickDetector xảy ra.
Mẫu mã
Đặt mã này vào bên trong Script bên trong ClickDetector .Ví dụ mã tạo ra một tham chiếu đến cha và xác định một chức năng để hiển thị một thông điệp chào mừng một người chơi.Cuối cùng, nó kết nối sự kiện MouseClick với chức năng được xác định.
local clickDetector = script.Parent
local function onClicked(player)
-- Hiển thị một thông điệp cho người chơi
local msg = Instance.new("Message")
msg.Parent = player:FindFirstChild("PlayerGui")
msg.Text = "Hello, " .. player.Name
wait(2.5)
msg:Destroy()
end
-- Kết nối chức năng với sự kiện MouseClick
clickDetector.MouseClick:Connect(onClicked)
This code sample will allow a part to be clicked to toggle its anchored property. When toggled, the visual appearance of the part is updated (red means anchored, yellow means free).
local part = script.Parent
-- Create a ClickDetector so we can tell when the part is clicked
local cd = Instance.new("ClickDetector", part)
-- This function updates how the part looks based on its Anchored state
local function updateVisuals()
if part.Anchored then
-- When the part is anchored...
part.BrickColor = BrickColor.new("Bright red")
part.Material = Enum.Material.DiamondPlate
else
-- When the part is unanchored...
part.BrickColor = BrickColor.new("Bright yellow")
part.Material = Enum.Material.Wood
end
end
local function onToggle()
-- Toggle the anchored property
part.Anchored = not part.Anchored
-- Update visual state of the brick
updateVisuals()
end
-- Update, then start listening for clicks
updateVisuals()
cd.MouseClick:Connect(onToggle)
Tóm Tắt
Thuộc Tính
Đặt biểu tượng con trỏ để hiển thị khi chuột được giữ trên cha của ClickDetector hoặc DragDetector này.
Khoảng cách tối đa giữa một nhân vật và ClickDetector hoặc DragDetector để người chơi có thể tương tác với nó.
Sự Kiện
Bắt lửa khi một người chơi tương tác với cha của ClickDetector hoặc DragDetector .
Bắt lửa khi cha của một ClickDetector hoặc DragDetector bị chọn bởi một người chơi.
Bắt lửa khi con trỏ của người chơi lướt khỏi cha của ClickDetector hoặc DragDetector .
Bắt lửa khi một người chơi nhấp chuột phải vào con trỏ chuột của họ trên một ClickDetector hoặc DragDetector .
Thuộc Tính
CursorIcon
Đặt biểu tượng con trỏ để hiển thị khi chuột được giữ trên cha của ClickDetector hoặc DragDetector này.Nếu thuộc tính này được để trống, máy dò sẽ sử dụng biểu tượng mặc định.
Để thay đổi biểu tượng con trỏ, hãy đặt thuộc tính này thành ID tài sản của hình ảnh bạn muốn sử dụng.
MaxActivationDistance
Tính năng này kiểm soát khoảng cách tối đa, bằng đơn vị stud, giữa một Character và ClickDetector hoặc DragDetector để người chơi có thể tương tác với nó.Ví ví dụ / trường hợp, một nhân vật trong 10 đinh tán của một ClickDetector hoặc DragDetector với khoảng cách kích hoạt tối đa là 5 sẽ không thể sử dụng cảm biến vì chúng nằm ngoài phạm vi.
Phương Pháp
Sự Kiện
MouseClick
Sự kiện này bắt lửa từ một Script hoặc LocalScript khi một người chơi tương tác với một ClickDetector hoặc DragDetector thông qua các đầu vào sau:
- Trên các nền tảng có chuột, khi người chơi rời khỏi các lần nhấp chuột.
- Trên TouchEnabled các nền tảng, khi người chơi nhấn.
- Trên các nền tảng GamepadEnabled , khi điểm trung tâm nằm trên cùng một mô hình và nút A được nhấn và thả.
Lưu ý rằng Character của người chơi phải nằm trong MaxActivationDistance của máy dò.
Tham Số
Người Player đã nhấp vào cha của một ClickDetector hoặc DragDetector .
MouseHoverEnter
Sự kiện này bắt lửa từ một Script hoặc LocalScript khi cha của một ClickDetector hoặc DragDetector bị chọn bởi một người chơi.Điều này không liên quan đến sự tương tác rõ ràng với cảm biến, mà bạn có thể lắng nghe các sự kiện MouseClick và RightMouseClick .
Do bản chất của đầu vào người dùng, bạn không nên phụ thuộc vào tất cả các sự kiện MouseHoverEnter được kích hoạt tương ứng với sự kiện MouseHoverLeave .
Tham Số
Người Player bắt đầu lượn trên cha của một ClickDetector hoặc DragDetector .
Mẫu mã
Mã sau đây sẽ in "[Tên người chơi] đã lượn qua cha của tôi!" khi con trỏ của một người chơi lượn qua cha của ClickDetector .Nó cũng sẽ in "[Tên người chơi] đã di chuyển khỏi cha mẹ của tôi!" khi con trỏ của người chơi di chuyển khỏi cha mẹ ClickDetector .
Để ví dụ này hoạt động như mong đợi, nó phải được đặt trong một Script hoặc LocalScript có cha là ClickDetector .
local clickDetector = script.Parent:FindFirstChildOfClass("ClickDetector")
clickDetector.MouseHoverEnter:Connect(function(player)
print(player.Name .. " hovered over my parent!")
end)
clickDetector.MouseHoverLeave:Connect(function(player)
print(player.Name .. " hovered off my parent!")
end)
MouseHoverLeave
Sự kiện này bắt lửa từ một Script hoặc LocalScript khi con trỏ của người chơi lướt khỏi cha của một ClickDetector hoặc DragDetector .Điều này không liên quan đến sự tương tác rõ ràng với cảm biến, mà bạn có thể lắng nghe các sự kiện MouseClick và RightMouseClick .
Do bản chất của đầu vào người dùng, bạn không nên phụ thuộc vào tất cả các sự kiện MouseHoverLeave sau một sự kiện tương ứng MouseHoverEnter.
Tham Số
Các thành phần Player có con trỏ di chuyển ra khỏi cha của một ClickDetector hoặc DragDetector .
Mẫu mã
Mã sau đây sẽ in "[Tên người chơi] đã lượn qua cha của tôi!" khi con trỏ của một người chơi lượn qua cha của ClickDetector .Nó cũng sẽ in "[Tên người chơi] đã di chuyển khỏi cha mẹ của tôi!" khi con trỏ của người chơi di chuyển khỏi cha mẹ ClickDetector .
Để ví dụ này hoạt động như mong đợi, nó phải được đặt trong một Script hoặc LocalScript có cha là ClickDetector .
local clickDetector = script.Parent:FindFirstChildOfClass("ClickDetector")
clickDetector.MouseHoverEnter:Connect(function(player)
print(player.Name .. " hovered over my parent!")
end)
clickDetector.MouseHoverLeave:Connect(function(player)
print(player.Name .. " hovered off my parent!")
end)
RightMouseClick
Sự kiện này bắt lửa từ một Script hoặc LocalScript khi một người chơi nhấp chuột phải vào con trỏ của họ trên một ClickDetector hoặc DragDetector .Lưu ý rằng Character của người chơi phải nằm trong MaxActivationDistance của máy dò.
Tham Số
Người Player ai đã nhấp chuột phải vào con trỏ chuột của họ trên cha của một ClickDetector hoặc DragDetector .