有一个 Linux 应用程序可以收集当前 GUI 会话中的活动:每次它都会截取屏幕截图并记下焦点窗口的名称(标题)...
有一个 Linux 应用程序会收集当前 GUI 会话中的活动:每次它都会截取一次屏幕截图并记下焦点窗口的名称(标题)以及启动此窗口的应用程序的名称。该应用程序的工作方式就像会话在 x11 中运行一样。现在我们需要添加对应用程序在 Ubuntu 22.04 上的 wayland 环境中运行的支持。
在 wayland 环境中截取屏幕截图 gnome dbus API ,但每次都会弹出一次“与请求应用程序共享此屏幕截图”窗口。 我尝试修复的问题: 此处的 屏幕截图方法, 这里 所述 。我读到过某处说,如果您使用此 API 而不是 (1),则不会弹出任何窗口。这不是真的吗?
获取应用程序的标题/名称 Eval ,但在 ubuntu 22.04 上,这仅在不安全模式下有效。 我尝试修复的内容: 这里 有一个不使用 Eval 获取应用程序标题/名称的示例,但它给出了错误,如 这里 。我还 发现 带有代码的示例可以正确确定应用程序的标题/名称,但并非适用于所有窗口。
总的来说,该应用程序应该能够在 ubuntu 22.04 wayland 上做两件事:
这能实现吗?
更新: 我在这里阅读 https://askubuntu.com/a/1437333/1102308 ,这些问题可以通过创建自己的 gnome shell 扩展来解决,并在此扩展中接收标题/应用程序名称并将其从扩展传递到我的应用程序。这是真的吗?
我是 Unity 和 C# 的新手。我遇到了一些问题。当我的角色使用“touchmove”移动时,我使用“武器”发射“projectilePrefab”。但是,当我实际触摸并移动角色时,我遇到了一些问题。
我是 Unity 和 C# 的新手。我遇到了一些问题。当我的角色使用“touchmove”移动时,我使用“武器”发射“projectilePrefab”。但是,当我实际触摸并移动角色时,我遇到了“projectilePrefab”发射速度过快的问题。请帮帮我吧
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Weapon : MonoBehaviour
{
[SerializeField]
private GameObject projectilePrefab;
[SerializeField]
private float attackRate = 0.5f;
public void StartFiring()
{
StartCoroutine("TryAttack");
}
public void StopFiring()
{
StopCoroutine("TryAttack");
}
private IEnumerator TryAttack()
{
while ( true)
{
Instantiate(projectilePrefab, transform.position, Quaternion.identity);
yield return new WaitForSeconds(attackRate);
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TouchMove : MonoBehaviour
{
private Vector3 touchPosition;
private Rigidbody2D rb;
private Vector3 direction;
private float moveSpeed = 10f;
private Weapon weapon;
private void Awake()
{
weapon = GetComponent<Weapon>();
}
private void Start()
{
rb = GetComponent<Rigidbody2D>();
}
private void Update()
{
if(Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
touchPosition = Camera.main.ScreenToWorldPoint(touch.position);
touchPosition.z = 0;
direction = (touchPosition - transform.position);
rb.velocity = new Vector2(direction.x, direction.y) * moveSpeed;
weapon.StartFiring();
if (touch.phase == TouchPhase.Ended)
rb.velocity = Vector2.zero;
weapon.StopFiring();
}
}
}
我想要确保 \'projectilePrefab\' 的发射速度以 0.5f 发射,这是我设置的发射速度。