Blog-Archive

Facepalm: Animierte .FBX-Modelle und der SkinnedEffect

Und wieder ist es mal die Zeit für eine Facepalm, nachdem ich mich nun ca. 2 Stunden mit Blender und dem SkinnedEffect von XNA 4.0 rumgeschlagen habe.

Es geht um ein Model, daß ich in Blender zunächst modelliert, dann gerigged und anschliessend geskinned habe. Eine Animation habe ich ebenfalls eingebaut und nun wollte ich dieses Modell exportieren und mit XNA 4.0 darstellen. Bewegt selbstverständlich. Dabei bin ich auf die eigenartigsten Effekte gekommen und wie immer bei einer Facepalm, kommt man natürlich oft nicht auf das naheligendste.
Lies den Rest dieses Beitrags

Facepalm: MSB3021 – Gesperrte Dateien in Visual Studio

Nach etlichen Jahren der Nutzung von Visual Studio bin ich jetzt tatsächlich auch in diese Falle getappt, allerdings erst mit Visual Studio 2010 Express. Der Fehler soll aber bereits immer wieder seit Visual Studio 2003 aufgetreten sein.

Zufällig – bei mir mittlerweile bei jedem Build – tritt folgender Fehler auf:

c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2868,9): error MSB3021: Die Datei „obj\x86\Debug\starLiGHT.GameStudio.exe“ kann nicht in „bin\Debug\starLiGHT.GameStudio.exe“ kopiert werden. Der Prozess kann nicht auf die Datei „bin\Debug\starLiGHT.GameStudio.exe“ zugreifen, da sie von einem anderen Prozess verwendet wird.

Beim ersten Build funktioniert es immer und ab dem zweiten Build kann das Programm nicht mehr gestartet werden, da Visual Studio mit oben genannter Fehlermeldung abbricht. Erst ein Neustart des Visual Studio führt dazu, daß man wieder testen kann. Dies ist natürlich extrem nervig und auch nicht wirklich produktiv.
Lies den Rest dieses Beitrags

Facepalm: Nicht alle Codepfade geben einen Wert zurück

In meiner neuen Rubrik Facepalm werde ich kurz und knackig kleine Tipps und Hilfen geben, die irgendwo gefragt wurden oder auf die ich gerade gestoßen bin. Eine Facepalm ist die Geste, die man macht, wenn man die Hand vor’s Gesicht schlägt wenn man sagt „Warum bin ich da nicht selbst drauf gekommen?“.

Die Artikel dieser Rubrik werden sehr kurz sein, denn es handelt sich schliesslich um einfache Probleme 🙂

In diesem ersten Beitrag geht es um die Fehlermeldung „Nicht alle Codepfade geben einen Wert zurück“, die z.B. in folgender Methode vom Compiler geworfen wird:

public int SinnDesLebens(bool provoziereFehler)
{
  if (provoziereFehler == false)
  {
    return 42;
  }
}

Der Grund für diesen Fehler ist sehr einfach: Ein Rückgabewert in einer C#-Funktion ist nicht optional, sondern es muss in jedem Fall ein Wert zurückgegeben werden. Im obigen Beispiel wird aber kein Wert zurückgegeben, wenn provoziereFehler den Wert true enthält.

Beheben kann man diesen Fehler ganz einfach, in dem man entweder im Else-Zweig oder nach der If-Abfrage einen Wert zurückgibt, z.B. eine -1 um ein Problem anzuzeigen.

public int SinnDesLebens(bool provoziereFehler)
{
  if (provoziereFehler == false)
  {
    return 42;
  }

  return -1;
}
%d Bloggern gefällt das: