小编Ale*_*ble的帖子

Unity3D - 抽象类,单一行为功能

前言

因此,过去几周我一直在 Unity Answers 论坛上讨论这个问题,但没有得到任何答复。在我看来,这将是一个相对直接的问题,所以我想知道这里是否有人可以帮助我代替那里的答案。

所以我有点进退两难。


目标

我想在我的游戏中为枪支使用继承结构。我想创建一个抽象类 (Gun),然后继承它的 Gun (Laser、Rifle、RocketLauncher) 的子类,然后创建这些武器的特定实例。目前我将它作为一个抽象类来做,因为 Gun 的不同子类实现 Shoot() 函数的方式存在很大差异。(即火箭发射器将实例化 X 火箭游戏对象,而激光可能会使用光线投射来确定即时命中)。

此外,我希望能够在玩家库存中有一个枪支列表,并且不想根据他们的活跃武器从我的玩家中添加和删除脚本。如果我可以按以下方式构建它们,那对我来说很好:

Rifle ActiveWeapon = new Rifle(parameters);
Run Code Online (Sandbox Code Playgroud)

我也不想为玩家提供有限数量的武器,但希望能够在运行时生成它们(例如作为掉落或制作),所以我也不想编写固定数量的武器脚本。


问题

我遇到的问题是我希望能够利用一些从 MonoBehaviours 派生的方法,例如:

public override void Shoot ()
 {
     if (CanShoot) 
     {
         StartCoroutine(Cooldown());
         Rigidbody bullet = Rigidbody.Instantiate(BulletPrefab, transform.position, transform.rotation);
         ... // Addforce etc.
         ...
     }
 }
public IEnumerator Cooldown()
 {
     CanShoot = false;
     yield return new WaitForSeconds (FireRate);
     CanShoot = true;
 }
Run Code Online (Sandbox Code Playgroud)

显然,因为这不是 MonoBehaviour 类,所以我不能使用诸如 Instantiate 之类的函数来创建项目符号或使用 WaitForSeconds 来错开它们。

我应该如何解决这个问题?

c# inheritance unity-game-engine

6
推荐指数
1
解决办法
1万
查看次数

PHP使用标题下载图像

总的来说,我真的是php和web编码的新手。我正在尝试提供通过php下载的图片。我需要什么其他代码才能实现此目的?我已经尝试过使用Google搜索,并在此处进行搜索,尽管我知道之前已经有人问过这个问题,但阅读答案却使我的经验不足。如果有人可以帮助我或指出正确的方向,将不胜感激!

public function ExportUserImage()
    {
        $image = $this->user->image;

        header("Content-type: image/jpeg");  
        header("Cache-Control: no-store, no-cache");  
        header('Content-Disposition: attachment; filename="avatar.jpg"');
        $outstream = fopen($image,'w'); // Not sure if this is right 
        //>>don't know what I need here<<
        fclose($outstream);

    }
Run Code Online (Sandbox Code Playgroud)

php jpeg header download

4
推荐指数
1
解决办法
5499
查看次数

Chart.js纵横比/强制高度

我正在尝试使用chart.js来创建缩略图,这些缩略图将链接到包含完整图表的页面.链接页面上的完整图表看起来不错,但对于缩略图我无法正确调整大小.画布覆盖右侧区域,但图形不会垂直填充.

在此输入图像描述

var data = {
    labels: ['','','','','','','','','',''],
    datasets: [{
        data:[22,25,23,24,25,22,25,23,24,25],
            backgroundColor: "rgba(54, 255, 170, 0.4)",
            borderColor: "rgba(54, 255, 170, 1)",
            orderWidth: 1,
    }]
};
var options = {
    tooltips: false,
    legend: {
        display:false
    },
    scales: {
        yAxes: [{
            display:false,
            ticks: {
                beginAtZero:true
            }
        }],
        xAxes: [{
            gridLines: {
                color: "rgba(0, 0, 0, 0)",
            }
        }]
    }
};

new Chart($("#chart-"+this.model.id), {
    type: 'bar',
    data: data,
    options: options        
});
Run Code Online (Sandbox Code Playgroud)

我已经尝试过调整画布的最小高度,但这会导致条纹模糊.有什么方法可以调整条的高度占据整个画布?

height canvas chart.js

2
推荐指数
2
解决办法
7607
查看次数

比较两个列表并删除相同的结果c#

我有两个清单:

List<int> positionsThatCannotBeMovedTo =...
List<int> desiredLocations =...
Run Code Online (Sandbox Code Playgroud)

我试图删除所有无法移动到所需位置的位置以创建安全位置列表:

List<int> safePositions = new List<int>(uniquePositions);
safePositions.RemoveAll(positionsThatCannotBeMovedTo);
Run Code Online (Sandbox Code Playgroud)

然而它抛出了错误:

"Argument1:无法从'System.Collections.Generic.List'转换为'System.Predicate'

我不完全确定这意味着什么,或者我如何滥用这个功能.有人能帮我解释一下吗?我这样做是因为这个问题的答案:

比较两个列表以进行更新,删除和添加

c# comparison list

1
推荐指数
1
解决办法
70
查看次数